基于文件的存储与数据库存储

我们公司目前在磁盘上存储了大量的自动生成的文件,目前已经有超过20万个文件,其中PDF文件大小在100k-1M左右。

被要求为pro和cons提供一些证据,将这些数据存储在文件中,并将其存储为数据库logging。

我想看看我们在哪里可能将这些数据存储在一个MS SQL或MySQL数据库等,而不是有200,000个文件周围一堆本地目录。

从你们身上得到什么样的身份证是使用任何一个系统的一些好的坚实的理由,所以我可以衡量差异,并把我的情况向前。

我真的不能看到通过将这些文档存储在数据库中获得任何优势。 由于文档不会被修改,版本控制系统和文档pipe理系统都不会增加任何价值。

你可以做的最好的办法是让它们存储在一个独立的服务器上,该文件系统在快速检索(可能是XFS,阅读更多这里和这里 )方面performance优秀。 有什么可以帮助的是文件夹结构本身的一个良好的组织,例如在保险索赔一个上层build筑的年份和月份的情况下,或者在保险联系人的情况下,保险索赔的前几个数字/字符sorting的上层结构。

将文件存储在面向文档的数据库中是有一定价值的。 但是,这完全取决于您如何使用这些文件,访问它们的频率,访问速度有多快。 还有文件pipe理系统可能是一个很好的select。 你首先需要详细说明你的用例。

你目前的存储scheme是否有任何破碎或麻烦? 将文件移动到数据库的转换成本将是非常重要的。 把切换的痛苦放在一边,这里有一些事情要考虑:

  • 数据一致性:你没有指定你正在使用的文件系统/平台,但是数据库可能会提供更好的完整性检查单个文件。

  • 异地恢复:大多数值得一提的DBA知道如何使用其数据库的复制function。

  • 备份:根据您的数据库供应商可能提供的备份选项(日志辅助备份,快照,一致的热备份)您的操作系统可能不提供的情况。

  • logging/审计:大多数现代数据库的安全function应该为您提供谁访问每个文件的logging。

  • 数据隐私:在您select的数据库中encryption数据比在您的操作系统上更容易?

从技术上讲,我列出的每个要点都有一个基于文件系统/操作系统的解决scheme(例如rsync,内核级审计,文件系统encryption)。 如果你拥有足够的资源来满足当前和预计的需求,那么你就无法打败文件系统的简单性。 但是,如果您的组织具有强大的DBA技能和精简的系统pipe理团队,那么使用数据库可能会更好。 如果您的数据库pipe理员已经build立了可靠的程序来满足您的所有要求,那么这个决定可能会很容易。

似乎可能不一定是“文件系统”与“数据库”尽可能多的数据pipe理,访问和保护比较? 也许围绕这样的事情:

  • 通过复制和/或错误检测/纠正来防止丢失
  • 存储pipe理具有重复数据删除和/或可扩展性
  • 客户端可访问性(本地与自定义应用程序/
  • 报告选项