0

我想开发一个开源库,用于快速高效的文件存储(在一个大文件和索引文件下),如 NFileStorage。我为什么要这样做?
答:在我的工作范围内,需要类似的东西。
B. 我们的 DBA 说在 DB 下存储文件效率不高。
C. 这对我来说是个好习惯。

我正在寻找一篇关于文件索引的好文章,你能推荐一篇吗?

你的总体想法是什么?

4

2 回答 2

2

将文件存储在数据库中可能效率不高,但是像 SQL Server 这样的数据库具有 FileStreams 的概念,它实际上将文件存储在本地文件系统中,而不是将其放置在数据库文件本身中。

在我看来,这对于一个项目来说是个坏主意。

您将遇到与数据库完全相同的问题,将所有上传的文件存储在同一个文件中......这就是为什么它们中的一些已经远离二进制/大型对象而是支持替代方法的原因。

您必须处理的一些问题包括:

  1. 为您的支持文件分配额外的磁盘空间来存储新上传的文档。
  2. 从您的存储中永久删除“文件”并调整/压缩备份文件。
  3. 多用户访问/锁定。
  4. 故障恢复。例如,当您在驱动器上遇到坏块并且它会占用您的支持文件时。
  5. 交易支持。

第 1 项和第 2 项导致将“文件”写入数据存储所需的时间增加。网络文件系统已经支持第 3、4 和 5 项,因此您只是在重新创建轮子。

简而言之,您将不得不编写自己的文件系统或编写自己的 DBMS。对于 99% 的现实世界应用程序,我都不会认为这是“良好实践”。如果您的目标是为希捷工作,这可能是值得的。但即便如此,他们也可能会觉得您很有趣。

如果您真的对最有效的文件存储方法感兴趣,那么购买一个 SAN 阵列并将您的文件推送到其中,同时保留指向数据库中文件/位置的指针是非常简单的。易于备份,快速存储文件,比花费开发人员时间试图弄清楚如何编写自己的文件系统要便宜得多,而且未来的开发人员肯定 100% 支持和理解。

于 2011-09-15T18:40:29.040 回答
0

这种产品已经存在。你应该阅读 Mongo Db (http://www.mongodb.org/display/DOCS/Home)

于 2011-09-15T18:39:49.873 回答