A Система управления реляционными потоками данных (RDSMS) представляет собой распределенную систему управления потоками данных в памяти (DSMS), который предназначен для использования совместимых со стандартами запросов SQL для обработки потоков неструктурированных и структурированных данных в реальном времени. В отличие от запросов SQL, выполняемых в традиционной СУБД, которые возвращают результата и выхода, SQL-запросы, выполняемые в RDSMS, не завершаются, генерируя результаты непрерывно по мере появления новых данных. Непрерывные SQL-запросы в RDSMS используют функцию окна SQL для анализа, объединения и агрегирования потоков данных по фиксированным или раздвижные окна. Окна можно указать как по времени, так и по строкам.
Непрерывные SQL-запросы в RDSMS соответствуют стандартам ANSI SQL. Наиболее распространенный SQL-запрос RDSMS выполняется с помощью декларативного оператора SELECT
. Непрерывный SQL SELECT
работает с данными в одном или нескольких потоках данных с необязательными ключевыми словами и предложениями, которые включают FROM
с необязательным подпунктом JOIN
, чтобы указать правила для объединение нескольких потоков данных, предложение WHERE
и предикат сравнения для ограничения записей, возвращаемых запросом, GROUP BY
для проецирования потоков с общими значениями в меньший набор, HAVING
для фильтрации записей, полученных в результате GROUP BY
, и ORDER BY
для сортировки результатов.
Ниже приведен пример агрегирования непрерывного потока данных с использованием запроса SELECT
, который объединяет поток датчиков от станции мониторинга погоды. Запрос SELECT
объединяет минимальные, максимальные и средние значения температуры за период времени в одну секунду, возвращая непрерывный поток агрегированных результатов с интервалом в одну секунду.
ВЫБРАТЬ ПОТОК ПОТОКА (WEATHERSTREAM.ROWTIME до SECOND) AS FLOOR_SECOND, MIN (TEMP) AS MIN_TEMP, MAX (TEMP) AS MAX_TEMP, AVG (TEMP) AS AVG_TEMP FROM WEATHERSTREAM GROUP BY FLOOR (WEATHERSTREAM GROUP BY FLOOR (WEATHERSTREAM GROUP BY FLOOR)
SQL-запросы RDSMS также работают с потоками данных во времени или окнами на основе строк. В следующем примере показан второй непрерывный SQL-запрос с использованием предложения WINDOW
с длительностью в одну секунду. Предложение WINDOW
изменяет поведение запроса, выводя результат для каждой новой записи по мере ее поступления. Следовательно, на выходе получается поток постепенно обновляемых результатов с нулевой задержкой результата.
ВЫБРАТЬ ВРЕМЯ ПОТОКА, МИН (ТЕМП.) ВЫШЕ W1, КАК WMIN_TEMP, МАКС. (ТЕМП.) ВЫШЕ W1, КАК WMAX_TEMP, СРЕДН. (ТЕМП.) ВЫШЕ W1, КАК WAVG_TEMP ИЗ WEATHERSTREAM WINDOW W1, КАК (ИНТЕРВАЛ ДИАПАЗОНА '1' СЕКУНДА)