【问题标题】:Best practices for mixed usage of RDBMS and files on filesystem混合使用 RDBMS 和文件系统上的文件的最佳实践
【发布时间】:2011-12-19 07:17:33
【问题描述】:

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

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

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

【问题讨论】:

  • 感谢@EugeneMayevski'EldoSCorp。那确实回答了我的问题。我想知道,我现在该如何结束这个问题。
  • 要么删除它,要么等到其他人(另外 4 人)投票关闭它。
  • 看不到删除此问题的明显方法。除非它违反 SO 政策,否则我宁愿保留这个问题。有时问题的措辞不同,有助于其他人在搜索结果中获得更好的运气。

标签: database database-design filesystems schema rdbms


【解决方案1】:

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

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


顺便说一句,您不一定需要选择一个... 如果您可以负担存储开销并且您在以读取为主的环境中运行,您可以存储“主” BLOB 中的数据以确保完整性,但将相同的数据“缓存”在文件中以进行快速只读访问。一些注意事项:

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

因此,这不是最简单的方法,但根据您的需要,可能是完整性、性能和实施工作量之间的良好折衷。

【讨论】:

  • 好点。不幸的是,我使用的是 MySQL,如果我没记错的话,它没有这样的功能,因此需要完整的应用程序层逻辑才能将文件(sa PDF 或图像)的磁盘表示形式转换为 BLOB,反之亦然.
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 2011-09-04
  • 2014-05-05
  • 2022-06-10
  • 2011-03-10
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
相关资源
最近更新 更多