mysql - 最佳使用数据库存储大型科学数据集

标签 mysql database scientific-computing

在我的主要职责中,我处理实验室测试数据文件,这些文件可以包含每个独特测试条件的 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/

相关文章:

c++ - 科学应用程序在 Linux 上突然变慢

python - 在 cython 中生成高斯随机数的最有效和可移植的方法是什么?

php分页不显示sql数据

Google 云 Sql 上大于 1 TB 的 MySQL 表

mysql - 无法在 MySQL Workbench EER 图中移动(单击并拖动)实体

Java - 在两种方法中使用准备好的语句

mysql - 将 Wordpress 站点移动到 Docker : Error establishing DB connection

javascript - 我如何通过nodejs返回获取mysql json

MySQL 错误 - "check syntax to use near ' %s”

java - 从 pubchem 中提取与单同位素质量匹配的 sdf 文件