mysql - 将附件保存到数据库 : blob vs path reference

标签 mysql database blob

我正在设计一个系统,可以在其中创建一个条目,然后向该条目添加附件,然后将附件保存到数据库中。但是我对如何实现附件处理有两种看法。

我在两种方法之间作斗争:

  1. 将附件以blob字段类型直接保存到数据库
  2. 将目录路径保存到数据库,并将实际文件保存到服务器

据我所知,这两种方法各有利弊。

第一种方法会将所有数据保存在同一个位置,这样我就可以根据需要轻松地将其移动到其他地方。就“数据在哪里”的问题而言,它也使事情保持一致。另一方面,我听说保存这样的东西非常耗费资源,而且数据库的大小会大幅增长。

第二种方法将允许数据库保留易于管理的数据字段,如文本和数字,而更重的内容在服务器上。如有必要,这也将允许更直接地访问文件。另一方面,数据是分离的,更难以跟踪,并且还需要引入文件系统访问权限才能检索所述文件。

我倾向于第一种方法,但为此我希望得到以下答案:

How would saving attachments directly to database impact on the database size and application performance?

最佳答案

不要将文档作为 blob 存储在数据库中。存储路径。 RDBMS 不是文档存储。 MySQL 不是为此目的而设计的,在 MySQL 中存储文档会使数据库变得不必要地庞大并且几乎不可能检索数据,进行备份将花费很长时间,如果数据库发生问题,所有文件都会随之消失。文件存储几乎总是比 RDBMS 更好的文件存储选择。

关于mysql - 将附件保存到数据库 : blob vs path reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721051/

相关文章:

mysql - 无法使用 ActiveRecord 更新属性

java - 如何在ebean中使用多个数据库

database - 如何使用 TRANSBASE 限制 SELECT 中的行

java - 使用 Java 加速对 MySQL 的查询调用

image - 如何将图像/blob 插入 SQL Server CE(就像 sqlite 一样)?

mysql - 调用存储函数的派生属性抛出 StreamCorruptedException

php - MySQL在PHP中插入错误

mysql - 多列之间的 SQL COUNT

sqlite - 黑莓将音频和视频存储到sqlite的方法?

JavaScript/C# 膨胀和收缩通过 XHR 发送的数据