Saya baru saja menambahkan fitur pencarian prediktif (lihat contoh di bawah) ke situs saya yang berjalan di Server Ubuntu. Ini berjalan langsung dari database. Saya ingin menyimpan hasil untuk setiap pencarian dan menggunakannya jika ada, kalau tidak buatlah.
Apakah akan ada masalah dengan saya menyimpan potensi cira 10 juta hasil dalam file terpisah dalam satu direktori? Atau apakah disarankan untuk membaginya ke dalam folder?
Contoh:
os.listdir
di python ditolak mentah-mentah karena alasan ini.Jawaban:
Iya. Mungkin ada lebih banyak alasan, tetapi ini saya dapat posting dari atas kepala saya:
tune2fs
memiliki opsi yang disebutdir_index
yang cenderung dihidupkan secara default (pada Ubuntu itu) yang memungkinkan Anda menyimpan kira-kira 100 ribu file dalam direktori sebelum Anda melihat hit kinerja. Itu bahkan tidak dekat dengan file 10m yang sedang Anda pikirkan.ext
filesystem memiliki jumlah inode yang tetap maksimum. Setiap file dan direktori menggunakan 1 inode. Gunakandf -i
untuk tampilan partisi dan inode Anda secara gratis. Ketika Anda kehabisan inode Anda tidak dapat membuat file atau folder baru.perintah suka
rm
danls
ketika menggunakan wildcard memperluas perintah dan akan berakhir dengan "daftar argumen terlalu panjang". Anda harus menggunakanfind
untuk menghapus atau membuat daftar file. Danfind
cenderung lambat.Iya. Paling pasti. Pada dasarnya Anda bahkan tidak dapat menyimpan file 10m dalam 1 direktori.
Saya akan menggunakan database. Jika Anda ingin men-cache-nya untuk situs web, lihat " solr " ("menyediakan pengindeksan, replikasi, dan kueri load-seimbang").
sumber
Berakhir dengan masalah yang sama. Jalankan tolok ukur saya sendiri untuk mengetahui apakah Anda dapat meletakkan semuanya di folder yang sama dengan memiliki beberapa folder. Tampaknya Anda bisa dan lebih cepat!
Ref: https://medium.com/@hartator/benchmark-deep-directory-structure-vs-flat-directory-structure-to-store-millions-of-files-on-ext4-cac1000ca28
sumber
Pencarian biner dapat dengan mudah menangani jutaan catatan sehingga pencarian direktori tunggal tidak akan menjadi masalah. Ini akan dilakukan dengan sangat cepat.
Pada dasarnya jika Anda menggunakan sistem 32 bit, pencarian biner hingga catatan 2Gb mudah dan baik.
Berekely DB, sebuah perangkat lunak sumber terbuka, siap memungkinkan Anda untuk menyimpan hasil lengkap di bawah satu entri dan akan memiliki pencarian bawaan.
sumber