Обзор ksqlDB
Возможности ksqlDB
ksqlDB — это база данных Kafka, использующаяся для потоковой обработки. ksqlDB обрабатывает данные, хранящиеся в Kafka, и объединяет Kafka Streams для потоковой обработки и Kafka Connect для сбора и обработки событий из различных источников данных. Приложения потоковой обработки Kafka Streams внутри ksqlDB являются набором SQL-запросов.
Основные функциональные возможности ksqlDB перечислены ниже:
-
Моделирование данных, хранящихся в Kafka, в виде потоков или таблиц посредством SQL.
-
Выполнение push-запросов на передачу данных. При помощи push-запросов можно осуществлять подписку на изменения, происходящие в базе данных, и отслеживать изменения в режиме реального времени. Push-запрос может быть отправлен через интерфейс командной строки (CLI) или как HTTP-запрос в REST API ksqlDB.
-
Выполнение pull-запросов на получение данных. Pull-запрос может извлекать текущее значение из материализованного представления, таблицы или потока.
-
Создание материализованных представлений из потоков и таблиц. Материализованное представление в фоновом режиме собирает данные из таблицы Kafka, преобразует их в необходимый формат и помещает в заранее созданную целевую таблицу. К одной таблице Kafka можно привязать несколько материализованных представлений, чтобы сохранять данные с разным уровнем детализации в несколько таблиц.
-
Создание коннекторов для интеграции с внешними хранилищами данных.
Архитектура ksqlDB
Ниже на рисунке показана архитектура ksqlDB.
Каждый cервер ksqlDB осуществляет выполнение приложений Kafka Streams и является, по сути, отдельным экземляром приложения Kafka Streams. В составе кластера несколько серверов ksqlDB делят между собой нагрузку, созданную топологией Kafka Streams.
Сервер ksqlDB состоит из двух компонентов:
-
Движок ksqlDB — выполняет операторы и запросы SQL. Движок производит синтаксический анализ операторов SQL, преобразование в топологию Kafka Streams, запуск приложений Kafka Streams.
-
REST API ksqlDB — обеспечивает доступ клиента к движку ksqlDB для передачи запросов.
Для подключения к интерфейсу REST ksqlDB клиент может использовать следующие виды интерфейса ksqlDB:
-
интерфейс командной строки ksqlDB CLI — консоль, в которой вводятся SQL-запросы с использованием операторов ksqlDB;
-
пользовательский интерфейс ksqlDB — позволяет разрабатывать приложения ksqlDB в Центре управления Confluent и Confluent Cloud;
-
непосредственно сам интерфейс REST — позволяет осуществлять запросы к серверу при помощи ksqlDB REST API c использованием инструмента командной строки cURL.
ksqlDB в ADS
Подключение
После добавления и установки сервиса ksqlDB в составе кластера ADS вы можете подключиться к серверу ksqlDB с хостов, где размещен компонент ksqlDB Client по команде: ksql http://ksql-server:ksql-server-port
.

Kafka
В ADS сервис ksqlDB может быть установлен только после установки сервиса Kafka. После установки ksqlDB в конфигурационном файле /etc/ksqldb/ksql-server.properties автоматически устанавливается параметр bootstrap.servers
для связи с брокером Kafka, а также другие параметры для взаимодействия Kafka и ksqlDB (например, для внутренних топиков ksqlDB, создаваемых в Kafka).
Schema Registry
Сервис ksqlDB, установленный в ADS одновременно c сервисом Schema Registry, позволяет выполнять регистрацию, чтение схем, а также сериализацию данных с использованием указанных (при помощи идентификатора) схем. Это облегчает работу с сериализацией данных, так как нет необходимости определять в ksqlDB столбцы и типы данных вручную. Формат может быть создан как для ключей, так и для значений. Например, при создании потока на основе топика Kafka использование схем описывается свойствами KEY_SCHEMA_ID
или/и VALUE_SCHEMA_ID
потока, как показано ниже.
CREATE STREAM pageviews
WITH (
KAFKA_TOPIC='avro-topic',
VALUE_FORMAT='AVRO',
VALUE_SCHEMA_ID=1
);
В ksqlDB могут быть указаны столбцы, содержимое которых не соответствует формату схемы. При этом может быть сохранен вывод столбцов, соответствующих формату схемы.
После установки сервиса ksqlDB параметры key.converter.schema.registry.url
и value.converter.schema.registry.url
, отвечающие за взаимодействие ksqlDB и Schema Registry, устанавливаются в конфигурационном файле /etc/ksqldb/connect.properties.
Kafka Connect
Сервис ksqlDB, установленный в ADS одновременно c сервисом Kafka Connect, предоставляет возможность управлять коннекторами Kafka Connect, выполняя действия:
-
импорт топиков, созданных Kafka Connect, в собственную базу для использования в потоковой обработке.
Примеры коннекторов, которые могут быть созданы при помощи ksqlDB:
-
Коннектор Debezium PostgreSQL — source-коннектор, который получает снепшот из базы данных PostgreSQL, затем отслеживает все последующие изменения этих данных на уровне строк для каждой таблицы и записывает в отдельный топик Kafka;
-
JDBC-коннекторы — коннекторы, работающие с любой базой данных с драйвером JDBC с импортом данных в топики Kafka (коннектор JDBC Source) или экспортом данных из топиков Kafka (коннектор JDBC Sink).
Для взаимодействия сервисов ksqlDB и Kafka Connect необходимо настроить параметр ksql.connect.url
в конфигурационном файле /etc/ksqldb/connect.properties.
Настройка
Настройка параметров ksqlDB в интерфейсе ADCM выполняется на странице конфигурирования сервиса ksqlDB.
Для настройки параметров конфигурационных файлов /etc/ksqldb/ksql-server.properties и /etc/ksqldb/connect.properties переведите в активное состояние переключатель Show advanced, раскройте узел server.properties или connect.properties и введите новые значения для параметров. Для изменения параметров ksqlDB, отсутствующих в интерфейсе ADCM, используйте поле Add key,value. Выберите Add property и введите наименование параметра и его значение.
После изменения параметров при помощи интерфейса ADCM перезагрузите сервис ksqlDB. Для этого примените действие Restart, нажав на иконку
в столбце Actions.