Chr*_*ris 6 database replication couchdb nosql key-value-store
我们正在建立一个最终由数千个测量站组成的测量系统.每个站点将在其生命周期内节省大约5亿个测量值,包括30个标量值.这些将是浮动值.我们现在想知道如何在每个站点上保存这些数据,考虑到我们将在每个站点上构建一个Web应用程序
此外,我们还想要一台能够显示1000个测量站数据的服务器.这将是500亿次测量中约50TB的数据.为了将数据从测量站传输到服务器,我认为某种类型的数据库级复制将是一种干净而有效的方式.
现在我想知道noSQL解决方案是否可能比mySQL更好用于这些目的.特别是couchDB,Cassandra以及像Redis这样的键值商店看起来很吸引我.您认为哪一种最适合"测量时间序列"数据模型?那么其他优势如崩溃安全和从测量站到主服务器的复制呢?
小智 3
我认为 CouchDB 是一个很棒的数据库——但它处理大数据的能力值得怀疑。CouchDB 的主要关注点是开发的简单性和离线复制,而不一定是性能或可扩展性。CouchDB 本身不支持分区,因此除非您使用 BigCouch 或发明自己的分区方案,否则您将受到最大节点大小的限制。
别傻了,Redis 是一个内存数据库。它在将数据移入和移出 RAM 方面非常快速且高效。它确实具有使用磁盘进行存储的能力,但它并不是很擅长。它非常适合经常更改的有限数量的数据。Redis 确实具有复制功能,但没有任何内置的分区支持,因此,您将只能依靠自己。
您还提到了 Cassandra,我认为它更适合您的用例。Cassandra 非常适合无限增长的数据库,本质上是它的原始用例。分区和可用性已内置,因此您不必太担心。该数据模型也比一般的键/值存储更加灵活,添加了列的第二个维度,并且实际上每行可以容纳数百万列。例如,这允许将时间序列数据“存储”到覆盖时间范围的行中。整个集群中的数据分布(分区)是在行级别完成的,因此只需要一个节点来执行一行内的操作。
Hadoop 可直接插入 Cassandra,并带有 MapReduce、Pig 和 Hive 的“本机驱动程序”,因此它有可能用于聚合收集的数据并具体化运行平均值。最佳实践是围绕查询塑造数据,因此可能希望以“非规范化”形式存储数据的多个副本,每种查询类型一个副本。
查看这篇关于在 Cassandra 中进行时间序列的文章:
http://rubyscale.com/2011/basic-time-series-with-cassandra/
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |