Flink Table & SQL StreamTableSink有三類接口: AppendStreamTableSink、UpsertStreamTableSink、RetractStreamTableSink。
AppendStreamTableSink: 可将動态表轉換為Append流。适用于動态表隻有Insert的場景。
RetractStreamTableSink: 可将動态表轉換為Retract流。适用于動态表有Insert、Delete、Update的場景。
UpsertStreamTableSink: 可将動态表轉換為Upsert流。适用于動态表有Insert、Delete、Update的場景。
注意:
RetractStreamTableSink中: Insert被編碼成一條Add消息; Delete被編碼成一條Retract消息;Update被編碼成兩條消息(先是一條Retract消息,再是一條Add消息),即先删除再增加。
UpsertStreamTableSink: Insert和Update均被編碼成一條消息(Upsert消息); Delete被編碼成一條Delete消息。
UpsertStreamTableSink和RetractStreamTableSink最大的不同在于Update編碼成一條消息,效率上比RetractStreamTableSink高。
上述說的編碼指的是動态表轉換為DataStream時,表的增删改如何展現到DataStream上。