我有一个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脚本在做什么?显示它或至少详细解释你想要做什么以及为什么这么多文件! –