暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓KFS数据同步系统中KES同步数据底层过滤

原创 KFS补给站 2024-01-15
289


KFS数据同步系统中KES同步数据底层过滤

关键字:

Kingbase FlySync、KES、数据同步、底层过滤、人大金仓

关于KES同步数据的底层过滤

KFS系统replicator模块支持添加过滤器,对数据库中的某些表进行过滤,从而避免同步某些不需要的表。当KFS对于源端KES数据的抽取不进行底层过滤时,同步程序会默认将所有源端数据读取出来并生成KUFL,在KUFL文件中通过匹配表名过滤掉不需要同步的表,因此源端数据库中的一条数据只有经过了解析、翻译等一系列步骤后,才会被KFS的过滤器识别和过滤,这就导致本身不同步的表也进行了无用的翻译等步骤,导致有限的资源做了无用功,造成很大的资源浪费,影响同步性能。KFS底层过滤可以提供方案在数据进行解析、翻译前就将其识别过滤掉,可以有效的节约资源,提供系统性能。

KFS底层过滤原理

当前增量数据的产生过程大致为以下几步:

1.从原始的WAL日志读取出来

2.初始化逻辑解析上下文(期间回调插件初始化方法)

3.获取数据的操作类型,进行第一步解码decodeupdate、decodeinsert、decodedelete

4.过滤不属于指定数据库的数据

5.过滤标记originid的数据(回调decoderbuf插件的filter)

6.读取到提交操作,进行decodecommit(回调decoderbuf插件的decode_change)

7.decode_change中进行数据的翻译,元信息的获取等一系列操作。

底层过滤是在初始化时传入正则表达式,来指定要同步的表名,在事务提交时,进行翻译前,通过表名匹配正则,将不需同步的数据过滤掉,同时将该数据对应的表的oid存入list中,形成oid的黑名单,在步骤5中,通过判断list(黑名单)中是否包含当前数据所属表的oid,来进行过滤。

KFS底层过滤使用方法

  • 在static文件中配置tablePatterns

在KES数据库作为源端数据库时,可以通过在配置文件中开启底层过滤参数lowLevelFilter,将lowLevelFilter置为true。同时,可以将需要过滤的表以模式名.表名的形式配置在tablePatterns参数中,多张表之间可以用“,”隔开。此外底层过滤的使用还应该与replicate过滤器的使用有所区分,在开启底层过滤的条件下,如果再开启replicate过滤器,需要避免在tablePatterns中设置的白名单表会被replicate过滤器过滤。

  • 单独配置tablePatterns

源端KESV8支持tablePattern参数可以在static文件里配置或者单独配置。tablePattern参数单独配置功能生效,前提是开启底层过滤,lowlevelFilter=true。开启底层过滤后,在tablePatterns.csv文件中单独配置的tablePattern值优先级会高于static文件中配置的值,系统首先会检查tablePatterns.csv文件中的值,如果存在则将配置值赋给tablePattern;如果不存在,则使用static文件中配置的值,static文件中默认配置*.*。

注:

1、 tablePatterns.csv和static文件中如果同时存在配置值,则取tablePatterns.csv中的值,不会取并集。

2、 tablePatterns.csv文件配置规则,见文件内注释。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论