如何在cassandra按日期计数?

时间:2015-01-23 21:17:31

标签: cassandra-2.0

我想要一个按日期分配计数器的密钥空间。我一直在阅读文档,它说计数器列不能存在于时间戳旁边。有没有办法实现这个目标?

想要拥有的一个例子是:

material(text)  views(counter)    date(timestamp)
"phones"             234            2015-01-22
"tablets"             55            2015-01-22
"phones"              20            2015-01-21
"tablets"             50            2015-01-21

一种方法是将日期设为文本或长文,但这会阻止我从“拉斯周”获得“所有视图”。我正在寻找你的经历:)

我正在使用Cassandra 2.0.11 | CQL规范3.1.1

1 个答案:

答案 0 :(得分:1)

您可以将计数器与其他列结合使用,前提是其他列是分区键或聚类键的一部分(即计数器是唯一的值)。

在您的情况下,由于您希望按日期过滤,因此一种好方法是将material设置为分区键,将date设置为群集键,将views设置为您的值。

使用日期作为聚类键,您可以按日期顺序依次订购计数器。这将允许您过滤上周。

这种架构的一个例子是:

CREATE TABLE views (
    material text,
    date timestamp,
    views counter,
    PRIMARY KEY(material, date)
) WITH CLUSTERING ORDER BY (date DESC);