InterSystems IRIS/Caché的CDC
InterSystems IRIS/Caché未提供开箱即用的变更数据捕获(CDC)工具,而且由于其多模型建模能力和底层的多维存储模型,相对于关系型数据库的单一模型,针对于SQL的CDC在InterSystems IRIS/Caché上会更复杂一些。例如通过Journal日志记录的是底层持久化多维数组的数据变更,而不是SQL table的变更。
通常,在应用层面实现变更数据捕获是更灵活和简单的方式,例如通过设置触发器、类的DSTIME参数。但如果无法在应用层做CDC,可以考虑使用InterSystems IRIS/Caché的Journal和强大的开发能力获取数据变更。
这里介绍使用InterSystems IRIS/Caché的Reporting类型的异步镜像成员获取数据变更。
Dejournal 过滤器
InterSystems IRIS/Caché的 Dejournal 过滤器用于在Reporting类型的异步镜像成员上过滤Journal记录。当配置了Dejournal 过滤器后,异步镜像成员在redo journal前会自动调用Dejournal过滤器类的方法RunFilter,并传入以下参数:
1. MirrorDBName:镜像数据库名称;
2. GlobalReference:Global节点(包括下标);
3. RecordType:操作类型,为S(Set)和K(Kill);
4. Address:Journal记录在Journal文件中的偏移量。
我们可以利用自定义的Dejournal过滤器,捕获持久化多维数组(Glo