我有一个在表中创建记录的应用程序(我知道这是火箭科学)。用户希望将文件(.doc、.xls、.pdf 等)关联到表中的单个记录。
做这个的最好方式是什么?
我认为您已经准确地掌握了解决此问题的两种最流行的方法。各有利弊:
将文件存储在数据库中
大多数 rbms 支持在数据库中存储 blob(或二进制文件数据、.doc、.xls 等)。所以你并没有在这里开辟新天地。
Pros
- 简化数据备份:您备份拥有所有文件的数据库。
- 元数据(关于文件的其他列)和文件本身之间的链接是牢固的并内置于数据库中;因此,它是获取文件数据的一站式服务。
Cons
- 当您将所有二进制数据存储在数据库中时,备份很快就会变成一场巨大的噩梦。您可以通过将文件保存在单独的数据库中来减轻一些麻烦。
- 如果没有数据库或数据库接口,就没有简单的方法来获取文件内容来修改或更新它。
- 一般来说,与文件系统相比,编码和协调数据上传和存储到数据库更困难。
将文件存储在文件系统上
这种方法非常简单,您将文件本身存储在文件系统中。您的数据库存储对文件位置的引用(以及有关文件的所有元数据)。这里的一个有用的提示是标准化磁盘上文件的命名模式(不要使用用户为您提供的文件,您自己创建一个文件并将其存储在数据库中)。
Pros
- 让您的文件数据与数据库完全分离。
- 易于维护文件本身(如果您需要更改文件或更新文件),您可以在文件系统本身中进行此操作。您可以从应用程序中轻松完成此操作,也可以通过新上传来完成。
Cons
- 如果您不小心,有关文件的数据库可能会与文件本身不同步。
- 安全性可能是一个问题(如果你不小心的话),这取决于你存储文件的位置以及该文件系统是否可供公众使用(我假设通过网络)。
最终,我们选择了文件系统路线。一旦我们锁定了任何漏洞并将文件流式传输出来(而不是直接从文件系统提供服务),就可以更轻松地快速实施,轻松备份,并且非常安全。它在两个不同的政府应用程序中以几乎相同的格式运行了大约 6 年。
J
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)