我正在尝试学习Cassandra,并对分区/群集密钥有疑问。
我有一个存储股票数据的表格,例如行业分支,过去6/12个月的表现,名称等。
表格如下:
-kurs代表当前股价
-perf12表示过去12个月的表现,而6表示最后6个月的表现
-branche是行业的一个分支。
现在我想尽可能高效地执行以下查询(性能):
-read / wright当前股价
- 计算同一业务部门内所有公司的平均股价。
您建议我使用哪种分区键?
非常感谢你们
答案 0 :(得分:1)
这取决于您提出请求的信息。如果您知道公司的分支和名称,则可以将主键:branch作为分区键,将name命名为clustering key。
primary key ((branch), name)
这样你可以用:
进行第一次查询select kurs from table where branch =? and name =?;
和第二个你只能指定分区键并创建一个aggreagate函数来返回平均值:
select avg(kurs) from table where branch = ?
或以您的客户代码计算。
查看Creating User-Defined Aggregate Function (UDA)和Cassandra Aggregates - min, max, avg, group