首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用CachéShadow服务器的Dejournaling routine实现CDC

本文介绍在Caché早期版本上如何利用Journal实现类似CDC的功能。

撰文专家

乔鹏

InterSystems中国

技术总监

InterSystems中国技术总监,对于数据库/数据平台、互操作性平台、医疗相关标准以及医疗信息平台解决方案,有着深刻的理解和十多年的行业经验,参与主导过百余家医院或者区域平台的信息化建设;同时他能够对CDR、临床决策支持、商业智能、精准医疗等互操作性平台上的开发应用有广泛的认识和丰富的实践经验。

上次介绍了使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更(点击阅读)。但早期的Caché并不支持镜像,例如Caché 2008,它只支持Shadow。

在这些早期版本上是否也可以利用Journal实现类似CDC的功能呢?答案是肯定的,就是利用Shadow服务器的Dejournaling filter routine (Dejournaling过滤器routine)。

Dejournaling filter routine

InterSystems Caché的 Dejournaling过滤器routine是一个用户自定义的routine,用于在Shadow服务器上过滤Journal记录。当配置了Dejournaling 过滤器后,Shadow服务器在redo journal前会自动调用Dejournaling过滤器routine。该routine传入参数以下:

1. pid:记录进程ID;

2. dir:源数据库目录;

3. glo:Global节点(包括下标);

4. type:操作类型,为S (Set)、K (Kill)、s (BITSET)、k (ZKILL);

5. addr:Journal记录在Journal文件中的偏移量;

6. time:记录的时间戳。

该Routine返回1,说明此journal记录需要被Shadow恢复,而返回0说明此journal记录不需要被Shadow恢复。

因为这是一个自定义routine,且会被Shadow服务器恢复Journal时自动调用,因此我们可以利用它记录数据变更。

Shadow配置不在本文内容里,请参考文档:

[Caché]https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI_shadow

*请复制URL至浏览器打开即可。

编写Dejournaling filter routine

Routine的名字可以任意,但这个routine需要保存在Caché Shadow服务器的%SYS下。

例如,将global的数据变更记录在^CDCLog中:

MyShadowFilter(pid,dir,glo,type,addr,time)

{

Set ^CDCLog( $I(I (I(^CDCLog))=$lb(dir,glo,type,addr)

Quit 1

}

配置Dejournaling filter routine

在 Caché Shadow服务器的系统管理门户的[Home] > [Configuration] > [Shadow Server Settings] 上选择已经建立好的Shadow服务器,选择高级(Advanced)设置,在Filter routine里填写上面创建的routine名称即可。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200603A09F8V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券