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

Cassandra-基于时间范围的多个计数器,cassandra,datastax,Cassandra,Datastax,我正在构建一个应用程序,并使用Cassandra作为我的数据存储。在应用程序中,我需要跟踪每个用户、每个事件源的事件计数,并需要查询不同时间窗口的计数。例如,一些可能的查询可能是: 获取用户A上周的所有事件 获取昨天所有用户的所有事件,其中事件源为源S 获取上个月的所有事件 低延迟读取是我在这里最关心的问题。根据我的研究,我认为实现这一点的最佳方法是为源、用户和预定义时间的每个排列创建不同的计数器表。例如,创建一个count_by_source_和_user表,其中分区键是源ID和用户ID的

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

  • 获取用户A上周的所有事件
  • 获取昨天所有用户的所有事件,其中事件源为源S
  • 获取上个月的所有事件
低延迟读取是我在这里最关心的问题。根据我的研究,我认为实现这一点的最佳方法是为源、用户和预定义时间的每个排列创建不同的计数器表。例如,创建一个count_by_source_和_user表,其中分区键是源ID和用户ID的组合,然后仅为用户计数创建一个count_by_user表


这看起来很乱。做这件事的最好方法是什么,或者你能举出一些在Cassandra中建模这类问题的好例子吗

你说得对。如果延迟是您主要关心的问题,并且您已经选择了Cassandra,那么您需要为每个查询创建一个表。这是使用Cassandra的推荐方法:优化读取,不必担心冗余存储。由于每个表中的数据都是根据索引顺序存储的,因此不能以多种方式对表进行索引(就像使用关系数据库一样)。我希望这有帮助。寻找通常在“卡桑德拉日”活动中给出的“数据建模”演示。你可以在“卡桑德拉星球”或约翰·哈达德的博客上找到它