Cassandra:带有时间戳和大型数据集的表格设计

时间:2017-01-25 16:20:28

标签: database-design cassandra timestamp cql

我在一天内查询大量数据时遇到问题。我正在寻找有关创建高效表模式的建议。

表:eventlog

柱: recordid(UUID),insertedtimestamp(timestamp),source(Text),event(Text)

如果我只是这样做:

CREATE TABLE eventlog (
    recordid uuid PRIMARY KEY,
    insertedtimestamp timestamp,
    source text,
    event text
); 

然后,下面的查询将被数据量所淹没,假设今天是1/25。

select * from eventlog where insertedtimestamp > '2017-01-25';

目标是从一天中选择所有记录,知道我们需要使用可能有数百万条记录的表进行分区。我如何设计有效的表模式(什么分区键设置)?谢谢。

1 个答案:

答案 0 :(得分:3)

虽然您希望在一天内获得所有记录,但您可以使用此架构

CREATE TABLE eventlog (
    day int,
    month int,
    year int,
    recordid uuid,
    insertedtimestamp timestamp,
    source text,
    event text,
    PRIMARY KEY((day,month,year),recordid)
); 

因此,一天内的所有数据都将在一个节点中。现在,您可以使用以下查询更有效地获取日期数据,如2017-01-25

SELECT* FROM eventlog WHERE day = 25 and month = 1 and year = 2017