當前,我們有下表,它使我們能夠根據日期執行查詢。正在從頭開始創建一個新表,以支持新查詢在cassandra中的一個通用實踐
CREATE TABLE events_by_day(
...
traffic_type text,
device_class text,
country text,
...
yyyymmdd text,
event_type text,
the_datetime timeuuid,
PRIMARY KEY((yyyymmdd, event_type), the_datetime));
create index index_country on events (country);
create index index_traffic_type on events (traffic_type);
create index index_device_class on events (device_class);
正在支持以下查詢。
select * from events where yymmdd = '20160303' and event_type in ('view');
select * from events where yymmdd = '20160303' and event_type in ('lead', 'view', 'sales');
select * from events where yymmdd = '20160303' and event_type = 'lead' and country = 'my' and device_class = 'smart' and traffic_type = 'WEB' ALLOW FILTERING;
當我們需要超過一天的數據時,我們將多次執行查詢。說,我需要「查看」2016年3月1日至2016年3月3日的數據,我會查詢3次。
select * from events where yymmdd = '20160301' and event_type in ('view');
select * from events where yymmdd = '20160302' and event_type in ('view');
select * from events where yymmdd = '20160303' and event_type in ('view');
目前,所有這些都符合我們的要求。
然而,在未來,讓我們說我們有一個新的要求,我們需要「視圖」的數據,從2013年至2016年
而不是查詢它1460倍(365天×4年),它是一個我們通常的做法是創建一個全新的空表像
CREATE TABLE events_by_year(
...
traffic_type text,
device_class text,
country text,
...
yyyy text,
event_type text,
the_datetime timeuuid,
PRIMARY KEY((yyyy, event_type), the_datetime));
,然後用大量的數據從events_by_day
填補數據(這可能需要幾天的時間才能完成插入爲events_by_day
表已經有許多行)?
感謝您提及「爲性能交易磁盤空間」。 –