【发布时间】:2019-07-07 12:52:21
【问题描述】:
我正在导入一个数据库,其中包含一些表示多对多和一对多关系的链接表。
现在让我们关注一对多关系。例如。 Biossay 可以有多个文件,但一个文件只能有一个 BioAssay。
因此我有一个 BioAssay [BioAssay, ..., ..., ...] 表和一个链接表 [Document, BioAssay]。
最终我需要将这两个加入到完整的 BioAssay 及其所有文件中,例如[BioAssayxyz, ...., "Document1:Document2:Document3"]
我想知道这里是否有人可以让我了解 Kafka 流需要发生什么?
1 - 到目前为止,根据我对 Kafka 流的理解,我似乎需要为每个链接表创建一个流,以便执行聚合。 KTable 将无法使用,因为每个键都会更新记录。然而,聚合的结果可能是在 Ktable 中。
2 - 然后是外键连接问题。似乎唯一的方法是通过 GlobalKtable。链接表主题-> 链接表流-> 链接表GlobaKTable。这可能会导致大量磁盘空间使用,因为我的表非常大。这是一个超大的数据库,有很多表,对数据构建多个逻辑视图的需求是项目核心的一部分,无法避免。
a) 我在这里理解吗?
b) 这是解决这个问题的唯一方法吗?
EDIT1
听起来唯一存在的就是 KStream-to-GlobalKTable,似乎我需要稍微颠倒一下。我原来的 DB BioAssay Table 需要转成流,而我的链接文档表需要先转成流进行聚合,然后转成 GlobalKTable 加入。
无论哪种方式,除非我的流只有一个分区,否则这可能非常昂贵。
【问题讨论】:
标签: apache-kafka apache-kafka-streams ksqldb