python-用于科学数据的数据库(可变大小的元数据搜索图像)
作者:互联网
我正在寻找一个很好的数据库解决方案来存储大量的科学数据(大约100 GB到数TB).理想情况下,它将能够处理大量数据.
要求
我的数据文件是“图像”,一个约400万个条目数组(1000x1000x3个整数,每个1000×1000浮点数),以及每个图像约50-100个条目的相关元数据.元数据分层存储.图像将被组织成一个或几个“文件夹”(或“项目”),它们本身可以包含其他文件夹.一切都有所有者,等等.
我将需要主要根据其元数据在一个或几个文件夹中搜索100-10,000张图像.然后,我可能需要从图像中提取切片-如果只需要一部分数据,我真的不想加载所有数据.图像应以压缩格式存储.
编辑:重要的是要强调我缺乏统一的数据.例如,图像是未知尺寸的浮点数或整数,通常具有10 ^ 5-10 ^ 6项,每个图像的元数据数量可能会有所不同.当然,跨图像搜索元数据将仅限于具有相同键的图像.
当前方法
我目前(不是很好)的解决方案是混合数据库.首先,我使用一个SQL数据库(现在为Django MySQL)来处理“文件夹”,所有者,并且对每个图像都有一条记录,但是没有任何数据.我也可能为元数据创建记录.其次,我正在使用PyTables以hdf5格式存储图像和元数据,并将其像数据库一样对待.这解决了切片和压缩问题,并允许我分层存储元数据,但是PyTables似乎没有可伸缩性,并且开发程度远不及商业数据库. (它不是针对多用户环境而设计的:我正在编写自己的锁!这是一个不好的信号.)
救命!
我不是一名硬核程序员,因此强烈建议使用标准数据库解决方案.我的“优化”肯定会包括维护和编程成本.谁能推荐喜欢的数据库解决方案或体系结构?关于关系vs等级vs其他的想法?
选项可能是SciDB(不常见,可能很好),SQL(听说这些应用程序对PostgreSQL不利)和HBase(实际上,我对此一无所知).我觉得科学界尤其是天文学界必须有好的解决方案,但是大型项目似乎需要一支认真的团队来建立和维护.
我很乐意提供更多信息.
解决方法:
您是否以HDF5格式存储数据?由于您已经提到过您不愿意加载所有数据,因此您可能不太喜欢SciDB,MonetDB或RasDaMan等阵列数据库选项.将原始科学格式的大数据加载到数据库中是非常痛苦的,并且通常还需要一些额外的编程工作.
您可以检查本文:Supporting a Light-Weight Data Management Layer over HDF5.这项工作建议直接在HDF5上操纵SQL.
标签:scientific-computing,data-management,python,database 来源: https://codeday.me/bug/20191101/1981311.html