Чтобы делать запросы диапазона, вам нужно иметь этот столбец в качестве столбца кластеризации.
В этом случае это будет эффективно, потому что столбцы кластеризации хранятся отсортированными. Если вы хотите искать данные, вам нужно указать ключ раздела.
Итак, в качестве примера, где я использую device_id в качестве ключа раздела:
CREATE TABLE IF NOT EXISTS mykeyspace.device_data (
DEVICE_ID text,
HOURLYTIME TIMESTAMP,
FULLTIME TIMESTAMP,
DATA TEXT,
PRIMARY KEY (DEVICE_ID, HOURLYTIME, FULLTIME)
);
INSERT INTO mykeyspace.device_data (device_id, hourlytime, fulltime, data)
values('Spam machine', '2014-12-12 00:01:00','2014-12-12 00:00:01','Hello World1');
INSERT INTO mykeyspace.device_data (device_id, hourlytime, fulltime, data)
values('Spam machine', '2014-12-12 00:02:00','2014-12-12 00:00:02','Hello World2');
INSERT INTO mykeyspace.device_data (device_id, hourlytime, fulltime, data)
values('Spam machine', '2014-12-12 00:03:00','2014-12-12 00:00:03','Hello World3');
-- Effective range query
SELECT * FROM mykeyspace.device_data
WHERE device_id = 'Spam machine'
AND hourlytime > '2014-12-12 00:00:00'
AND hourlytime < '2014-12-12 00:02:00';
Или другой пример, где я разбиваю данные по дням (что приведет к хорошему распределению данных по кластеру) и выполняю запросы диапазона:
CREATE TABLE IF NOT EXISTS mykeyspace.day_data (
DAYTIME timestamp,
HOURLYTIME TIMESTAMP,
FULLTIME TIMESTAMP,
DATA TEXT,
PRIMARY KEY (DAYTIME, HOURLYTIME, FULLTIME)
);
INSERT INTO mykeyspace.day_data (DAYTIME, hourlytime, fulltime, data)
values('2014-12-12', '2014-12-12 00:01:00','2014-12-12 00:00:01','Hello World1');
INSERT INTO mykeyspace.day_data (DAYTIME, hourlytime, fulltime, data)
values('2014-12-12', '2014-12-12 00:02:00','2014-12-12 00:00:02','Hello World2');
INSERT INTO mykeyspace.day_data (DAYTIME, hourlytime, fulltime, data)
values('2014-12-12', '2014-12-12 00:03:00','2014-12-12 00:00:03','Hello World3');
SELECT * FROM mykeyspace.day_data
WHERE daytime = '2014-12-12'
AND hourlytime > '2014-12-12 00:00:00'
AND hourlytime < '2014-12-12 00:02:00';
На PlanetCassandra есть очень полезная статья о данных временных рядов.
person
Raman Yelianevich
schedule
14.01.2015