mysql - 我应该使用什么数据库来存储带时间戳的图片(或通常是 BLOBS)?

标签 mysql database

我需要一个可以存储大量 BLOBS 的数据库。 BLOB 是图片文件,并且还有时间戳和一些基本字段(大小、指标、其他数据库中对象的 id 等),但数据库的主要用途是存储图片。

我们希望能够将数据存储在数据库中一段时间​​,大约几个月。由于数据可能每隔几分钟就会出现一次,因此存储的 BLOB 数量可能会快速增长。

目前(开发阶段)我们将使用 MySQL 来实现此目的。我想知道 MySQL 是否是一个好的方向,在以下方面:

  • 能够高效存储二进制数据
  • 可扩展性
  • 维护要求。

谢谢

最佳答案

MySQL是一个很好的数据库,可以处理大型数据集。然而,让整个数据库适合 RAM 有一个很大的好处,在这种情况下,所有与数据库相关的事件都会快得多。通过将大型且很少访问的对象放入数据库,您会使这变得更加困难。

所以,我认为综合方法是最好的: 仅将元数据保存在数据库中,并将文件按原样保存在磁盘上。如果您正在谈论 100,000 个文件,最好对目录进行哈希处理,然后将文件保存在数据库中索引字段的名称下。例如。这样的目录结构:

00/00001.jpg
00/00002.jpg
00/00003.jpg
....
....
10/10234.jpg
10/10235.jpg

在这种情况下,您的目录不会有太多文件,并且访问文件既快速又简单。当然,如果您的数据库服务器是分布式/冗余的,事情会变得更有趣,任何此类方法可能会也可能不会被保证,具体取决于负载、冗余/故障转移要求等。

关于mysql - 我应该使用什么数据库来存储带时间戳的图片(或通常是 BLOBS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638681/

相关文章:

php - 遍历 POST 数组并更新数据库

php - 从 JSONArray 转换为 JSONObject 处理 Android 时出错

mysql - Laravel where 子句与 DATEDIFF()

ios - 保存图像以便稍后发送到数据库的简单方法?

php - 检查数据库中是否已存在数据

mysql - 值得在列上添加索引只是为了使它们成为外键吗?

mysql - 过滤产品的某一类别,但带上过滤后产品的所有类别

php - 如何根据日期选择上一行

mysql - 如何对两个表进行分组并应用聚合函数?

database - 使用 Navicat 连接到 Heroku Postgres 数据库