我想知道在数据库表中存储PDF是否是一个好的长期想法。以下是对问题的描述:
我有一个客户,有数百个客户上传大量的pdf文件作为证据。这些pdf文件的大小从相当小(目前,它被设置为将文件直接上载到为每个项目的每个客户端创建的文件夹中。这是可以的,但确实占用了空间,查找文件可能有点像噩梦。就像我说的,每个项目和每个客户都会上传多个证据。
我能想到的最好的解决方案是提供一个接口,可以将PDF文件直接上传到db表中,该表跟踪客户id、项目id和证明。这提供了更好的安全性,并提供了从project X的每个客户获取所有PDF文件的能力。
将开发一个数据库清理工具来删除超过指定时间段的记录,因此表不会永远增长,但我担心性能受到影响(如果有)和其他可能被忽略的负面影响。
所以,总的来说,这是一个好主意还是应该在文件系统中找到更好的方法来处理这个问题?

最佳答案

我建议将指向数据的轻量级密钥存储在文件系统中,而不是将实际文件的数据存储在BLOB字段中一种可能的安排是散列文件(例如,使用SHA-1)并将该散列用作磁盘上的文件名—甚至可能将存储安排到映射到第一个散列字符的目录树中(即,n可能存储在80cdef...中)。
然后,您的表可能由主键、文件的人性化显示名称和包含磁盘上物理文件的(哈希)名称的字段组成。
这也为您提供了将文件存储从数据库存储到分布式文件系统的物理灵活性,这将是一个相当合理的分离,使得在一个长期的系统中不可避免地会变得非常大。这样,您就可以保留相对较小的数据库(潜在更好的性能和更少的备份痛苦)的好处,同时将更大的存储问题卸载到存在于数据库本身之外的系统中,并且已经存在过多的已证实的方法。

08-04 00:05