用于简单查询的Cassandra分区键

时间:2017-05-18 17:08:19

标签: cassandra cql

我正在尝试学习Cassandra,并对分区/群集密钥有疑问。

我有一个存储股票数据的表格,例如行业分支,过去6/12个月的表现,名称等。

表格如下:

cassandra table

-kurs代表当前股价
-perf12表示过去12个月的表现,而6表示最后6个月的表现 -branche是行业的一个分支。

现在我想尽可能高效地执行以下查询(性能):

-read / wright当前股价
- 计算同一业务部门内所有公司的平均股价。

您建议我使用哪种分区键?

非常感谢你们

1 个答案:

答案 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