FKs (внешние ключи) представляют проблему, если мы настраиваем репликацию RDBMS через Apache Kafka? - PullRequest
0 голосов
/ 12 декабря 2018

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

enter image description here Я новичокКафке, и многие источники в Интернете говорят, что это легко сделать с помощью Kafka Connect, но есть несколько аспектов этой проблемы, которым я никогда не нахожу никакого объяснения:

Как мы можемгарантировать, что ни один внешний ключ не будет нарушен во время процесса репликации? Я видел соединители, которые отправляют изменения данных в отдельную тему kafka для каждой таблицы в базе данных, но как мы читаем их в том же порядке, в котором они были созданы, такчто ФК не нарушается при тиражировании?Даже если мы поместим все изменения в одну тему, эта тема может быть разбита на разделы, и как мы будем их читать в том же порядке?Означает ли это, что мы можем использовать только одну тему с одним разделом?Или, может быть, нам следует удалить все ограничения FK в целевых базах данных и никогда не заботиться об их целостности?

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

1 Ответ

0 голосов
/ 12 декабря 2018

Я в настоящее время нахожусь в проекте, который использует CDC (Change Data Capture) для баз данных RDBMS.

В моем случае, CDC записывает в одну тему для одной таблицы в базе данных, и количество разделов равнофактически 1 (чтобы убедиться, что все сообщения идут по порядку).

К сожалению, да, целостность ограничения FK не гарантируется в Kafka.Под этим я подразумеваю, что если целостность действительна в базе данных, то она будет на Kafka, но нет системы проверки, которая проверяла бы ограничения FKs (вы можете присоединиться к полю, не являющемуся FK, с потоками Kafka).

С Kafka Stream вы, конечно, можете выполнять операции «присоединения», но вам нужно знать ограничения FK для исходной базы данных, чтобы сделать некоторый допустимый бизнес-код.

РЕДАКТИРОВАТЬ: Конечно, вы можете использовать все темычто CDC записывают и создают в другой теме с большим количеством разделов, вы затем будете перераспределять данные так, как вам хочется (даже с новой схемой).

...