在我的主要职责中,我处理实验室测试数据文件,这些文件可以包含每个独特测试条件的 2000 多个参数。这些文件通常以 CSV 格式文件的形式存储和处理,但是当处理 6000 多个文件且每个文件超过 100 行时,这会变得非常笨重。
我正致力于 future 的数据库存储和查询解决方案,以提高访问和效率,但我受限于 MySQL 的行长度限制(特别是 RHEL 7.5 上的 MariaDB 5.5.60)。我使用的是 MYISAM 而不是 InnoDB,这使我能够访问大约 1800 个主要是 double 格式的数据字段。这个版本的 MariaDB 强制对动态列进行编号,而不是命名,而且由于管理政策,我目前无法升级到 MariaDB 10+。
我应该为这个应用程序寻找 NoSQL 数据库,还是有更好的方法来处理这些数据?其他人如何处理多变量数据集,尤其是数字数据?
有关我尝试导入的 CSV 文件的示例,请参见下文。我一直使用的标识符是 TEST、RUN、TP 的组合,形成一个 12 位无符号 bigint key 。
示例文件: 运行,TP,测试,角度,速度,... 1.000000E+00,1.000000E+00,5.480000E+03,1.234567E+01,6.345678E+04,...
示例键: 548000010001 <-- 测试 = 5480,运行 = 1,TP = 1
感谢您的任何意见。
最佳答案
复杂性来自于您必须处理大量数据这一事实,而不是因为它们被拆分为具有许多行的许多文件。
使用数据库存储和查询系统会从表面上隐藏一些这种复杂性,但会以其他几个级别的复杂性为代价,正如您已经经历过的那样,包括您无法控制的障碍,例如更改版本和保守的管理员。数据库存储和查询系统是为其他应用场景而设计的,它们具有与您的情况无关的优势。
您应该认真地重新考虑将数据保留在文件中,即使用您的文件系统作为您的数据库存储系统。可能,将您的 CSV 输入转录为现代的自记录数据格式,如 YAML 或 HDF5。对于查询,您最好编写直接访问这些文件的脚本或程序,而不是编写 SQL 查询。
关于mysql - 最佳使用数据库存储大型科学数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52064692/