灌水唠嗑区
其他
文章

人大金仓KFS支持Gbase8s增量解析数据封装逻辑

发表于2025-09-27 15:55:2292次浏览1个评论

Gbase8s增量数据封装模型

与其他数据库增量数据同步一样,Gbase8s数据库中insert、delete和update等DML操作中对表中数据的变更记录需要进行封装,封装成DBMSEvent后才能在流水线程序中做数据流转。DBMSEvent主要由eventId、DBMSData组成的链表、时间戳以及标识符组成,其中eventId用于表示当前DBMSEvent封装的事务中最早的RSN和提交RSN,链表中封装主要数据,标识符用来标识大事务分片。在DBMSData链表中,主要封装DBMSdata的子类RowChangeData,RowChangeData中有用来表示DML类型的标识和存储数据的链表,链表中存放的是OneRowChange,顾名思义OneRowChange表示的是对一行数据的更改记录,即insert、delete或者update操作中对数据库表中一行数据的更改。值得注意的是,对不同的操作类型,OneRowChange记录的内容有所不同,尤其对于主键列和数据列的描述这两个内容,在insert语句中,默认插入的数据不需要主键,因此只需要记录所有列的描述和列值即可,无需关注主键列和主键列的描述,对于update操作来说,因为需要有主键或者where后面的条件做更新数据的匹配,因此必须要有主键列和主键列描述信息,对于无主键表来来说,OneRowChange中默认将全列记录为主键列和主键列描述,对于有主键表来说,将主键或者where后面的条件作为主键列值和主键列描述;对于delete来说,同样需要主键或者where后面的条件标识数据,因此也需要记录主键列和主键列描述信息。

评论

登录后才可以发表评论
用户头像
levvel发表于 8个月前
我看好你哟!