2011-04-25 314 views

回答

4

而不是什么?把它放在文件系统中?

使用二进制文件存储在文件系统的缺点是:

  • 你没有得到符合ACID;

  • 如果您可能将该应用程序托管在多个服务器上(例如负载平衡,故障切换),则必须制定某种共享文件存储以避免后端不同步;

  • 只有一个存储后端而不是两个使部署更简单。

所以只用数据库存储,您不必担心创建与网络用户的写权限的文件夹,整个应用程序可以只读的。如果您需要移动应用程序,则可以将其从源代码管理中检出并指向数据库,而不必跨越多个文件数据。您的数据库备份可以覆盖所有内容,而不必单独备份文件备份步骤。等等。

在另一方面的弊端数据库BLOB存储:

  • 笨拙的非常大的文件;

  • 您无法使用网络服务器高效地免费提供文件。

+0

是的,正好 - DB vs Filesystem。感谢你的回答。 – Arnthor 2011-04-25 12:53:43

1

存储在数据库中的任何相同的优点让你

  • 你可以索引的另一列或主键的数据提供数据
  • 它从一个地方进行访问,并与行向交易的快速检索级并发的问题你
  • ,可以适当地高速缓存常用数据
  • 您可以微调用于存储数据的表引擎
  • 你可以国防部二进制数据和其他表中的行之间的关系(用户/页/任何)

我不明白为什么它很重要,数据是文本或二进制数据库为您提供了很多优点。

1

我假设另一种方法是将二进制数据存储在文件中,并将文件名而不是数据存储在数据库的相应记录中。这种方法的问题在于它不一致:任何事情都可能发生在你的文件上,它可能会被损坏或删除,DBMS(在这种情况下,MySQL)不能做任何事情:它不能确保一致性,因为它确实不知道任何关于你的文件。另一件事,DBMS可以优化对数据的访问(它可以将其存储在内存中,而不是每次访问时都从磁盘读取),而使用基于文件的方法时,您必须等到查询完成后,打开文件并从磁盘读取数据。这会显着降低性能。

相关问题