2014-03-18 46 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这样的标准工具可以很好地工作。

这确实取决于您的应用程序。