我有一個Perl腳本,在1kB - 10kB大小的區域中生成〜10000個文件,這對性能並不是最佳的,所以我儘量使用MongoDB而不是寫許多文件。我需要在我的筆記本電腦Linux和OSX上運行腳本。替代寫入許多文件。 MongoDB的?
問題
將MongoDB的是矯枉過正?還是有更適合這種本地文件存儲的東西?
我有一個Perl腳本,在1kB - 10kB大小的區域中生成〜10000個文件,這對性能並不是最佳的,所以我儘量使用MongoDB而不是寫許多文件。我需要在我的筆記本電腦Linux和OSX上運行腳本。替代寫入許多文件。 MongoDB的?
問題
將MongoDB的是矯枉過正?還是有更適合這種本地文件存儲的東西?
有些文件系統比其他文件系統更勝於處理數十個小文件。據傳言,BTRFS或ReiserFS曾經比Ext3或Ext4更好。在製作文件系統時,您可以設置塊大小(可能爲1K字節)。
你可以留在10K文件,但它可能會更容易把他們在百個目錄中,即有dir01/file000.txt dir01/file999.txt dir02/file000.txt
... dir02/file999.txt
.... dir99/
....
這至少是更加人性化友好的-so ls
給出了合理的輸出,並且在某些舊的文件系統上可能更有效率。
MongoDB,如MariaDb(或MySQL的)或PostgreSQL是數據庫服務器,所以你需要有運行的服務器(也許只是localhost
)和唯一的客戶端服務器連接有一定的成本。
你也可以考慮GDBM,這是一個庫提供索引文件。
你也可以考慮Sqlite,這也是一個庫提供一個Sql數據庫。
最後,每個10K字節的10K文件只有100M字節。這可以很容易地在內存或單個文件中...
並且保持每個1到10K字節的10K文件可以具有優點,例如,如果內容爲文本:像grep
或awk
這樣的標準工具可以很好地工作。
這確實取決於您的應用程序。
處理10,000個文件時遇到什麼問題?你打算如何使用這些文件中的數據? – friedo
你的Perl腳本在做什麼?顯示它或至少詳細解釋你想要做什麼以及爲什麼這麼多文件! –