tldr:在一行中有 1 到 10 列的约 90,000 个超级列是否太多?1500 左右怎么样?列值每个约为 6 个字节。
完整的问题:
我正在研究时间序列数据的各种数据存储。Cassandra 和 HBase 等面向列的数据库看起来非常适合。
要求是以(最小)1 分钟间隔存储数百万个数据系列。理想情况下,如果业务需要,我们将能够支持 1 秒的间隔(他们可能会这样做)。
本质上,键是与当天的第一个时间戳连接的系列 ID,为当天的每个测量创建列。也就是每行大约 86400 列。
然而,数据的不变性/版本控制非常重要。业务需求决定了在保留数据完整历史记录的同时更新系列值的能力。
探索 Cassandra 的超级列以提供另一个维度以对值进行版本化,从而产生 86400 个超级列。然后,每个超级列将在第一次创建值时包含一列(可能是 TimeUUID),然后在每次“更新”时再添加一列。将定期更新有限的系列和值子集。在理想条件下不会有更新。理想情况下,这意味着每个超级列都不需要加载大量数据,并且大多数访问将仅访问最近的值。
所以回到这个问题:
每行使用那么多(86k)超级列是否存在性能损失或问题?