Post on 30-Jul-2015
Базы данных временных рядов и средства
обработки
Дмитрий Намиот ВМК МГУ имени М.В. ЛомоносоваЛаборатория Открытых Информационных Технологий dnamiot@gmail.com
Москва 2015
• Особенности представления и обработки временных рядов
• Временные ряды и реляционные базы данных
• Расширения SQL для работы с временными рядами
• NoSQL и временные ряды
Содержание
Представление временных рядов
• Классическое определение – последовательность данных
• Характерные области: M2M, IoT
• Однородные данные
• INSERT (добавление данных) – как превалирующая операция
Временные ряды - window• В большинстве случаев, обрабатывается
только фрагмент временного ряда (окно)
Реляционная модель - простое представление
T A1 A2 A3 … … An
1 X NULL X NULL NULL NUL
2 X X NULL X X X
5 X X X X X NULL
7 NULL X X X X X
9 X X X X NULL NULL
Реляционная модель – компактное представление
T MEASUREMENTS
1 { “A1”: VALUE1, “A3”:VALUE3 … }
5 { “A2”: VALUE2, “A3”:VALUE3 … }
7 { “A5”: VALUE5, “A6”:VALUE6, “A7”:VALUE7 … }
9 { “A1”: VALUE1, “A2”:VALUE2 … }
Реляционная модель: data engine
SQL – расширения: Vertica
SELECT item, slice_time, ts_first_value(price, 'const') price FROM ts_test WHERE price_time BETWEEN timestamp '2015-04-01 07:00' AND timestamp '2015-04-01 07:30' TIMESERIES slice_time AS '1 minute' OVER (PARTITION BY item ORDER BY price_time) ORDER BY item, slice_time, price;
SQL расширения: window functions
SELECT id_sensor, name_sensor, temperature, avg(temperature) OVER (ORDER BY id_sensor ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)FROM temperature_table;
NoSQL и временные ряды
Cassandra
SenML
<?xml version="1.0" encoding="UTF-8"?> <senml xmlns="urn:ietf:params:xml:ns:senml" bn="urn:dev:ow:10e2073a01080063" > <e n="voltage" t="0" v="120.1" u="V" /> <e n="current" t="0" v="1.2" u="A" /> </senml>
Lambda Architecture
Выбор модели
• Три V больших данных: Volume, Velocity, Variety
• Определяющий фактор для выбора механизма хранения временных рядов: Velocity