我在一天内查询大量数据时遇到问题。我正在寻找有关创建高效表模式的建议。
表: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';
目标是从一天中选择所有记录,知道我们需要使用可能有数百万条记录的表进行分区。我如何设计有效的表模式(什么分区键设置)?谢谢。
答案 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