失效链接处理 |
Gbase 8s 数据捕获接口使用方法 PDF 下载
本站整理下载:
相关截图:
主要内容:
1Change Data Capture API简介
Change Data Capture API 使外部的客户端程序能够捕获GBase 8s的事务数据。用户可以在各种客户端程序上使用这套接口,例如JDBC, ODBC, ESQL/C, and DB-Access。接口以智能大对象的形式返回CDC记录,用户可以使用智能大对象读取函数读取CDC数据。用户根据自己的应用可以决定如何处理这些数据。例如,可以编写一个程序将Gbase 8s数据库中的数据复制到另外一个数据库上。
在开始捕获一个表的数据时,Change Data Capture API输出了表的结构信息,用户可以使用这些信息去创建一个表。当数据捕获开始以后,表结构变化时将不再提供新的表结构数据。Change Data Capture API仅提供变化的数据,它不提供数据库内容的初始快照。如果用户需要迁移一个表,可以通过其它方式复制现有数据。然后再使用Change Data Capture API在新表上进行数据更新。
只有当数据库的日志打开时,Change Data Capture API才能够正常工作。
2Change Data Capture API使用方法
2.1准备工作
在使用CDC API之前需要做一些准备工作:
1.在需要进行CDC的数据库上打开日志开关。
2.执行$INFORMIXDIR/etc目录下的syscdcv1.sql脚本,它会创建syscdcv1数据库,并在syscdcv1数据库中创建若干表和函数。
3.确认syscdcv1.sql脚本成功创建syscdcv1数据库。
4.设置环境变量DB_LOCALE,使它和需要进行CDC的数据库的本地化(locale)设置相同。
2.2CDC API的基本使用方法
使用CDC需要如下基本步骤:
1.使用informix用户连接到syscdcv1数据库(准备工作中创建的)。
2.调用cdc_opensess()函数,cdc_opensess()函数会返回一个session ID。
3.调用cdc_set_fullrowlogging()函数打开full-row logging。每个需要捕获的表都要调用一次。
4.调用cdc_startcapture()通知数据库需要捕获哪些表(数据名+表名)和哪些列需要捕获。每个表需要调用一次。
5.调用dc_activatesess()函数启动数据库捕获过程。
6.CDC数据通过智能大对象返回。需要通过智能大对象读取函数例如mi_lo_read()进行读取。使用session ID作为智能大对象的文件描述符参数。
7.解析智能大对象中返回的数据。在Java程序中可以使用IfxToJavaType类将一个byte stream转换为java的类和类型。
8.为每一个表调用一次cdc_endcapture()函数。
9.为每一个表调用一次dc_set_fullrowlogging()函数,关闭full-row logging。
10.调用cdc_closesess()关闭CDC的session。
注意: CDC数据中在开头会包含表结构信息,需要按照CDC_REC_TABSCHEMA的格式进行解析。解析之后可以获得表的字段组成,和各个字段的排列顺序,这将在解析CDC_REC_INSERT / CDC_REC_UPDBEF / CDC_REC_UPDAFT / CDC_REC_DELETE类型记录时使用到。具体示例参见4.3节。
2.3CDC记录基本格式
每条CDC记录通常由以下几个部分构成:
Common header.
Record-specific header
Record-content
1.Common header.
所有的CDC记录都是相同的。Common header 中的Record number字段用来表明当前记录的记录类型,需要使用Record number字段的值到syscdcv1数据库syscdcrectypes表中去匹配recnum字段。根据匹配到的记录中的recname字段可以获取当前记录的类型。例如是CDC_REC_INSERT还是CDC_REC_UPDBEF。
2.Record-specific header
这一部分根据CDC记录类型的不同而有着不同的格式。
3.Record-content
通常这一部分包含着数据变化部分内容。对于CDC_REC_INSERT / CDC_REC_UPDBEF / CDC_REC_UPDAFT / CDC_REC_DELETE,内容由以下几部分组成:
a.可变长度列的长度
如果记录中存在可变长度列的内容,每个列将对应4个字节的长度说明。这些长度说明的顺序与CDC_REC_TABSCHEMA记录中列的排列顺序相同。
b.固定长度列数据
如果记录存在固定长度列的内容,这些列将按照CDC_REC_TABSCHEMA记录中列的排列顺序出现。具体数据格式参见第6.1节。
c.可变长度列数据
如果记录存在可变长度列的内容,这些列将按照CDC_REC_TABSCHEMA记录中列的排列顺序出现。具体数据格式参见第6.2节。
|