【问题标题】:How to store/aggregate correlated cdc events with flink?如何使用 flink 存储/聚合相关的 cdc 事件?
【发布时间】:2022-02-04 18:31:10
【问题描述】:

我有一个 kafka 队列,其中多个 cdc 事件来自数据库。 假设以下三个表实现了学生-课程 n:n 关联:

STUDENT
COURSE
STUDENT_COURSE

我可以有以下“业务”事件:

  1. 一个新学生注册了一个课程:在这种情况下,我会在我的 kafka 队列中收到 3 个事件,这些事件可以按任何顺序出现,但我想发出一个“业务”事件喜欢这个:{type:"enroll", "student": {"name": "Jhon", "age": "..}, "course": {"name":"physics", "teacher":"Foo", ...}
  2. 一名学生改变了他们的课程:在这种情况下,我只会在我的 kafka 队列中收到 1 个事件(在 STUDENT_COURSE 上),并且我会发起一个像这样的“商业”事件:{"type": "change", "student": {"name": "Jhon", "age": "..}, "newcourse": {"name":"maths", "teacher":"Foo", ...}
  3. 学生信息(例如电子邮件、电话、...)或课程信息(时间、教师...)的更新在任一表上都有 1 个事件

我的问题是我不知道如何存储和关联所说的 CDC 以一起制作业务事件,实际上我需要做这样的事情:

  1. 接收事件并将其存储在“不确定”状态,等待一段合理的时间,比如 10 秒
  2. 如果收到另一张桌子上的事件,那么我就是第 1 种情况
  3. 否则我在 2/3

有没有办法在flink中获得这种行为?

【问题讨论】:

    标签: apache-kafka apache-flink cdc


    【解决方案1】:

    看起来您可以从从这些 CDC 流派生的 3 个动态表上的流式 SQL 连接开始,这将根据您要查找的内容生成更新流。

    https://github.com/ververica/flink-sql-cookbook 中的一些示例应该可以为入门提供灵感。 https://github.com/ververica/flink-sql-CDChttps://github.com/ververica/flink-cdc-connectors 也是不错的资源。

    【讨论】:

      猜你喜欢
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2021-08-16
      相关资源
      最近更新 更多