哪个数据库用于科学数据(可变大小的图像+元数据搜索)



我正在寻找一个好的数据库解决方案来存储大量(~100 GB 到几 TB)的科学数据。理想情况下,它将能够处理更多的数据。

要求

我的数据文件是"图像",一个~400万个条目数组(1000x1000x3整数+ 1000x1000浮点数),加上每个图像~50-100个条目的相关元数据。元数据以分层方式存储。图像将被组织到一个或多个"文件夹"(或"项目")中,这些文件夹本身可以包含其他文件夹。一切都有所有者等。

我需要在一个或多个文件夹中搜索 100-10,000 张图像,主要基于其元数据。然后,我可能需要从图像中提取切片 - 如果我只需要其中的一小部分,我真的不想加载所有数据。图像应以压缩格式存储。

编辑:重要的是要强调我缺乏统一的数据。例如,图像是未知维度的浮点数或整数,通常有 10^5-10^6 个条目,每个图像的元数据数量可能会有所不同。当然,跨图像搜索元数据仅限于具有相同键的图像。

当前的方法

我目前(不是那么好)的解决方案是混合数据库。首先,我使用SQL数据库(现在的Django + MySQL)来处理"文件夹",所有者,并且每个图像都有记录,但没有数据。我也可以为元数据创建记录。其次,我使用 PyTables 以 hdf5 格式存储图像和元数据,并将其视为数据库。这解决了切片和压缩问题,并允许我分层存储元数据,但 PyTables 似乎不可扩展,并且远不如商业数据库开发。(它不是为多用户环境制作的:我正在编写自己的锁!,这是一个不好的迹象。

帮助!

我不是铁杆程序员,所以强烈建议使用标准数据库解决方案。我的"优化"肯定会包括维护和编程成本。任何人都可以推荐最喜欢的数据库解决方案或架构吗?关于关系与等级与其他的想法?

选项可能是SciDB(不常见,可能很好),SQL(听说它对这些应用程序不利,也许是PostgreSQL?)和HBase(实际上,我对此一无所知)。我觉得科学界,尤其是天文学界一定有好的解决方案,但大型项目似乎需要一个认真的团队来建立和维护。

我很乐意提供更多信息。

您是否以

HDF5 格式存储数据?由于您已经提到您不愿意加载所有数据,因此您可能不太喜欢像SciDB,MonetDB或RasDaMan这样的数组数据库选项。将原始科学格式的大数据加载到数据库中是非常痛苦的,而且通常还需要一些额外的编程工作。

您可以查看本文:在 HDF5 上支持轻量级数据管理层。这项工作建议直接在HDF5上操作SQL。

最新更新