另一种cassandra数据建模方法

rpppsulh  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(381)

我已经阅读了关于这个主题的各种资料,并且理解了围绕所需查询进行建模的想法,但是我想知道这对于cassandra来说可以延伸到什么程度。
如果与传统数据仓库相关,则需要存储同时包含度量和维度数据的处理事件。数据的格式类似于
日志\时间戳(timestamp):用户\ id(文本):度量值\ 1(num):度量值\ 2(num):度量值\ 3(num):分帐\ 1(文本):分帐\ 2(文本):。。。尺寸(文本)
其中可能有10个或更多dim数据项。我想模拟的查询包括:
按时间(分钟/小时/天/周/月/年)和度量值聚合的用户id
用户id按单个dim按时间和度量聚合
单个dim按时间测量聚合
一些维度字段形成了一个自然的层次结构,因此我希望上面的查询也包含多个dim字段。
在开始创建大量离散列族以尝试覆盖排列之前,我想知道是否有人可以推荐一种更好的方法,例如使用一个cf来表示dim数据,其中一个列标识dim的类型,另一个列标识值,以及使用层次类型和成员尺寸和值。
或者,什么样的模型可以将数据存储在一个相对细粒度的级别上,这样就可以将数据读回聚合工具,例如hive或spark(看起来非常有趣)。
谢谢。

5rgfhyps

5rgfhyps1#

假设您希望能够按周查询聚合数据。您可以使用以下数据结构。

Column Family = day
Row Key: Date = day_identifier (e.g., time at beginning of some day this week)
Column Name: Date = timestamp, Long = field_ordinal
Column Value: field value

Column Family = week
Row Key: Date = week_identifier (e.g., time at beginning of first day of a week)
Column Name: Date = timestamp, Long = field_ordinal
Column Value: field value

在每周结束时,您将获取day列族中的条目,并将它们聚合到week列族中的条目中。然后,如果数据对您不再有用,您可以每天删除这些数据。
这个概念允许您存储更少的数据,但是您仍然可以完成很多工作。例如,如果要查询一个月内聚合的数据,只需访问该月的所有周。或者,您也可以使用相同的概念来汇总整个月份的数据。
祝你好运。

相关问题