Cassandra - 基于时间范围的多个计数器

Cassandra - multiple counters based on timeframe

我正在构建一个应用程序并使用 Cassandra 作为我的数据存储。在应用程序中,我需要跟踪每个用户、每个事件源的事件计数,并且需要查询不同 windows 时间的计数。例如,一些可能的查询可能是:

低延迟读取是我最关心的问题。根据我的研究,我能想到的最好的实现方式是为源、用户和预定义时间的每个排列使用不同的计数器 tables。例如,创建一个 count_by_source_and_user table,其中分区键是源 ID 和用户 ID 的组合,然后只为用户计数创建一个 count_by_user table。

这看起来很乱。执行此操作的最佳方法是什么,或者您能否指出一些在 Cassandra 中对这些类型的问题进行建模的好例子?

你是对的。如果延迟是您主要关心的问题,并且如果您已经选择了 Cassandra,那么您应该为每个查询创建一个 table。这是使用 Cassandra 的推荐方式:优化读取,不用担心冗余存储。并且由于每个 table 数据是根据索引顺序存储的,因此您不能以多种方式对 table 进行索引(就像使用关系数据库一样)。我希望这有帮助。查找通常在 "Cassandra Day" 事件中给出的 "Data Modeling" 演示文稿。您可以在 "Planet Cassandra" 或 John Haddad 的博客上找到它。