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

时间:2011-10-03 17:47:51

标签: mysql database

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

我们希望能够将数据存储在数据库中一段时间​​,大约几个月。随着数据可能每隔几分钟进入,存储的BLOB数量可以快速增长。

目前(开发阶段)我们将使用MySQL。我想知道MySQL是否是一个很好的方向:

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

谢谢,

2 个答案:

答案 0 :(得分:1)

我建议将图像存储在硬盘上,并在mysql实现中维护图像的元数据,包括文件名(可能)。因此,您的脚本可以轻松地从本地硬盘驱动器中获取它。

阅读&存储文件,硬盘和大多数现代操作系统都非常擅长。所以我相信mysql不会在这里解决任何问题。

答案 1 :(得分:1)

MySQL是一个很好的数据库,可以处理大型数据集。但是,将整个数据库整合到RAM中有很大的好处,在这种情况下,所有与数据库相关的活动都会快得多。通过将大量且很少访问的对象放入数据库,您就会更加努力。

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

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

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