将图像作为数据 URI 存储在数据库 BLOB 中是否很糟糕?

Posted

技术标签:

【中文标题】将图像作为数据 URI 存储在数据库 BLOB 中是否很糟糕?【英文标题】:Is it bad to store images as Data URIs in a database BLOB?将图像作为数据 URI 存储在数据库 BLOB 中是不是很糟糕? 【发布时间】:2013-10-16 06:14:36 【问题描述】:

我正在创建一个查看文章的移动应用。这些文章只是简单的 html,每个都有几个图像。我目前将所有内容都存储在数据库中。稍后,我需要以简单的格式将文章本地保存到设备中。出于这个原因,我选择使用数据 URI 方案将 Base64 图像存储在数据库中(在此处查找信息 http://en.wikipedia.org/wiki/Data_URI_scheme)。

我的问题是:可以将这么多数据存储在一个数据库条目中吗?我有一个只用于这些大记录的表,文章元数据表指向这些记录。如果我使用 TEXT 字段而不是 BLOB 会更好吗?

如果有帮助,我正在使用带有 InnoDB 引擎的 mysql

【问题讨论】:

【参考方案1】:

另一种选择是将图像存储在以下位置:

Amazon S3

然后在你的数据库中有一个字段来存储每张图片的 url。

【讨论】:

【参考方案2】:

只要您没有像 facebook 或类似的数据库那么大就可以了。 最好只将图像的路径和图像本身存储在一个文件夹中。

希望对你有帮助

【讨论】:

【参考方案3】:

避免使用数据库存储图像是一个好习惯,将图像保存在数据库中不仅会降低数据库性能,还会增加数据库的大小和备份,如果您使用云服务,那么还有成本问题。

为此目的使用 S3 或 Azure,并且只有图像的 url 在您的数据库中。文件可以直接上传到存储服务,以减少您的数据库服务器上的负载。剩下要做的就是让您的移动应用程序连接这两个服务(数据库和图像服务),我发现this web tool 来管理我的移动应用程序数据库,因为它连接到我的图像云服务,即 Azure 但我认为他们还支持 Amazon S3。

【讨论】:

【参考方案4】:

您还可以查看 Azure Blob 存储。我一直在用它,效果很好。

【讨论】:

以上是关于将图像作为数据 URI 存储在数据库 BLOB 中是否很糟糕?的主要内容,如果未能解决你的问题,请参考以下文章

将存储在数据库中的 BLOB 转换为 HTML 网站上的图像

如何将二进制数据作为图像写入 azure blob 存储 c#

如何调整我的模型以将上传的图像存储到我的数据库作为图像的链接而不是显示为 blob?

如何以BLOB格式将图像上传到Firebase存储?

将图像直接存储在数据库中还是作为base64数据存储?

反应本机图像获取/上传