Cassandra 分区问题

Posted

技术标签:

【中文标题】Cassandra 分区问题【英文标题】:Cassandra partition problems 【发布时间】:2018-05-03 15:35:03 【问题描述】:

我正在使用具有数十亿条记录的 cassandra db,并且我想存储按日期分组的数据。问题是我应该为用户查询具有不同时区的记录,但它按 GMT 将数据存储在分区键中。为所有时区保存不同的日期字段并创建大量视图是否正确?这会将 db 扩展到巨大的大小。

【问题讨论】:

【参考方案1】:

我建议修改您的应用程序层以将用户的日期标准化为 GMT 并执行搜索,然后在检索后将日期转换回用户的时区。

但是要小心使用日期作为分区键 - 这可能会创建所谓的“热”分区,因为所有写入流量都将到达相同的分区并且不会在节点之间均匀分布。

【讨论】:

感谢您的回复。据我了解,数据在节点中按 GMT 进行物理分组,但我必须为不同的时区执行一些聚合功能。在应用程序中这样做会更好吗? 大多数聚合最好在应用程序中进行,例如在 Spark 中。 Cassandra 对聚合的支持有限。在某些情况下,您可以编写自己的聚合函数,这些函数将在 Cassandra 中执行,但您需要了解将添加到节点的额外负载。就像这里描述的:docs.datastax.com/en/cql/3.3/cql/cql_reference/…

以上是关于Cassandra 分区问题的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 表有多少个分区键?

Cassandra:最佳分区大小

Cassandra 数据建模分区键

Cassandra 分区问题

Cassandra 分区键部分丢失

cassandra 2.0.11 - 分区键的列数