将整个文件存储在RDBMS中是否有任何优势,而不是通过引用RDBMS中的文件路径来存储文件系统中的文件?
哪种方法会更快?我何时选择其中一个?使用哪个文件系统是否重要? (比如说ext3)
我不希望文件发生变化。文件可以是json或xml,也可以是pdf(不太可能)。此外,可能不需要经常引用这些文件。它们仅用于存档。
谢谢。
答案 0 :(得分:2)
鉴于文件不会发生变化,将文件保存在DBMS中的价值有限。将文件保留在DBMS中的主要优点是DBMS知道如何管理事务,但如果文件不会改变,那么这种优势就变得微不足道了。
在DBMS中存储文件的另一个好处是数据库备份将包含文件;如果单独存储文件,则必须备份单独的文件以及DBMS本身,以保证所有数据的安全。
在DBMS中存储文件的另一个好处是数据库可以对文件的访问实施更细微的控制。
将文件存储在文件系统中的主要优点是可以轻松(更轻松)查看您所拥有的内容。
第二个优点是您可以备份或操作DBMS之外的文件 - 尽管从某些角度来看这也是一个缺点。
如果文件存储在DBMS中的blob中,那么普通的SQL客户端软件可以通过普通的SQL连接检索内容。如果SQL客户端软件与DBMS和文件不在同一台机器上,那么您必须担心客户端如何 获取文件数据。
将文件与DBMS分离的另一个好处是文件可以存储在DBMS机器之外。另一方面,这使得将文件加载到DBMS中变得复杂。
总的来说,考虑到上面列出的问题,使用“DBMS中的文件”方法似乎有一些优势。另一方面,许多人确实采用“文件系统中的文件”方法,并且它们存活下来。可能是他们的SQL客户端与DBMS位于同一台机器上,因此文件传输问题并非不可克服,但这是我最担心的问题。
答案 1 :(得分:1)
如果文件大小小于1MB,您可以将它们存储在RDBMS中,但另外考虑将它们存储在文件系统中。见http://technet.microsoft.com/en-us/library/bb933993.aspx
将整个文件存储在RDBMS中是否有任何优势,而不是通过引用RDBMS中的文件路径将文件存储在文件系统中?
如果钱等没有问题,那么存储在RDBMS中是有利的,因为您将获得RDBMS的所有好处,而且不会从存储在db中的引用中解除引用文件的开销。
哪种方法会更快?
RDBMS
我什么时候选择其中一个?
由实际考虑决定。考虑文件系统,如果文件是> 1MB。许多共享托管提供商不启用FILESTREAM。
使用哪个文件系统是否重要?
我不知道这件事。
答案 2 :(得分:1)
添加Jonathan Leffler写的内容:
在处理BLOB时,DBMS不像处理固定大小的对象那样有效,所以我们可以说DBMS不喜欢大型对象。此外,许多DBMS将BLOB存储在表之外的单独存储中。
如果您的目标是归档目的,则单独存储文件以便于备份和检索是有意义的。您还可以将文件移动到某些后端存储,并使它们“脱机”以释放服务器上的空间(如果需要)。