Mongodb 存储和查询大型气象数据集的更好方法是什么

Mongodb 存储和查询大型气象数据集的更好方法是什么,mongodb,hadoop,hdf5,pytables,Mongodb,Hadoop,Hdf5,Pytables,我正在寻找一种方便的方法来存储和查询大量的气象数据(很少TB)。关于问题中间的数据类型的更多信息。< /P> 以前我一直在寻找MongoDB的发展方向(我以前的很多项目都使用它,并且感觉处理起来很舒服),但最近我发现了数据格式。通过阅读,我发现了与Mongo的一些相似之处: HDF5简化了文件结构,只包含两种主要类型的 对象:数据集,是同质数据集的多维数组 类型组,它是可以保存数据集的容器结构 和其他组一样,这会产生一个真正的层次结构,类似于文件系统 数据格式。元数据以用户定义的形式存储,命名为

我正在寻找一种方便的方法来存储和查询大量的气象数据(很少TB)。关于问题中间的数据类型的更多信息。< /P> 以前我一直在寻找MongoDB的发展方向(我以前的很多项目都使用它,并且感觉处理起来很舒服),但最近我发现了数据格式。通过阅读,我发现了与Mongo的一些相似之处:

HDF5简化了文件结构,只包含两种主要类型的 对象:数据集,是同质数据集的多维数组 类型组,它是可以保存数据集的容器结构 和其他组一样,这会产生一个真正的层次结构,类似于文件系统 数据格式。元数据以用户定义的形式存储,命名为 附加到组和数据集的属性

它看起来像Mongo中的数组和嵌入对象,并且支持查询数据的索引

因为HDF5使用B树来索引表对象,所以它可以很好地用于 时间序列数据,如股票价格序列、网络监控数据、, 三维气象数据

数据:

特定区域被划分为更小的正方形。在每个传感器的交叉点上(一个点)

该传感器每X分钟收集一次以下信息:

  • 太阳光度
  • 风向和风速
  • 湿度
  • 以此类推(这些信息基本相同,有时传感器无法收集所有信息)
它还收集不同高度(0米、10米、25米)的数据。高度并不总是一样的。此外,每个传感器都有某种元信息:

  • 名字
  • 液化天然气
  • 它是在水里,还是在其他很多地方
因此,我不希望一个元素的大小超过1Mb。 此外,我在一个地方有足够的存储空间来保存所有数据(据我所知,不需要分片)

对数据的操作。 我有几种与数据交互的方式:

  • 转换为存储大量数据:在某个时间点,会给我提供很少TB的数据,我需要存储它们(转换为HDF5相对容易)。然后,定期提供较小的数据部分(每周1 Gb),我必须将它们添加到存储中。要强调的是:我有足够的存储空间将所有这些数据保存在一台机器上

  • 查询数据。通常需要实时查询数据。最常见的查询是:告诉我特定时间特定区域传感器的温度,显示特定时间特定传感器的数据,显示给定时间范围内某个区域的风。聚合查询(过去两个月的平均温度是多少)不太可能。在这里,我认为Mongo非常适合,但hdf5+是一种替代方案

  • 进行一些统计分析。目前我不知道它到底是什么,但我知道这不应该是实时的。因此,我认为将hadoop与mongo结合使用可能是一个不错的主意,但将hdf5与结合使用是一个合理的选择

我知道关于更好方法的问题不受鼓励,但我正在寻求有经验用户的建议。如果您有任何问题,我很乐意回答,并感谢您的帮助


另外,我回顾了一些有趣的讨论,与我的讨论类似:,

这是一个很难回答的问题,我不确定是否能给出明确的答案,但我对HDF5/pyTables和一些NoSQL数据库都有经验。
以下是一些想法

  • HDF5本身没有索引的概念。它只是一种适合多维数字数据的分层存储格式。可以在HDF5之上扩展以实现数据的索引(即PyTables)
  • HDF5(除非您使用的是MPI版本)不支持并发写访问(可以进行读访问)
  • HDF5支持压缩过滤器,与流行的观点不同,压缩过滤器可以使数据访问速度更快(但是,您必须考虑适当的块大小,这取决于您访问数据的方式)
  • HDF5没有数据库。MongoDB具有酸性属性,而HDF5没有(可能很重要)
  • 有一个包()结合了Hadoop和HDF5
  • HDF5使核心计算相对容易(即,如果数据太大而无法装入内存)
  • PyTables支持在HDF5中直接使用
我认为您的数据通常非常适合存储在HDF5中。您还可以在
R
或通过
Numpy/Scipy
进行统计分析

但你也可以考虑一辆Hybrid aproach。将原始大容量数据存储在HDF5中,并将MongoDB用于元数据或缓存常用的特定值。

如果将NetCDF/HDF5加载到此阵列数据库对您来说不是问题,您可以尝试SciDB。请注意,如果数据集非常大,则数据加载阶段将非常耗时。恐怕这是所有数据库的问题。无论如何,SciDB还提供了一个R包,它应该能够支持您需要的分析

或者,如果要执行查询而不将HDF5转换为其他内容,可以在此处使用产品: 此外,如果您想高效地执行选择查询,应该使用索引;如果要实时执行聚合查询(以秒为单位),可以考虑近似聚合。我们集团开发了一些产品来支持这些功能

在统计分析方面,我认为答案取决于你分析的复杂性。如果你只需要计算像en这样的东西