存储分层模拟数据的最佳实践
TL,DR 科学计算界中用于存储大量分层结构数据的最佳实践是什么?例如,SQL在大型稀疏矩阵上不能很好地发挥作用。是否有用于构建,仓储和分析此类数据的好工具?大型强子对撞机的人使用什么? 用例详细信息 我想根据以下层次结构存储蛋白质模拟中的数据: protein |__simulation conditions |____|__residues |____|____|__conformers |____|____|____|__atoms 每个蛋白质都应该知道其每个残基,每个原子都应该知道用于其模拟的条件,等等,反之亦然。 最初,我认为关系数据库将非常适合该应用程序,因此我使用python和sqlalchemey编写了一个程序,该程序将数据存储在SQL数据库中。但是实际上,该程序不能很好地运行。 最大的问题与以下事实有关:由于每个可能的构象体对之间的成对相互作用,在构象体数据级别存在一个N x N矩阵,该矩阵存储势能。矩阵中的大多数条目都是零,因此我以一种稀疏格式将矩阵存储在数据库中的另一个表中,每个条目一行。不幸的是,对于涉及数千个conformer的模拟,成对表仍然以数十万行结尾,并且: a)构建和查询非常缓慢(几小时) b)与作为非稀疏矩阵的等效数据纯文本表示相比,我的硬盘驱动器占用了更多的数量级空间 c)在以下情况下占用了超过10 GB的内存:该表被读入内存 我的最终目标是在数据库中存储成千上万次运行(在几十种模拟条件下源自数千种蛋白质),以便可以一起分析所有运行。这意味着代表成对矩阵的表可能会增长到大约十亿行。目前看来,我需要一个Cray或其他共享内存的怪物,以便甚至对该数据库运行单个查询。 我在这里有更好的选择吗?大型强子对撞机的人使用什么?