了解RowKind的UPDATE_BEFORE的含义



我正在阅读RowKind#UPDATE_BEFORE的javadoc,它说:

/**
* Update operation with the previous content of the updated row.
*
* <p>This kind SHOULD occur together with {@link #UPDATE_AFTER} for modelling an update that
* needs to retract the previous row first. It is useful in cases of a non-idempotent update,
* i.e., an update of a row that is not uniquely identifiable by a key.
*/
UPDATE_BEFORE("-U", (byte) 1),

我会问:

  1. 如果行is not uniquely identifiable by a key, flink如何知道哪一行撤回,我认为必须有一个唯一的键来识别行?
  2. 上面说对non-idempotent update有用,这里的non-idempotent update是什么意思?
  1. 在table api中,一行可以有一个主键
  2. 考虑这种情况

id | data

1 | data_1

2 | data_1

,如果我们有一个类似上面的表。我们可以像这样更新一行:update data set data='data_x' where id = 1"在本例中,id不是update而是幂等update">

但是如果我们有这样一个表(缺少id字段)

数据data_1data_1

则更新到第二行是"非幂等的"。因为我们没有id或其他唯一的东西来标识行对象

相关内容

  • 没有找到相关文章

最新更新