Мне интересно, возможно ли использование Apache Flink для решения следующей проблемы.
Предположим, у меня есть база данных с двумя таблицами: " клиентов " и " заказов ". Таблица " orders " содержит внешний ключ с именем " client_id_fk ", который ссылается на первичный ключ таблицы " clients ", который называется " client_id». Теперь предположим, что я фиксирую события, происходящие с таблицами, такие как вставки , обновления и удаления , и я передаю все это неограниченному FlinkПоток данных. Когда события приходят внутрь Flink DataStream, он записывает их в другое хранилище, например, в тему Apache Kafka.
Предположим, что внутри " клиентов " добавлены пять новых записей: A, B, C, D, E , и что Flink DataStream получает эти записи в этомточный заказ. Теперь предположим, что внутри " orders " добавлена запись O_A , относящаяся к клиенту A ;затем это событие также помещается внутрь Flink DataStream. Как я уже описывал ранее, каждое событие будет записываться непосредственно в теме Kafka, когда оно поступает в DataStream;здесь возникает мой вопрос: есть ли в Apache Flink путь к store событию A до тех пор, пока не наступит событие O_A , затем присоединиться к ним, а чем написать их в теме Кафки? Очевидно, я знаю, что мне нужно подождать O_A , прежде чем писать A внутри темы.
Подводя итог, Flink DataStream получает следующие события в следующем порядке:
A, B, C, D, E, O_A
Когда он получает событие A вместо записи его в ApacheКафка тема, должна ее сохранить и дождаться, пока придет событие O_A ;затем он присоединяется к ним, а затем записывает их в тему.
Заранее благодарю всех, можно ли было бы написать интуитивно понятный фрагмент, написанный с использованием Java Apache Flink API, который показывает, как реализоватьчто?