Главная
Новости
Строительство
Ремонт
Дизайн и интерьер
Ландшафтный дизайн
Все про мебель
Сантехника




16.09.2022


15.07.2022


19.05.2022


11.03.2022


04.02.2022











Система управления реляционным потоком данных

10.08.2022

Система управления реляционными потоками данных (англ. — relational data stream management system (RDSMS)) — это распределенная система управления потоками данных в памяти (data stream management system (DSMS)) которая предназначена для использования SQL-запросов, совместимых со стандартами, для обработки неструктурированных и структурированных потоков данных в режиме реального времени. В отличие от SQL-запросов выполняемых в традиционной RDBMS, которые возвращают результат и завершают работу, SQL-запросы, выполняемые в RDSMS, не завершаются, генерируя результаты непрерывно по мере поступления новых данных. Непрерывные SQL-запросы в RDSMS используют функцию SQL Window для анализа, соединения и агрегации потоков данных по фиксированным или скользящим окнам.

Примеры запросов RDSMS SQL

Непрерывные SQL-запросы в RDSMS соответствуют стандартам ANSI SQL. Наиболее распространенный RDSMS SQL-запрос выполняется с помощью декларативной инструкции SELECT. Непрерывный запрос SELECT работает с данными через один или несколько потоков данных с необязательными ключевыми словами и предложениями, которые включают FROM с дополнительным подвыражением JOIN, что бы указать правила для объединения нескольких потоков данных, предложение WHERE и предикат сравнения для ограничения записей, возвращаемых в запросе, GROUP BY для проецирования , HAVING для фильтрации записей в результате GROUP BY и ORDER BY для сортировки результатов.

Ниже приведен пример агрегации непрерывного потока данных с использованием запроса SELECT, который объединяет поток датчиков от метеорологической станции. SELECT запрос агрегирует минимальные, максимальные и средние значения температуры за один период времени, возвращая непрерывный поток агрегированных результатов с интервалом в одну секунду.

SELECT STREAM FLOOR(WEATHERSTREAM.ROWTIME to 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.ROWTIME TO SECOND);

SQL-запросы RDSMS также работают с потоками данных с течением времени или с окнами на основе строк. В приведенном примере показан второй непрерывный SQL-запрос с использованием предложения WINDOW с длительностью в одну секунду. Предложение WINDOW изменяет поведение запроса, чтобы вывести результат для каждой новой записи по мере ее поступления. Следовательно, вывод - это поток обновляемых по отдельности результатов с нулевой задержкой результата.

SELECT STREAM ROWTIME, MIN(TEMP) OVER W1 AS WMIN_TEMP, MAX(TEMP) OVER W1 AS WMAX_TEMP, AVG(TEMP) OVER W1 AS WAVG_TEMP FROM WEATHERSTREAM WINDOW W1 AS ( RANGE INTERVAL '1' SECOND PRECEDING );

Ключевое слово STREAM и принцип потоковой обработки SQL

Расширение SQLstream для SQL использует ключевое слово STREAM, чтобы разрешать запросы к потокам или смеси потоков и сохраненных отношений.

Основой потокового SQL является ключевое слово STREAM, которое сообщает системе о вычислении временного дифференциала отношения. Разница во времени отношения - это изменение отношения по времени. Потоковый запрос вычисляет изменение отношения по времени или изменение выражения, вычисленного из нескольких отношений.

Давайте предположим, что у нас есть некоторый способ контролировать строки, которые вставляются в OrdersTable, так что мы можем видеть каждый раз, когда новая таблица добавляется в таблицу. Теперь мы можем описать этот объект как поток, который обновляется в момент размещения каждого заказа. (Мы будем называть этот поток Orders_Stream.) В реальном мире этот поток может быть заполнен файлом журнала, который постоянно записывается, датчиком, который постоянно испускает данные, цена акций, которая продолжает изменяться, и так далее. Хотя потоковые запросы во многих отношениях похожи на «традиционные» запросы, потоковые запросы продолжают выполняться после извлечения их первоначальных результатов. Чтобы запросить поток, мы используем ключевое слово STREAM:

SELECT STREAM * FROM OrdersStream;

Если мы начнем выполнение этого запроса в 10:00, он будет он будет добавлять заказы по мере их поступления пока не завершится поток.

В 10:15 запрос все еще выполняется, обрабатывая поступающие заказы:

Здесь система говорит: «В 10:15:00 я выполнил запрос SELECT STREAM * FROM OrdersStream и нашел одну строку в результате, который отсутствовал в 10:14:59.999». Он генерирует строку со значением 10:15:00 в столбце ROWTIME, потому что именно тогда появилась строка. Это основная идея потока: отношение, которое постоянно обновляется. (Столбец ROWTIME имеет решающее значение для потоков, потому что все потоки зависят от введенных строк времени.)