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

Python 哪个数据库用于科学数据(可变大小的图像和元数据搜索),python,database,scientific-computing,data-management,Python,Database,Scientific Computing,Data Management,我正在寻找一个好的数据库解决方案来存储大量(大约100 GB到几TB)的科学数据。理想情况下,它将能够处理大量数据 要求 我的数据文件是“图像”,一个约400万条目的数组(1000x1000x3整数+1000x1000浮点),加上每个图像约50-100条目的相关元数据。元数据是分层存储的。图像将被组织到一个或多个“文件夹”(或“项目”)中,这些文件夹本身可以包含其他文件夹。凡事都有主人,等等 我将需要搜索100-10000图像,在一个或几个文件夹中,主要基于其元数据。然后,我可能需要从图像中提取

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

要求 我的数据文件是“图像”,一个约400万条目的数组(1000x1000x3整数+1000x1000浮点),加上每个图像约50-100条目的相关元数据。元数据是分层存储的。图像将被组织到一个或多个“文件夹”(或“项目”)中,这些文件夹本身可以包含其他文件夹。凡事都有主人,等等

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

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

当前方法 我目前的解决方案(不是很好)是混合数据库。首先,我使用一个SQL数据库(Django+MySQL)来处理“文件夹”、所有者,并且每个图像都有一个记录,但没有任何数据。我也可以为元数据创建记录。其次,我使用PyTables以hdf5格式存储图像和元数据,并将其视为数据库。这解决了切片和压缩问题,并允许我按层次结构存储元数据,但PyTables似乎不可伸缩,而且远不如商业数据库。(它不是为多用户环境设计的:我正在编写自己的锁,这是一个坏迹象。)

救命啊! 我不是一个硬核程序员,所以强烈建议使用标准数据库解决方案。我的“优化”肯定包括维护和编程成本。有人能推荐最喜欢的数据库解决方案或体系结构吗?关于关系与等级与其他的观点

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


我很高兴提供更多信息。

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


你可以检查这张纸:。这项工作建议直接在HDF5上操作SQL。

请您解释一下,什么是“主要基于其元数据”-它是像EXIF一样存储在图像标题中,还是图像内容的某些功能,或者其他什么?元数据如何连接到图像?为什么元数据项的数量少于图像的数量?我认为您的基本方法是合理的,将元数据存储在SQL数据库中似乎是合乎逻辑的选择,因为它使您能够轻松地搜索数据。在SQL数据库中存储blob是一个非常糟糕的主意,不要这样做。你可以使用像卡桑德拉这样的东西来存储BLUB(或许还有元数据)。卡桑德拉的问题是(在我的经验中),安装、维护和使用非常容易,但是很难正确地处理它。也考虑Rasdaman()和MunET DB()两者都在这方面有一定的牵引力,两者都可能是,比SciDB更成熟。dbf:这些图像来自我的研究,在那里,图像是超冷原子。元数据是关于拍摄图像的细节(查看矩形、成像参数,如脉冲时间)和原子的简单属性(数量、温度等)的混合。因此,它完全脱离了EXIF的框架。我的意思是每个图像有50-100个元数据条目。HP Mark:rasdaman和Monet DB在大型阵列、切片、压缩等方面的表现如何。?一眼就能看出他们都对科学数据很感兴趣。感谢您的快速回复!让他们来吗?我没有拉斯达曼或莫奈DB的个人经验,但科学界学术大数据的联系人告诉我,他们都值得考虑。您的用例似乎正处于双方的目标位置,为什么不联系他们的创建者并向他们询问您的问题呢?他们很平易近人。您还可以考虑将问题移到“是”,最后我在HDF5附近编写了一个SQL包装器。这篇论文看起来是这个问题的一个很好的解决方案,当然比我所做的要先进得多。