题
我正在研究一个需要存储大量文档(PDF,Word Files等)的系统文件,以便可以由用户打开/下载。
我在考虑几种可能性:
- 文件系统 - 存储1M文档可能不是那么好主意
- SQL数据库 - 但是我不需要大部分的关系功能,因为我只需要存储二进制文档及其ID,因此这可能不是最快的解决方案
- 无SQL数据库 - 对它们没有任何调查,所以我不确定它们是否还不错,也有很多,所以我不知道要选择哪一个
我要寻找的存储应该是:
- 快速地
- 可畏惧
- 开源(不是至关重要的,但很不错)
您能推荐您认为存储这些文件的最佳方法是什么?
解决方案
该文件系统(如名称所建议的)设计和优化,可高效且可扩展的方式存储大量文件。
其他提示
您可以关注Facebook,因为它存储了很多文件(150亿张照片):
- 他们最初从商业存储设备提供的NFS共享开始。
- 然后他们搬到了ONW实现HTTP文件服务器,称为Haystack
如果您想了解更多信息,这是Facebook注释 http://www.facebook.com/note.php?note_id=76191543919
关于NFS分享。请记住,出于性能原因,NFS共享通常将文件限制在一个文件夹中。 (如果您假设所有最近的文件系统都使用B树来存储其结构,则可能有点直观。)因此,如果您使用(NetApp)之类的商业NFS共享,则可能需要将文件保存在多个文件夹中。
如果您对文件有任何形式的ID,则可以执行此操作。只需将其分为ASCII表示,将其分为几个字符的组,然后为每个组制作文件夹即可。例如,我们将整数用于IDS,因此将具有ID 1234567891的文件存储为存储/0012/3456/7891。
希望有帮助。
在我看来...
我会将文件压缩到磁盘(文件系统)上,并使用数据库来跟踪它们。
如果这是唯一的工作,则可以使用sqlite。
文件系统:在考虑大图时,DBM再次使用文件系统。并且文件系统专用于保存文件,因此您可以看到优化(如卢克(Lukeh)提到)
不隶属于 StackOverflow