как сравнить (1 миллиард записей) данных между двумя потоками кафки или таблицами базы данных - PullRequest
0 голосов
/ 01 сентября 2018

мы отправляем данные из DB2 (таблица-1) через CDC в темы Kafka (тема-1). нам нужно согласовать данные DB2 и темы Kafka. у нас есть два варианта -

a) перенести все данные темы kafka в DB2 (в виде таблицы-1-копии), а затем выполнить внешнее левое соединение (между таблицей-1 и таблицей-1-копией), чтобы увидеть несовпадающие записи, создать дельту и толкни его обратно в кафку. проблема : Масштабируемость - наш набор данных составляет около миллиарда записей, и я не уверен, что DB2 DBA позволит нам выполнить такую ​​огромную операцию соединения (которая может легко длиться более 15-20 минут).

b) снова вставьте DB2 в параллельную тему kafka (topic-1-copy), а затем выполните некоторое решение на основе потоков kafka, чтобы выполнить левое внешнее соединение между kafka topic-1 и topic-1-copy. Я все еще оборачиваюсь вокруг ручьев Кафки и оставляю внешние соединения. Я не уверен, смогу ли (используя систему управления окнами в потоках kafka) сравнить ВСЕ содержимое темы-1 с темой-1-копией.

Что еще хуже, тема-1 в Кафке является компактной темой, поэтому, когда мы помещаем данные из DB2 обратно в Kafka topic-1-copy, мы не можем определенно запустить цикл kafka topic-уплотнения, чтобы убедиться, что и topic-1, и topic-1-copy полностью сжаты перед выполнением какого-либо сравнения операция на них.

в) есть ли другой вариант структуры, который мы можем рассмотреть для этого?

Идеальное решение должно масштабироваться для данных любого размера.

...