在文件系统上混合使用RDBMS和文件的最佳实践

时间:2011-11-01 07:37:05

标签: database database-design filesystems schema rdbms

在我正在开发的架构中的一个表中,我需要处理几千个“数据表”,这些数据表主要是PDF文档,有时是PNG,JPG等图形图像文件。模拟电子分销商的门户网站,新产品经常被添加到他们的产品组合中。

在推出新产品时添加了这些文件(数据表),但是他们需要不时更新(由于文件的新版本而不是产品本身而导致的sa),所以我' d认为更新是异步过程。

鉴于此,我应该只保留表格中数据表(和类似文档)的文件名/路径,实际文件位于文件系统上,还是应该采用blob方法。我几乎可以肯定它应该是以前的方法,但仍然想采取社区建议,看看是否有一些陷阱值得关注。

1 个答案:

答案 0 :(得分:1)

为了完整起见,我要提一下,有些数据库允许您对这两种方法进行“混合”,例如Oracle BFILEMS SQL Server FILESTREAM

Ask Tom在storing files in Oracle BLOBs上也有一个有趣的讨论(简而言之:“BLOB优于文件”)。


顺便说一句,你不一定需要选择一个而不是另一个...... 如果你可以承受存储开销并且你在一个大多数读取环境中操作,你可以存储“主” BLOB中的数据用于完整性,但“缓存”文件中的相同数据以进行快速只读访问。一些注意事项:

  • 如果更新/删除BLOB,您需要确保更新/删除文件。
  • 考虑按需创建/更新文件。
  • 考虑从“缓存”中删除旧文件,即使相应的BLOB仍然存在。
  • 考虑使用多个“缓存”(例如,如果您有中间层并分发到多个物理机,则每台计算机都可以拥有自己的文件缓存)。
  • 最后,您需要确保所有这些在并发环境中运行良好。

因此,这不是最简单的方法,但根据您的需要,可能在完整性,性能和实施工作之间进行良好的权衡。