Как читать/писать в kafka, используя jdbc с условиями

У меня есть сервер Kafka, который отлично работает для синхронизации таблицы между серверами. Моя БД - PostgreSQL, и я использую коннектор приемника/источника JDBC.

Теперь мой вопрос: как я могу прочитать данные из двух таблиц в Source и вставить данные в четыре разные таблицы на стороне Sink.

пример:

Исходная таблица: Пользователи, Роли

Таблицы раковины: Рабочие, Менеджеры, Работодатели, ...

На родительском сервере все пользователи доступны в таблице Users и связаны с таблицей Role. с другой стороны я хочу вставить данные в конкретную таблицу в соответствии с ее ролью

Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
0
0
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для JDBC Sink вам нужна одна тема на целевую таблицу. Таким образом, вам нужны четыре темы, по одной на целевую таблицу, заполненные объединенными данными. Это соединение должно произойти в какой-то момент конвейера. Варианты будут:

  1. Как часть исходного кода JDBC, используя параметр соединителя query. Создайте четыре соединителя, каждый с необходимым запросом для заполнения каждой целевой темы соединением, которое выполняется на стороне postgres в SQL.
  2. В качестве потокового приложения, например. в Kafka Streams или KSQL. Источник JDBC будет извлекать исходные таблицы users и roles, и вы будете выполнять соединение по мере прохождения каждой записи.

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

Masoud Tavakkoli 10.06.2019 13:12

имя таблицы берется из имени темы, которое может быть изменено как часть соединителя с использованием преобразования одиночного сообщения RegExRouter.

Robin Moffatt 10.06.2019 14:48

Другие вопросы по теме