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

时间:2012-07-04 08:08:18

标签: python database scientific-computing data-management

我正在寻找一个良好的数据库解决方案来存储大量(大约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(实际上,我对它一无所知)。我觉得在科学,尤其是天文学界,必须有良好的解决方案,但是大型项目似乎需要一个认真的团队来建立和维护。

我很乐意提供更多信息。

1 个答案:

答案 0 :(得分:4)

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

您可以查看此论文:Supporting a Light-Weight Data Management Layer over HDF5。这项工作建议直接在HDF5上操作SQL。