动态表 Change Log 格式

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

动态表 Change Log 格式

jie mei
Hi, Community

    Flink 动态表的 Change Log 会有四种消息(INSERT, UPDATE_BEFORE, UPDATE_AFTER,
DELETE).
其中 UPDATE_BEFORE 对应的是更新之前的完整记录,UPDATE_AFTER 对应的是更新之后的完整记录吗?
我的问题特意强调完整记录,是为了确认 Change Log 的内容是更新后的完整数据,而不是 Set A = 'a' 这样的操作日志/更新语句。
此外,Delete语句对应的数据是完整记录还是操作日志呢?

    这意味着Table Sink的时候,只需要获得INSERT, UPDATE_AFTER的数据,写入不支持UPSERT的存储。
并通过额外的逻辑判断来获得最新的数据是可行的。

--

*Best Regards*
*Jeremy Mei*
Reply | Threaded
Open this post in threaded view
|

Re: 动态表 Change Log 格式

Jark
Administrator
是完整的记录。

upsert kafka 就是这样子实现的,只存储最新镜像。
但是有的 query 是会产生 delete 消息的,所以有时候还是需要存下 delete,像 upsert kafka 里就存成了kafka 的
tombstone 消息。

Best,
Jark

On Fri, 4 Dec 2020 at 17:00, jie mei <[hidden email]> wrote:

> Hi, Community
>
>     Flink 动态表的 Change Log 会有四种消息(INSERT, UPDATE_BEFORE, UPDATE_AFTER,
> DELETE).
> 其中 UPDATE_BEFORE 对应的是更新之前的完整记录,UPDATE_AFTER 对应的是更新之后的完整记录吗?
> 我的问题特意强调完整记录,是为了确认 Change Log 的内容是更新后的完整数据,而不是 Set A = 'a' 这样的操作日志/更新语句。
> 此外,Delete语句对应的数据是完整记录还是操作日志呢?
>
>     这意味着Table Sink的时候,只需要获得INSERT, UPDATE_AFTER的数据,写入不支持UPSERT的存储。
> 并通过额外的逻辑判断来获得最新的数据是可行的。
>
> --
>
> *Best Regards*
> *Jeremy Mei*
>