将文件存储在数据库中还是只存储文件路径,哪种方式更好?

3

在存储文件时,是将文件本身存储在数据库中,还是仅存储文件路径更好呢?

特别是当文件数量和容量很大时。


您可以在以下链接中查看此主题:http://programmers.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database - Abdellah OUMGHAR
请仅返回翻译后的文本:以及:http://dba.stackexchange.com/questions/2445/files-in-the-database-or-not - Abdellah OUMGHAR
我必须说这不是一个非常有用的问题。如果在大盘硬盘和1Mb/s网络速度的时代问这个问题,答案可能会非常不同。如今使用SSD与HDD也会影响答案。我认为,这个问题的答案几乎没有长期的好处。即使是“更好”的这个词,在这种情况下,也需要定义清楚。你唯一能做的就是尝试两种方式,并测试哪种对你来说更好。 - Enigmativity
为什么不两者兼顾呢?https://www.simple-talk.com/sql/learn-sql-server/an-introduction-to-sql-server-filestream/ - Nick.McDermaid
1个回答

4

TL;DR

256K以下的对象最好存储在数据库中,1M以上的对象最好存储在文件系统中。

您需要决定如何处理256K至1M之间的对象。

阅读这篇微软研究文章-解释了这个问题:是将大型对象存储在数据库或文件系统中?

注:

  • 事实上,没有固定的解决方案,您可能有理由选择其中之一。

    例如,在高度安全性要求的应用程序中,您可能决定将所有内容都存储在数据库中。

  • 有许多因素需要考虑。如果您需要复制您的数据库,则有助于将所有内容存储在数据库中,因为您可以确保复制的数据库可以提供所有文件。

  • 如果应用程序具有很高的性能要求,您有充分的理由将所有内容存储在文件系统中(特别是如果文件很大和/或您经常读取/写入它们)


首先感谢您的回答,非常清晰:我必须管理我们VPN上的网络流量,并且不被强制在用户之间共享文件夹。因此,我选择了基于存储的解决方案。但是问题在于,我有超过1000个记录,每个记录对应一个3.5 MB的文件大小。 - Beldi Anouar
如果您正在使用MSSS,请查看Filestream数据类型。 - peterG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接