如何存储多维数据

时间:2017-09-13 07:53:39

标签: r database

请考虑以下情况:

  • 我每小时衡量一次价值(时间)(从几个月到十几年的广告系列)
  • 关闭几个物种(1到10)
  • 有几个乐器(1到5)
  • 在多个测量网站(~70)
  • 并且每个网站都有几个抽样级别(1到5)
  • 并且每个值都有一个标记,表明它是否有效

我正在寻找存储这些数据的最快和最简单的方法,考虑到数据库/文件/其他任何东西都应该可以用R读写。

请注意:

  • 一些实验包括长时间测量少数物种,单个仪器和采样水平,
  • 一些实验包括比较许多网站(~70)的相同的几个月时间框架
  • 有些网站有很多抽样水平和/或工具(将进行比较)
  • 存储系统必须是可读的(如果可能的话,可写)并行

到目前为止我尝试了什么:

  • MySQL数据库,每个站点/物种有1个表,每个表包含以下列:时间,采样级别,仪器,值和标志。当然,随着网站数量的增加,表的数量也在增长。比较网站是痛苦的,因为它需要很多请求。而且,采样水平和仪器在表内重复了很多时间,这无法占用空间。
  • NetCDF文件:它们存储多维数据的能力很有意义,它们很适合存储一组数据,但不适合用于日常修改,而且不能很好地扩展"。
  • 德鲁伊,一个多维数据库管理系统,最初是商业智能"-oriented。原则是好的,但对于我的应用来说,它很重,也很慢。

因此,我正在寻找一个系统:

  1. 或多或少地同时检索
    • 1个站点,1个物种,1个仪器,1个采样水平或
    • 的100小时数据
    • 10个站点,1个物种,1个仪器,1个采样水平或
    • 的10小时数据
    • 1个站点,2个物种,1个仪器,5个采样水平或
    • 的10小时数据
  2. 允许并行R / W
  3. 最大限度地缩短写入和读取数据库的时间
  4. 最小化已用磁盘空间
  5. 允许轻松添加新网站,仪器或物种等。
  6. 与R
  7. 合作

    一个好的系统将是一种超立方体,允许在所有维度上进行复杂的请求......

1 个答案:

答案 0 :(得分:1)

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