我有一个Perl脚本,在1kB - 10kB大小的区域内产生~10000个文件,这对于性能来说不是最佳的,所以我虽然使用MongoDB而不是编写许多文件。我需要在我的笔记本电脑Linux和OSX上运行脚本。
问题
MongoDB会过度杀伤吗?或者有更适合这种本地文件存储的东西吗?
答案 0 :(得分:3)
某些文件系统比其他文件系统更好地处理数十万个小文件。据传闻,BTRFS或ReiserFS曾经比Ext3或Ext4更好。您可以在制作文件系统时设置块大小(可能为1Kbyte)。
你可以使用10K文件,但将它们放在100个目录中可能会更容易,即有dir01/file000.txt dir01/file999.txt dir02/file000.txt
... dir02/file999.txt
.... dir99/
....
它至少更加人性化 - 所以ls
给出了合理的输出 - 并且在一些旧的文件系统上可能更有效。
MongoDB,如MariaDb(或 MySQL )或PostgreSQL是数据库服务器,因此您需要拥有服务器运行(可能只在localhost
上)并且唯一的客户端服务器连接有一些成本。
您还可以考虑GDBM,它是提供索引文件的库。
您还可以考虑Sqlite,它也是提供Sql数据库的库。
最后,每个10K字节的10K文件只有100M字节。这很容易适合内存或单个文件......
并且保持每个1到10K字节的10K文件可以具有优势,例如如果内容是文本的:grep
或awk
等标准工具可以很好地运用它们。
这实际上取决于你的申请。