上周我问过这个问题:KSQL: append multiple child records to parent record

然而,在我对这个问题的解释中,我确实简化了事情,而且我发现我有点担心现实世界中设置的复杂性 . 为了快速重申,我正在使用的数据类型是付款和参与付款的各方:

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     |

这些表中的每一个都以其自己的主题到达,到目前为止,我采用的方法是基于 party_type 分支 payment_parties 流,并将这些中的每一个连续地连接到 payments 流 .

我对复杂性有点担心的原因是因为上面的示例数据不完整 . 实际上,每笔付款最多可以有10个与之相关的不同方 . 这意味着 payment_parties 流分支了10次,然后连续10次连接 .

为了实现 payment_parties 的拆分以及它们与 payments 流的连接,我最终总共至少有20个流(每个分支一个,每个连接一个),不计算源流主题和重新密钥流 .


现在,基于此,我有几个问题:

  • Should I be worried about the performance of a setup like this? 直观地说,对于一个相对简单的问题,这感觉就像是一个相当复杂的设置 .

  • 我知道(目前)在KSQL中,不可能从所选数据中创建STRUCT . Is there any sensible way to emulate a struct? 或者我可以期待在未来的KSQL版本中看到这个功能吗?

  • Alternatively, would it be possible to create Structs using Kafka Streams? 这不会减少流的数量,但在我看来会使终极输出更加明智 .

当然,我很乐意提供任何可能缺少的信息或回答其他问题 .