从CQL获取x秒的所有数据?

时间:2013-12-12 22:22:54

标签: database cassandra timestamp cql

下面是我的CQL表 -

CREATE TABLE test1 (
  id text,
  record_name text,
  record_value blob,
  PRIMARY KEY (id, record_name)
)

这里id列将包含这样的数据 -

timestamp.count

此处时间戳以毫秒为单位,但四舍五入到最接近的秒数。举个例子,id column中的数据就像这样 -

1386882930000.1

上表中的一行将是这样的 -

1386882930000.1 | event_name | hello-world

现在我的问题是 -

是否可以使用id列获取最近5秒或10秒或30秒的所有数据?

我正在运行Cassandra 1.2.9

1 个答案:

答案 0 :(得分:0)

不适用于ID列(假设您使用的是随机分区程序(您应该使用)。您可以按时间查询,但是您需要修改数据模型以支持它。

CREATE TABLE test1 (
  source text,
  event_time timestamp,
  record_name text,
  record_value blob,
  PRIMARY KEY (id, event_time, record_name))

请注意,具有相同源的所有内容都将位于同一行中(因此您应该有多个源),并且该行中的所有内容都将按event_time排序,然后是record_name。我也使用了时间戳类型,这样我就不会遇到词法排序的问题,但是如果你有一个与词汇排序兼容的日期/时间格式,你可能会很好。

CQL3 Reference