Обзор ksqlDB

Возможности ksqlDB

ksqlDB — это база данных Kafka, использующаяся для потоковой обработки. ksqlDB обрабатывает данные, хранящиеся в Kafka, и объединяет Kafka Streams для потоковой обработки и Kafka Connect для сбора и обработки событий из различных источников данных. Приложения потоковой обработки Kafka Streams внутри ksqlDB являются набором SQL-запросов.

Возможности ksqlDB
Возможности ksqlDB
Возможности ksqlDB
Возможности ksqlDB

Основные функциональные возможности ksqlDB перечислены ниже:

  • Моделирование данных, хранящихся в Kafka, в виде потоков или таблиц посредством SQL.

  • Выполнение push-запросов на передачу данных. При помощи push-запросов можно осуществлять подписку на изменения, происходящие в базе данных, и отслеживать изменения в режиме реального времени. Push-запрос может быть отправлен через интерфейс командной строки (CLI) или как HTTP-запрос в REST API ksqlDB.

  • Выполнение pull-запросов на получение данных. Pull-запрос может извлекать текущее значение из материализованного представления, таблицы или потока.

  • Создание материализованных представлений из потоков и таблиц. Материализованное представление в фоновом режиме собирает данные из таблицы Kafka, преобразует их в необходимый формат и помещает в заранее созданную целевую таблицу. К одной таблице Kafka можно привязать несколько материализованных представлений, чтобы сохранять данные с разным уровнем детализации в несколько таблиц.

  • Создание коннекторов для интеграции с внешними хранилищами данных.

Архитектура ksqlDB

Ниже на рисунке показана архитектура ksqlDB.

Архитектура ksqlDB
Архитектура ksqlDB
Архитектура 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.

Информация о сервисе ksqlDB в интерфейсе ADCM
Информация о сервисе ksqlDB в интерфейсе ADCM

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, выполняя действия:

ksqlDB и Kafka Connect
ksqlDB и Kafka Connect
ksqlDB и Kafka Connect
ksqlDB и 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 default dark actions default light в столбце Actions.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней