如何在 cassandra 中按日期设置计数器?

How to have counters by date in cassandra?

我想要一个带有按日期分布的计数器的键空间。我一直在阅读文档,它说计数器列不能在时间戳旁边存在。有什么办法可以达到这个目的吗?

一个想要的例子是:

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

一种方法是将日期设置为文本或长日期,但这会阻止我获得 "all views from las week"。我正在寻找您的经验:)

我使用的是 Cassandra 2.0.11 | CQL 规范 3.1.1

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

在你的情况下,因为你想按日期过滤,一个好的方法是将 material 设置为分区键,date 作为聚类键,views 作为你的值。

通过使用日期作为聚类键,您可以按日期倒序排列计数器。这将允许您过滤上周的数据。

这种模式的一个例子是:

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