Я пытаюсь хранить & извлекать данные в Кассандре следующим образом:таймсерий в Кассандре
Хранение данных: Я создал таблицу следующим образом:
CREATE TABLE mydata (
myKey TEXT,
datetime TIMESTAMP,
value TEXT,
PRIMARY KEY (myKey,datetime)
);
Где я бы сохранил ценность за каждую минуту за последние 5 лет. Таким образом, он хранит 1440 * 365 * 5 = 2628000 записей/столбцов на строку (myKey как строка).
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:01:00','72F');
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:02:00','72F');
INSERT INTO mydata(myKey, datetime, value) VALUES ('1234ABCD','2013-04-03 07:03:00','72F');
.................
Я могу хранить данные и все отлично. Тем не менее, я хотел бы знать, если это эффективный способ делать (хранить) данные по горизонтали (2628000 значений для каждого ключа для 1 миллиона таких ключей вообще)?
Получение данных:
После сохранения данных в формате выше, я могу выбрать данные с помощью простого запроса на выборку в течение периода. Ex:
SELECT *
FROM mydata
WHERE myKey='1234ABCD' AND datetime > '2013-04-03 07:01:00' AND datetime < '2013-04-03 07:04:00';
Запрос работает отлично, и я получаю результат, как и ожидалось.
Однако мой вопрос:
- Как я могу выбрать только те значения, в определенные промежутки времени. Например, если я запрашиваю данные за день, я получаю 1440 значений (1 за каждую минуту). Я хотел бы получать значения каждые 10 минут (значение на каждых 10-й минуте), ограничивая число. от значений до 144.
- Есть ли способ запросить таблицу, если мы используем вышеупомянутую стратегию хранения?
- Если нет, то каковы возможные варианты удовлетворения моих требований по запросам данных с определенным интервалом, например, 1 минута, 10 минут, 1 час, 1 день и т. Д.?
Оцените любые другие предложения.
не уверен, что я понимаю, что вы хотите запросить.вам нужны результаты от всего ключа за данный интервал? – Whitefret
Если я использую следующий запрос, я ожидаю 144 значения (значение каждые 10 минут) вместо 1440 (значение каждые 1 минута). Как я могу выполнить запрос или как моделировать? SELECT * FROM mydata WHERE myKey = '1234ABCD' AND datetime> '2013-04-03 07:01:00' И datetime <'2013-04-04 07:01:00'; Я запрашиваю 24 часа для определенного ключа. – Mohan
Вы ожидаете какого-либо диапазона или всего лишь десятую часть? – Whitefret