将二进制图像数据直接存储在表中可能有哪些注意事项和缺点?

Geo*_*son 5 mysql schema

虽然与这个问题有关,但我有一个稍微不同的角度来解决这个问题。这是我的情况:

我正在编写一个管理桌面应用程序插件的 Web 应用程序(使用 PHP 或 Python)。用户可以浏览插件、安装插件、上传插件等。

我正在规划数据库的架构,并发现自己做出了以下决定:

将图标(用于插件)存储在表本身中还是将它们存储在文件系统中并简单地将文件名存储在表中更好?

图标很小(48x48 或接近)并且最多不会占用超过 5 或 6 KB。将图像数据存储在表中是否有任何严重的缺点?还有其他我应该注意的影响吗?性能会成为问题吗?存储会成为问题吗?


编辑:我目前正在查看 MySQL 数据库中的 MyISAM 表。

Mar*_*ith 4

您尚未指定您考虑的数据库平台,但在这种规模/规模下,这不太重要。

每条记录 5kb 是微不足道的。100 万条 5kb 记录小于 5GB,仍然微不足道。1000 万条 5kb 记录……仍然不是什么值得失眠的事情。

如果我们要了解特定于平台的情况,Paul Randall 对 SQL Server 文件流存储进行了详尽研究的白皮书表明,它的性能优于文件大小为 1MB 或更大的表存储。文件大小低于 1MB 时,优点主要在于绕过缓冲池的文件流。

数据库存储的优点:

  1. 已成交。二进制数据与其元数据相关联,不由文件系统公开,不会被意外删除。
  2. 减少备份开销。5GB 文件中有 100 万条记录,而 5kb 文件中有 100 万条记录。
  3. 2)自然伴侣,恢复速度更快。

编辑:底片(按照亚伦的建议)

  1. 需要编程访问。
  2. 存储成本。如果您必须处理平台的大小限制(例如 Azure 上的 50GB),那么问题就更大了。


归档时间:

查看次数:

1302 次

最近记录:

14 年 前