用于物理测量的良好(noSQL?)数据库[​​关闭]

前端之家收集整理的这篇文章主要介绍了用于物理测量的良好(noSQL?)数据库[​​关闭]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在建立一个最终由数千个测量站组成的测量系统.每个站点将在其生命周期内节省大约5亿个测量值,包括30个标量值.这些将是浮动值.我们现在想知道如何在每个站点上保存这些数据,考虑到我们将在每个站点上构建一个Web应用程序

>我们希望在多个时间尺度上可视化数据(例如,一周,一个月,一年的测量)
>我们需要在数据上建立移动平均线(例如,一年内平均值显示在一年中的图表)
>数据库需要防撞(停电)
>我们只对数据进行写入和读取,不进行更新或删除

此外,我们还想要一台能够显示1000个测量站数据的服务器.这将是500亿次测量中约50TB的数据.为了将数据从测量站传输到服务器,我认为某种类型的数据库级复制将是一种干净而有效的方式.

现在我想知道nosql解决方案是否可能比MysqL更好用于这些目的.特别是couchDB,Cassandra以及像Redis这样的键值商店看起来很吸引我.您认为哪一种最适合“测量时间序列”数据模型?那么其他优势如崩溃安全和从测量站到主服务器的复制呢?

我认为CouchDB是一个很棒的数据库 – 但它处理大数据的能力值得怀疑. CouchDB的主要关注点是开发和离线复制的简单性,而不一定是性能或可伸缩性. CouchDB本身不支持分区,因此除非您使用BigCouch或发明自己的分区方案,否则您将受到最大节点大小的限制.

没有傻瓜,Redis是一个内存数据库.它可以非常快速有效地将数据输入和输出RAM.它确实能够使用磁盘进行存储,但它并不是非常好用.对于经常变化的大量数据非常有用. Redis确实有复制,但没有任何内置的分区支持,所以再次,你将独自在这里.

您还提到了Cassandra,我认为它更适用于您的用例. Cassandra非常适合无限增长的数据库,基本上它是原始用例.分区和可用性已经完成,因此您不必非常担心它.数据模型也比平均键/值存储更灵活,添加了第二维列,并且实际上可以容纳每行数百万列.例如,这允许时间序列数据被“划分”成覆盖时间范围的行.跨集群(分区)的数据分布是在行级别完成的,因此只需要一个节点来执行一行内的操作.

Hadoop直接插入Cassandra,具有MapReduce,Pig和Hive的“本机驱动程序”,因此它可能用于聚合收集的数据并实现运行平均值.最佳实践是围绕查询对数据进行整形,因此可能希望以“非规范化”形式存储数据的多个副本,每种类型的查询一个.

看看这篇关于在Cassandra做时间序列的帖子:

http://rubyscale.com/2011/basic-time-series-with-cassandra/

猜你在找的NoSQL相关文章