На прошлой неделе я задал этот вопрос: KSQL: добавить несколько дочерних записей в родительскую запись
Однако в своем объяснении проблемы я упростил некоторые вещи и нашелчто меня несколько беспокоит сложность настройки в реальном мире.Чтобы быстро повторить, тип данных, с которыми я работаю, - это платежи и стороны, участвующие в платежах:
payments:
| id | currency | amount | payment_date |
|------------------------------------------|
| pmt01 | USD | 20000 | 2018-11-20 |
payment_parties:
| id | payment_id | party_type | party_ident | party_account |
|-----------------------------------------------------------------|
| prt01 | pmt01 | sender | XXYYZZ23 | (null) |
| prt02 | pmt01 | intermediary | AADDEE98 | 123456789 |
| prt03 | pmt01 | receiver | FFGGHH56 | 987654321 |
Каждая из этих таблиц представлена на свою тему, и пока что я выбрал подходсостоит в том, чтобы разветвлять поток payment_parties
на основе party_type
и последовательно присоединять каждый из них к потоку payments
.
Причина, по которой меня немного беспокоит сложность, заключается в том, что приведенные выше примеры данныхне завершеноВ действительности к каждому платежу может относиться до 10 различных сторон.Это означает, что поток payment_parties
разветвляется 10 раз, а затем также последовательно соединяется 10 раз.
Чтобы разделить payment_parties
и объединить каждый из них в поток payments
, я получаю в общей сложности не менее 20 потоков (один для каждой ветви и один длякаждое присоединение), не считая исходные потоки тем и повторно введенных потоков.
Теперь, основываясь на этом, у меня есть несколько вопросов:
Должен ли я беспокоиться о производительности такой установки? Интуитивно, это похоже на довольно сложную настройку для относительно простой задачи.
Я знаю, что(в настоящее время) в KSQL невозможно создать STRUCT из выбранных данных. Есть ли какой-нибудь разумный способ эмулировать структуру? Или я могу ожидать увидеть эту функциональность в будущем выпуске KSQL?
В качестве альтернативы, будет ли этоМожно ли создать Struct с использованием потоков Kafka? Это не уменьшит количество потоков, но, на мой взгляд, конечный результат будет более осмысленным.
КонечноЯ буду рад предоставить любую недостающую информацию или ответить на другие вопросы.