我正在考虑创建一个Cassandra时间序列数据库,用于存储数百万个可能总共高达100B数据点的日常数据系列。
我看了这篇文章: http://rubyscale.com/blog/2011/03/06/basic-time-series-with-cassandra/
这种设计非常完美。基本上我可以将每日时间戳作为列,如果需要,可以通过将日期附加到行来对列进行分片。
我有两个问题:
答案 0 :(得分:4)
如果您要管理大量的写入操作,那么您的方法就会出现问题。
始终写入1键意味着该键的所有写入将转到一个节点。基本上,您每天将从群集中使用一个节点,因此您可能拥有一个巨大的Cassandra实例,而不是费心设置群集。 如果您的写入频率非常高,您可能会关闭负责当天/密钥的节点。
我的建议是将一天分成多行同时使用。时间段可能是危险的,因为在一个桶中的突然激增可能会导致一切下降。
您可以像这样创建您的存储桶(行键):
有很多方法可以做到这一点。您还可以使用保存列的某些元素来执行此操作。 但我认为这样做是非常重要的,以便始终利用整个cassandra集群。
我的回答仅对Write heavy应用程序/功能有效,因为您必须使用multi_get(多行全行读取)来读取所有数据并重新构建当天的整个时间线。