充分利用数据库来存储大型科学数据集

时间:2018-08-28 19:03:40

标签: mysql database scientific-computing

在我的主要职责中,我处理实验室测试数据文件,其中每个独特的测试条件最多可以包含2000个参数。这些文件通常以CSV格式存储和处理,但是在处理6000多个文件(每个文件有100多个行)时,这变得非常笨拙。

我正在为将来的数据库存储和查询解决方案而努力,以提高访问和效率,但是MySQL的行长限制(特别是RHEL 7.5上的MariaDB 5.5.60)使我感到困惑。我使用的是MYISAM而不是InnoDB,这使我可以访问大约1800个大多数为双格式的数据字段。此版本的MariaDB强制对动态列进行编号,而不是命名,由于管理政策,我目前无法升级到MariaDB 10 +。

我应该为该应用程序查看NoSQL数据库,还是有更好的方法来处理这些数据?其他人如何处理多变量数据集,尤其是数字数据?

有关我尝试导入的CSV文件的示例,请参见下文。我一直使用的标识符是TEST,RUN,TP的组合,形成一个12位无符号bigint密钥。

示例文件: 运行,TP,测试,角度,速度,... 1.000000E + 00,1.000000E + 00,5.480000E + 03,1.234567E + 01,6.345678E + 04,...

示例键: 548000010001 <-测试= 5480,运行= 1,TP = 1

我非常感谢您提供的任何信息。

1 个答案:

答案 0 :(得分:0)

复杂性源于您必须处理大量数据的事实,而不是源于将它们拆分为具有许多行的许多文件的事实。

使用数据库存储和查询系统会从表面上掩盖其中的某些复杂性,但是以您已经经历过的其他几个级别的复杂性为代价,其中包括无法控制的障碍,例如更改版本和保守的管理员。数据库存储和查询系统是为其他应用程序场景而设计的,它们具有与您的案例无关的优势。

您应该认真考虑将数据保留在文件中,即,将文件系统用作数据库存储系统。可能将您的CSV输入转换为现代的自记录数据格式,例如YAML或HDF5。对于查询,最好编写直接访问这些文件的脚本或程序,而不是编写SQL查询。