Создайте живую информационную панель с помощью Materialize, Airbyte, MySQL и Redpanda/Kafka

Создайте живую информационную панель с помощью Materialize, Airbyte, MySQL и Redpanda/Kafka

11 апреля 2022 г.

Это автономная демонстрация с использованием [Materialize] (https://materialize.com).


Эта демонстрация покажет вам, как использовать Materialise с Airbyte для создания живой панели инструментов.


Для этой демонстрации мы собираемся отслеживать заказы на нашем демонстрационном веб-сайте и генерировать события, которые впоследствии можно будет использовать для отправки уведомлений, когда корзина была брошена в течение длительного времени.


Эта демонстрация является расширением Как объединить PostgreSQL и MySQL в живом материализованном представлении, но вместо использования Debezium CDC мы будем использовать Airbyte для постепенного извлечения заказов из MySQL через [CDC] (https://materialize.com/docs/connect/materialize-cdc/).


Диаграмма:



Предпосылки


Прежде чем начать, вам нужно убедиться, что у вас установлены Docker и Docker Compose.


Вы можете выполнить следующие шаги по установке Docker:


Установка Docker


Обратите внимание, что Airbyte Cloud в настоящее время не поддерживает Kafka в качестве места назначения, поэтому мы можем следовать этой демонстрации только с собственным экземпляром Airbyte.


Запуск демонстрации


Обратите внимание, что для Mac с M1 у вас могут возникнуть проблемы с Airbyte из-за следующей проблемы:


https://github.com/airbytehq/airbyte/issues/2017


Поэтому я бы рекомендовал использовать виртуальную машину Ubuntu для запуска демонстрации.


```javascript


экспортировать DOCKER_BUILD_PLATFORM=linux/arm64


экспорт DOCKER_BUILD_ARCH=arm64


экспортировать ALPINE_IMAGE=arm64v8/alpine:3.14


экспорт POSTGRES_IMAGE=arm64v8/postgres:13-alpine


экспорт JDK_VERSION=17


Запустить все службы:


``` ударить


docker-compose up -d


Эйрбайт


Настройте службу Airbyte, посетив your_server_ip:8000, а затем следуйте инструкциям.


Добавление источника


Мы собираемся использовать MySQL в качестве источника, откуда мы будем извлекать заказы.


В пользовательском интерфейсе Airbyte перейдите на вкладку «Источники» и нажмите кнопку «Добавить новый источник».


Заполните следующие данные:


  • Название: заказы

  • Тип источника: MySQL

  • Хост: your_server_ip

  • Порт: 3306

  • База данных: магазин

  • Имя пользователя: airbyte

  • Пароль: пароль

  • Отключить SSL

  • Метод репликации: CDC

Наконец, нажмите кнопку «Установить источник».


Добавление пункта назначения


Затем добавьте пункт назначения в Airbyte, который будет использоваться для отправки событий.


Для этой демонстрации мы собираемся использовать Redpanda, но она отлично подойдет и для Kafka.


Начните с нажатия на вкладку «Направления», нажмите кнопку «Добавить новый пункт назначения» и заполните следующие данные:


  • Имя: редпанда

  • Тип назначения: Кафка

Затем заполните все необходимые поля и нажмите кнопку «Установить место назначения».


В зависимости от ваших потребностей вы можете изменить некоторые настройки, но для этой демонстрации мы собираемся использовать значения по умолчанию.


Важные вещи, которые следует отметить для этой демонстрации:


  • «Тема» — «заказы».

  • «Серверы Bootstrap» — это «redpanda: 9092».

Наконец, нажмите на кнопку «Сохранить».


Установить соединение


Теперь, когда у вас есть источник и место назначения, вам нужно установить соединение между ними. Это необходимо для того, чтобы Airbyte мог отправлять события из источника в пункт назначения по определенному расписанию, например, каждый день, каждый час, каждые 5 минут и т. д.


Для этой демонстрации мы будем использовать 5-минутное расписание. Надеюсь, в будущем Airbyte позволит вам настроить это и сократить расписание, например, до 1 минуты.


Перейдите на вкладку «Подключения» и нажмите кнопку «Добавить новое подключение» и заполните следующие данные:


  • Установите «Частота репликации» на «5 минут».

  • Установите «Пространство имен назначения» на «Зеркало исходной структуры»

  • Установите источник на «заказы», ​​а «режим синхронизации» на «инкрементальный».

imagehttps://user-images.githubusercontent.com/21223421/158997265-6890282a-a997-495e-b723-265818c8ed24.png">


Далее нажмите на кнопку «Настроить соединение». И, наконец, нажмите кнопку «Синхронизировать сейчас», чтобы начать синхронизацию.


Установка соединения и отправка событий может занять несколько минут.


После завершения синхронизации вы можете увидеть события в теме Redpanda, которые вы указали при настройке места назначения. Давайте посмотрим, как это сделать!


Проверьте тему Redpanda


Чтобы проверить автоматически созданную тему, вы можете запустить следующие команды:


  • Доступ к контейнеру Redpanda:

docker-compose exec redpanda bash


  • Перечислите темы:

список тем рпк


  • Потребляйте тему:

Тема rpk потребляет orders_topic


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


Если вы еще не видите эту тему, возможно, вам придется подождать несколько дополнительных минут, а также убедиться, что макет службы ordergen запущен и работает.


Убедившись, что в теме есть события CDC, вы можете продолжить и настроить Materialize.


Создать материализовать SOURCE


Далее нам нужно создать ИСТОЧНИК в Materialise.


Вы можете сделать это, вернувшись к своему терминалу и выполнив следующие команды:


  • Получите доступ к контейнеру mzcli:

``` ударить


docker-compose запустить mzcli


Или, если у вас установлен psql:


``` ударить


psql -U материализовать -h localhost -p 6875 материализовать


Создайте Kafka SOURCE, выполнив следующую инструкцию:


```sql


СОЗДАТЬ ИСТОЧНИК airbyte_source


ОТ KAFKA BROKER 'redpanda:9092' ТЕМА 'orders_topic'


ФОРМАТ БАЙТОВ;


Примечание: измените «orders_topic» на тему, которую вы указали во время настройки Airbyte.


Используйте TAIL, чтобы быстро просмотреть данные:


```sql


КОПИРОВАТЬ (


ХВОСТ (


ВЫБРАТЬ


CAST(data->>'_airbyte_data' AS JSON) AS данные


ОТ (


SELECT CAST(данные AS jsonb) AS данные


ОТ (


ВЫБЕРИТЕ ИЗ (


ВЫБЕРИТЕ convert_from (данные, 'utf8') КАК данные ИЗ airbyte_source


НА ВЫБОР;


Вы увидите поток ваших данных, когда Airbyte отправляет их в пункт назначения, а Materialise обрабатывает их с минимальной задержкой в ​​доли миллисекунды.


Для получения дополнительной информации о том, как использовать TAIL, ознакомьтесь с этой записью в блоге Хоакина Колаччи: Подпишитесь на изменения в представлении с помощью TAIL в Materialize


Создайте [Материализованное представление] (https://materialize.com/docs/sql/create-materialized-view/)


Теперь, когда у нас есть «ИСТОЧНИК» в Materialise, мы можем создать материализованный «ВИД». Материализованное представление позволяет очень быстро получать постепенно обновляемые результаты ваших данных с помощью стандартных запросов SQL.


Чтобы создать материализованное представление, выполните следующую инструкцию:


```sql


СОЗДАТЬ МАТЕРИАЛИЗОВАННОЕ ПРЕДСТАВЛЕНИЕ airbyte_view AS


ВЫБРАТЬ


data->>'id' идентификатор AS,


данные->>'user_id' КАК user_id,


data->>'order_status' КАК order_status,


data->>'price' КАК цена,


данные->>'created_at' AS created_at,


данные->>'updated_at' AS updated_at


ОТ (


ВЫБРАТЬ


CAST(data->>'_airbyte_data' AS JSON) AS данные


ОТ (


SELECT CAST(данные AS jsonb) AS данные


ОТ (


ВЫБЕРИТЕ ИЗ (


ВЫБЕРИТЕ convert_from (данные, 'utf8') КАК данные ИЗ airbyte_source


Затем запустите запрос, чтобы увидеть данные:


```sql


ВЫБЕРИТЕ * ИЗ airbyte_view;


Для визуализации данных вы можете использовать инструмент бизнес-аналитики, такой как [Metabase] (https://materialize.com/docs/ Third-Party/metabase/), или, поскольку Materialize совместим с Postgres Wire, вы можете использовать свои любимые программы. язык и создать свою собственную панель инструментов. Для получения дополнительной информации о поддерживаемых инструментах и ​​интеграциях ознакомьтесь с [документацией по материализованным представлениям] (https://materialize.com/docs/ Third-Party/supported-tools/).


Остановить демонстрацию


Чтобы остановить демонстрацию, запустите:


``` ударить


docker-compose вниз -v


Полезные ссылки


  • [Материализировать] (https://materialize.com/)

  • [Airbyte] (https://airbyte.io/)

  • [Материализировать облако] (https://cloud.materialize.com/)

  • [Материализировать демоверсии] (https://materialize.com/docs/demos/)

  • [Редпанда] (https://redpanda.com/)

Чтобы получить аналогичную версию этой демонстрации с использованием Debezium, ознакомьтесь с сообщением здесь:



Сообщество


Если у вас есть какие-либо вопросы или комментарии, присоединяйтесь к Сообществу Materialise Slack!


Также опубликовано здесь



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE