我对cassandra比较陌生,不得不为监控工具评估不同的NoSQL-Solutions。 一个数据只有大约100字节,但实际上有很多。在一天中,我们获得了大约1500万条记录...... 所以我目前正在测试9亿条记录(大约15GB作为SQL插入脚本)
我的第一个问题是: 卡桑德拉适合我的需求吗?我需要进行范围查询(在创建记录的日期),并根据存储在基准中的“二级索引”定义的组总结一些列。)
我已经尝试过MongoDB,但是MapReduce确实很差,这真的很糟糕...... 我也读过关于HBase的内容,但是它所需的大量配置让我希望Cassandra可以有解决方案......
第二个问题是:如何以上述方式存储我的数据以访问它? 我已经想到了一个超级列系列,其中关键是日期(自1970年以来),并且列将是当时采用的基准...但如果我使用随机分区器,我无法进行快速范围查询(据我所知)如果我使用Order Preserving Partitioner,数据将不会分布在我的集群上(目前由两个节点组成)。
我希望我能给你所有必要的信息...... 谢谢你的帮助!
和j
答案 0 :(得分:3)
听起来像Brisk(Cassandra + Hadoop发行版)的工作。完整的Hadoop map / reduce包括Hive支持,几乎不需要配置。
答案 1 :(得分:0)
我们有类似的情况。
我们将数据存储在简单的行中,其中行键的格式为<id>:<time-bucket>
。我们当前的时间桶大小是24小时。该列是时间戳,该值是使用msgpack
序列化的小对象。
如果需要,我们会手动进行聚合。
我们还做了一个小优化:当存储桶已满时,它变为不可变,因此我们创建一个“all”对象,将所有值保存在一列中。然后可以清除每个时间戳列。这允许我们获取整个存储桶并在O(1)中反序列化它而不是扫描该行。