请考虑以下情况:
我每小时(每次)测量一次值(从几个月到~10年的活动)
几个物种(1到10)
带多个仪器(1至5)
在几个测量点(~70)
每个站点都有几个采样级别(1到5)
每个值都有一个标志,指示它是否有效
考虑到数据库/文件/任何东西都应该用r可读写,我正在寻找存储这些数据的最快和最简单的方法。
注意:
一些实验包括长时间测量少数物种,单一仪器和采样水平,
一些实验包括对许多站点(大约70个站点)的几个月时间进行比较。
一些站点有许多采样级别和/或仪器(将进行比较)
存储系统必须是并行的可读(如果可能的话是可写的)
我到目前为止所做的:
mysql数据库,每个站点/物种有一个表,每个表包含以下列:时间、采样级别、仪器、值和标志。当然,随着网站数量的不断增长,表的数量也在不断增长。比较网站是痛苦的,因为它需要很多请求。而且,采样水平和仪器在表内重复了很多次,这种效率低下占用了空间。
netcdf文件:有趣的是它们存储多维数据的能力,它们很好地存储了一组数据,但不适合用于日常修改,也不太“可伸缩”。
druid是一个多维数据库管理系统,最初是面向“商业智能”的。这个原则是好的,但对我的申请来说太重太慢了。
因此,我正在寻找一个系统:
差不多要花同样的时间来检索
1个地点、1个物种、1个仪器、1个采样水平的100小时数据,或
10个地点、1个物种、1个仪器、1个采样水平的10小时数据,或
1个地点、2个物种、1个仪器、5个采样水平的10小时数据,或
等。
允许并行R/W
最小化从数据库中写入和读取的时间
最小化已用磁盘空间
允许轻松添加新站点、仪器或种类等。
与R一起工作
一个好的系统应该是一种超立方体,它允许所有维度上的复杂请求…

最佳答案

具有多列主键(或候选键)的关系数据库非常适合存储这种多维数据。根据您的描述,合适的主键应该是timespeciesinstrumentsitesampling_levelflag。似乎是值的属性,而不是键。此表应包含用于选择要检索的数据的所有列的索引。您可能需要其他表来存储物种、仪器和站点的描述或其他属性。主数据表中的每个表都有外键。

关于r - 如何存储多维数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46191897/

10-10 17:22
查看更多