在Cassandra中,每行存储86k超级列(每个列有1-10个小列)是一个好主意吗?

在Cassandra中,每行存储86k超级列(每个列有1-10个小列)是一个好主意吗?,cassandra,time-series,super-columns,Cassandra,Time Series,Super Columns,tldr:90000个超级列(每行1到10列)是否过多?1500美元怎么样?列值每个约为6字节。 完整问题: 我正在研究时间序列数据的各种数据存储。Cassandra和HBase等面向列的数据库看起来非常适合 要求以(至少)1分钟的间隔存储数百万系列数据。理想情况下,如果业务需要,我们将能够支持1秒的间隔(他们可能会这样做) 这篇文章中提供的建议以及作者使用的建议非常有意义 基本上,键是连接到一天中第一个时间戳的序列id,为一天中的每个度量创建列。这大约是每行86400列 然而,数据的不变性/版

tldr:90000个超级列(每行1到10列)是否过多?1500美元怎么样?列值每个约为6字节。

完整问题

我正在研究时间序列数据的各种数据存储。Cassandra和HBase等面向列的数据库看起来非常适合

要求以(至少)1分钟的间隔存储数百万系列数据。理想情况下,如果业务需要,我们将能够支持1秒的间隔(他们可能会这样做)

这篇文章中提供的建议以及作者使用的建议非常有意义

基本上,键是连接到一天中第一个时间戳的序列id,为一天中的每个度量创建列。这大约是每行86400列

然而,数据的不变性/版本控制非常重要。业务需要决定更新序列值的能力,同时保留数据的完整历史记录

探索Cassandra的超级列以提供另一个维度,以便在86400个超级列中对值结果进行版本化。当第一次创建值时,每个超级列将包含一个列(可能是一个TimeUUID),然后在每个“更新”中添加一个以上的列。定期更新序列和值的有限子集。在理想情况下,不会有更新。理想情况下,这意味着每个超级列没有大量数据要加载,大多数访问将仅限于最新的值

回到问题上来:


我是否希望每行使用那么多(86k)超级列?保守地使用100K超级列和每行100MB的1K超级列,这在Cassandra能够处理的范围内


你应该考虑的另一个因素是,你有多少行。“一大行”是一个糟糕的数据模型,因为行是分区的单位。只要您的行数比节点数多,就可以了。

谢谢,我们会有很多行,但我必须进一步研究访问模式,以确定通常一次访问或写入多少行。我还将调查复合列,看看这是否是更好的匹配。