您可能出于以下几个原因想要查看数据库(不一定是 MySQL)而不是文件系统来处理这类事情:
一个目录中的更多文件会减慢速度
尽管 XFS 在分配资源方面应该非常聪明,但大多数文件系统的性能会随着单个目录中的文件越多而降低。在命令行上处理它们也变得很头疼。看看这个(http://oss.sgi.com/projects/xfs/datasheet.pdf)有一个关于查找的图表,每个目录最多只能达到 50k,而且它正在下降。
高架
每个文件都有一定数量的文件系统开销。如果您有很多小文件,您可能会发现最终存储因此而膨胀。
钥匙清洁
您的所有单词都可以安全地放入文件名吗?你确定吗?那里的一两个斜线真的会毁了你的一天。
NoSQL 可能是一个不错的选择
像 MongoDB/Redis 这样的东西可能是一个不错的选择。MongoDB 可以存储高达 16mb 的单个文档,并且在文件系统上放置东西并不难使用。如果您要存储 15mb 的文档,那么您可能会因为该限制太接近而无法舒适,但还有其他选择。
这样做的好处是,查找性能很可能一开始就非常好,如果你后来发现它不是,你可以通过创建集群等来扩展性能。任何像这样的系统也会做得很好智能管理磁盘上的文件以获得良好的性能。
如果你要使用磁盘
考虑获取您要存储的单词的 MD5 哈希,并以此为基础您的文件名。例如 MD5azpdk
为:
1c58fb66d5a4d6a1ebe5ec9e217fbbf9
您可以使用它来创建文件名,例如:
my_directory/1c5/8fb/66d5a4d6a1ebe5ec9e217fbbf9
这有一些不错的功能:
- 哈希处理可怕的角色
- 目录分散了数据,所以没有目录有超过 4096 个条目
- 这意味着查找性能应该相对不错
希望有帮助。