在 MySQL 中存储和访问庞大数据矩阵的最有效方法

Posted

技术标签:

【中文标题】在 MySQL 中存储和访问庞大数据矩阵的最有效方法【英文标题】:Most efficient way to store and access a huge data matrix in MySQL 【发布时间】:2011-11-20 06:11:42 【问题描述】:

我将在 mysqlDB 中存储大量矩阵数据,存储和访问数据的最有效方法是什么?

获取数据时效率最重要,表格不会定期更新。

矩阵大约是 100.000 乘以 1000(将来可能会更大)

id1 价值 value_id1 id1 价值 value_id2 id2 价值 value_id1 id2 价值 value_id2 . . . 编号 100.000 价值 value_id1000 对比 value_id1, value_id2, value_id3 ... ID 1000 id1值值值 id2 值 值 值 id3 值 值 值 . . . 编号 100.000

当数据很大时,最有效的是短调用(mysql 查询)还是将数据存储为矩阵?数据会定期使用,因此必须高效地获取数据。

【问题讨论】:

是稀疏矩阵吗?在应用中细分它有意义吗? 矩阵的水平维度会保持一致吗?还是可能会缩小或增长? 水平尺寸可能会保持一致,它可能会在“升级”中更改,但不会定期更改! 细分对于应用来说不是一个好的选择,而且不是稀疏的,所有的列和行都被填充了。 你会做多少插入和更新?您的应用程序是否需要一次更新矩阵的单个元素或整行(水平或较短维度)?是否需要更新整列(更长的维度)? 【参考方案1】:

既然你说你想要获取效率,我会使用下表格式

 Column Row Value 
      1   1   1.2
      2   1   2.3
      ...

使用矩阵的列和行的格式和索引,您可以尽可能快地获取任何数据部分。

【讨论】:

您能详细说明一下并告诉我吗?它究竟是如何工作的?【参考方案2】:

这里有几个相关的问题:

BLOB vs. VARCHAR for storing arrays in a MySQL table How to represent a 2-D data matrix in a database

正如上面 Taesung 所建议的那样,稠密矩阵的答案似乎可以归结为一个包含列、行和值列的归一化表,或者执行一些操作,例如将原始矩阵中的单个行存储为 blob。

HDF5 看起来是为这种事情而生的。如果有经验的人可以进一步发表评论,那就太好了。

【讨论】:

以上是关于在 MySQL 中存储和访问庞大数据矩阵的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中对大输入实现矩阵的最有效方法?

在Python和MySQL中存储科学记数法的最有效方法

在MySQL中存储IP地址的最有效方法[重复]

SciPySparse稀疏矩阵主要存储格式总结(转载)

在多维数组和单个数组之间存储数据的最有效方法是啥?

在数据库中的一组记录上存储排序顺序的最有效方法是啥? [关闭]