微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么要在MySQL中存储二进制数据?

如何解决为什么要在MySQL中存储二进制数据?

| 我有些困惑-在DB中存储二进制数据的优点是什么?是出于安全原因,还是我看不到一些更复杂的动机? 谢谢你的时间。     

解决方法

相对于什么?放在文件系统中? 使用文件系统进行二进制文件存储的缺点是: 您不符合ACID标准; 如果您可能将应用程序托管在多个服务器上(例如负载平衡,故障转移),则必须制定某种共享文件存储方式,以避免后端不同步; 仅具有一个存储后端而不是两个存储后端可以简化部署。 因此,借助仅数据库存储,您不必担心为Web用户创建具有写访问权限的文件夹,整个应用程序可以是只读的。如果您需要移动应用程序,则只需将其从源代码管理中检出并将其指向数据库即可,而不必复制更多文件数据。您的数据库备份可以涵盖所有内容,而不必执行单独的文件备份步骤。等等。 另一方面,数据库BLOB存储的缺点: 大文件笨拙; 您将无法使用网络服务器免费有效地提供文件。     ,将任何内容存储在数据库中的相同优势为您提供了 您可以在另一列或主键上为数据建立索引,以快速检索数据 它可以从一个位置访问,并为您处理行级并发问题 它可以适当地缓存常用数据 您可以微调用于存储数据的表引擎 您可以对二进制数据与其他表(用户/页面/其他)中的行之间的关系进行建模 我不明白数据是文本还是二进制的重要性,数据库可以为您带来很多好处。     ,我假设另一种选择是将二进制数据存储在文件中,然后将文件名而不是数据存储在数据库的相应记录中。这种方法的问题在于不一致:文件中可能发生任何事情,可能损坏或删除文件,并且DBMS(在这种情况下为MySQL)无法执行任何操作:它无法确保一致性,因为对您的文件一无所知。另一件事,DBMS可以优化对数据的访问(它可以将其存储在内存中,而不是每次访问时都不从磁盘读取),而使用基于文件的方法时,您必须等到查询完成,然后打开文件并从磁盘读取数据。它将大大降低性能。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。