我需要一个可以存储大量 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/