2014-03-18 45 views
-1

我有一個Perl腳本,在1kB - 10kB大小的區域中生成〜10000個文件,這對性能並不是最佳的,所以我儘量使用MongoDB而不是寫許多文件。我需要在我的筆記本電腦Linux和OSX上運行腳本。替代寫入許多文件。 MongoDB的?

問題

將MongoDB的是矯枉過正?還是有更適合這種本地文件存儲的東西?

+0

處理10,000個文件時遇到什麼問題?你打算如何使用這些文件中的數據? – friedo

+0

你的Perl腳本在做什麼?顯示它或至少詳細解釋你想要做什麼以及爲什麼這麼多文件! –

回答

3

有些文件系統比其他文件系統更勝於處理數十個小文件。據傳言,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文件可以具有優點,例如,如果內容爲文本:像grepawk這樣的標準工具可以很好地工作。

這確實取決於您的應用程序。