3

我正在开发一个需要存储大量文档(PDF、Word 文件等)的系统。我正在使用 Solr/Lucene 搜索从这些文档中提取的相关信息,但我还需要一个存储原始文件的地方文件,以便用户可以打开/下载它们。

我在想几种可能:

  • 文件系统 - 存储 1m 文件可能不是个好主意
  • sql 数据库 - 但我不需要它的大部分关系功能,因为我只需要存储二进制文档及其 id,所以这可能不是最快的解决方案
  • no-sql 数据库 - 对它们没有任何经验,所以我也不确定它们是否好用,它们中也有很多,所以我不知道该选择哪一个

我正在寻找的存储应该是:

  • 快速地
  • 可扩展的
  • 开源(不重要但很高兴拥有)

您能否推荐您认为存储这些文件的最佳方式是什么?

4

4 回答 4

5

顾名思义,文件系统经过设计和优化,可以高效且可扩展的方式存储大量文件。

于 2010-10-19T10:21:26.760 回答
1

您可以关注 Facebook,因为它存储了大量文件(150 亿张照片):

  • 他们最初是从商业存储设备提供的 NFS 共享开始的。
  • 然后他们转移到他们的 onw 实现 http 文件服务器,称为 Haystack

如果您想了解更多信息,请参阅 Facebook 说明http://www.facebook.com/note.php?note_id=76191543919

关于 NFS 共享。请记住,出于性能原因,NFS 共享通常会限制一个文件夹中的文件数量。(如果您假设所有最近的文件系统都使用 b 树来存储其结构,这可能有点违反直觉。)因此,如果您使用的是商业 NFS 共享,例如 (NetApp),您可能需要将文件保存在多个文件夹中。

如果您的文件有任何类型的 id,则可以这样做。只需将其 Ascii 表示分成几个字符组并为每个组创建文件夹。例如,我们使用整数作为 id,因此 id 为 1234567891 的文件存储为 storage/0012/3456/7891。

希望有帮助。

于 2010-11-25T14:27:29.093 回答
0

在我看来...

我会将压缩文件存储到磁盘(文件系统)上并使用数据库来跟踪它们。

如果这是它唯一的工作,可能会使用 Sqlite。

于 2010-10-19T10:24:43.733 回答
0

文件系统:在考虑大局时,DBMS 再次使用文件系统。并且文件系统专门用于保存文件,因此您可以看到优化(如 LukeH 所述)

于 2010-10-19T10:24:57.773 回答