3
A
回答
4
而不是什么?把它放在文件系统中?
使用二进制文件存储在文件系统的缺点是:
你没有得到符合ACID;
如果您可能将该应用程序托管在多个服务器上(例如负载平衡,故障切换),则必须制定某种共享文件存储以避免后端不同步;
只有一个存储后端而不是两个使部署更简单。
所以只用数据库存储,您不必担心创建与网络用户的写权限的文件夹,整个应用程序可以只读的。如果您需要移动应用程序,则可以将其从源代码管理中检出并指向数据库,而不必跨越多个文件数据。您的数据库备份可以覆盖所有内容,而不必单独备份文件备份步骤。等等。
在另一方面的弊端数据库BLOB存储:
笨拙的非常大的文件;
您无法使用网络服务器高效地免费提供文件。
1
存储在数据库中的任何相同的优点让你
- 你可以索引的另一列或主键的数据提供数据
- 它从一个地方进行访问,并与行向交易的快速检索级并发的问题你
- ,可以适当地高速缓存常用数据
- 您可以微调用于存储数据的表引擎
- 你可以国防部二进制数据和其他表中的行之间的关系(用户/页/任何)
我不明白为什么它很重要,数据是文本或二进制数据库为您提供了很多优点。
1
我假设另一种方法是将二进制数据存储在文件中,并将文件名而不是数据存储在数据库的相应记录中。这种方法的问题在于它不一致:任何事情都可能发生在你的文件上,它可能会被损坏或删除,DBMS(在这种情况下,MySQL)不能做任何事情:它不能确保一致性,因为它确实不知道任何关于你的文件。另一件事,DBMS可以优化对数据的访问(它可以将其存储在内存中,而不是每次访问时都从磁盘读取),而使用基于文件的方法时,您必须等到查询完成后,打开文件并从磁盘读取数据。这会显着降低性能。
相关问题
- 1. 在mysql中存储二进制数据
- 2. 在MySQL中存储二进制数组
- 3. 在mysql中存储二进制数据(图像,pdf,mp3,视频等)的最佳方式是什么?为什么?
- 4. 在mysql中存储和匹配二进制数据
- 5. 存储在MySQL中的二进制数据被损坏节点
- 6. 在cassandra上存储二进制数据就像MYSQL BLOB二进制
- 7. 为什么要将bcrypt()散列存储在(var)二进制文件中?
- 8. 二进制数据在MySQL
- 9. 在iPhone上的核心数据中存储二进制数据
- 10. 为什么要将二进制转换为十进制?
- 11. Mysql二进制存储问题
- 12. 在MySQL中将十六进制值存储为二进制文件
- 13. 为什么在Web套接字中使用二进制数据?
- 14. 将二进制数据作为字符串存储在Web Sql数据库中
- 15. 十六进制为二进制形式,需要说明什么?
- 16. 什么是二进制数据?
- 17. 如何在字符串中存储大型二进制数据?
- 18. Rails:在数据库中存储二进制文件
- 19. 将文件内容(二进制数据)存储在plone.app.registry中
- 20. 如何通过Mongoose在MongoDB中存储二进制数据(PNG)?
- 21. 如何在结构中存储二进制文件数据?
- 22. 为什么在将数据存储到MySQL数据库时,需要将转义序列添加到二进制字符串中?
- 23. 为什么在将二进制数据从PHP插入MySQL时使用bin2hex?
- 24. 在Neo4j中存储二进制对象
- 25. 从数据存储导出blob属性为二进制文件
- 26. 要使用什么数据存储
- 27. 用于存储二进制数据的键/值数据库
- 28. 为什么mysql在“#”字符之后没有存储数据?
- 29. 缓存二进制数据的最佳方式是什么?
- 30. 如何在MySQL数据库中存储十六进制值?
是的,正好 - DB vs Filesystem。感谢你的回答。 – Arnthor 2011-04-25 12:53:43