下表汇总了 publisher-level 参数及其属性:
Table 4-44 Publisher-Level 参数和属性
1 有触发器发布方式必需该参数。 2 这些参数是互斥的。
发布参数分为四个主要的子类别:
Disable Publisher? 参数指定是否禁用《发布者》通道。 如果禁用,则《发布者》通道不查询数据库事件。 与 Disable Subscriber? 参数不同,此时仍可以在《发布者》通道上发出数据库查询,以方便进行其它发布算法。
如果此参数设置为布尔值 True,《发布者》通道将被禁用。 如果此参数设置为布尔值 False,《发布者》通道将处于活动状态。
Disable Statement-Level Locking? 参数指定在执行每一条 SQL 语句以前,是否应在此通道上显式锁定数据库资源。 仅当 Enable Statement-Level Locking? 参数设置为布尔值 True 时,此参数才处于活动状态。
如果此参数设置为布尔值 True,则显式锁定数据库资源。 如果此参数设置为布尔值 False,则不显式锁定数据库资源。
Publication Mode 参数指定使用哪个发布算法。
如果设置为 1 (triggered),则《发布者》通道将巡回检测事件的事件日志表。 如果设置为 2 (triggerless),《发布者》通道将搜寻同步纲要中的所有表/视图以找到更改,并合成事件。
下表列出了此参数的属性:
对于有触发器发布,Enable Future Event Processing? 指定事件日志表中的行是按插入顺序(record_id 列)排序和处理,还是按时间顺序(event_time 列)排序和处理。
如果此参数设置为布尔值 True,则按插入顺序发布事件日志表中的行。 如果此参数设置为布尔值 False,则按时间顺序发布事件日志表中的行。
对于无触发器发布,Enable Future Event Processing 指定是否随每个事件一起发布数据库本地时间。 此附加信息可用于强制重试标有未来日期的事件。 为此,指定应在何时处理事件的某个列必须包含在利用此功能的每一个逻辑数据库类中,并作为仅用于通知的特性放入发布者过滤器。请参见Section H.0, 数据库描述符 DTD 。
数据库本地时间是作为每个 XDS 事件(例如添加、修改、删除)的特性发布的。 该特性的名称为 jdbc:database-local-time,其中的 jdbc 名称空间前缀已联结到 urn:dirxml:jdbc。 格式为 java.sql.Timestamp: yyyy-mm-dd hh:mm:ss.fffffffff 的 Java 字符串表示形式。 根据 Time Syntax 参数值,指明应在何时处理事件的值可以作为整数、规范字符串或 Java 字符串发布。请参见时间语法。
无论使用哪个发布语法,都可以对此值进行分析,并将此值与数据库本地时间值进行比较。 下表将时间语法映射到相应的分析方法。
Table 4-48 将时间语法映射到分析方法
|
时间语法 |
分析方法 |
|---|---|
|
整数 |
java.sql.Timestamp.valueOf(java.lang.String):java.sql.Timestamp |
|
规范字符串 |
com.novell.nds.dirxml.driver.jdbc.db.DSTime(java.lang.String, java.lang.String, java.lang.String, java.lang.String) |
|
java 字符串 |
java.sql.Timestamp.valueOf(java.lang.String):java.sql.Timestamp |
将两个时间值设置为常见的时戳对象表示形式后,可以使用以下方法对它们进行比较:
Section H.0, 数据库描述符 DTD 中提供了一个示例策略。
如果此参数设置为布尔值 True,则随每个事件发布本地数据库时间。 如果此参数设置为布尔值 False,则忽略这些信息。
下表列出了此参数的属性:
Driver for JDBC 可以使用四个有触发器发布参数中的任意一个。
Event Log Table Name 参数可指定用于储存发布事件的事件日志表的名称。
此处指定的表必须符合事件日志表的定义。
使用Tabel/View Names 时,可能需要对此表名显式进行纲要限定。 如果使用Schema Name,则使用该纲要名称对此表名隐式进行纲要限定。 如果此表不在隐式纲要中,则必须对其进行纲要限定。
下表列出了此参数的属性:
Table 4-50 Event Log Table Name:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
log-table |
|
Required? |
no1 |
|
Case-Sensitive? |
请参见未定界标识符的大小写问题。 |
|
Sample Value |
eventlog |
|
Default Value |
(none) |
|
Schema-Dependent |
True |
1 如果Publication Mode设置为1(有触发器发布),则此参数是必需的。
Delete Processed Rows? 参数指定是否从事件日志表中删除已处理的行。
如果此参数设置为布尔值 True,则删除已处理的行。 如果此参数设置为布尔值 False,则更新已处理行的 status 字段值。
为了减轻已处理行滞留在事件日志表中所造成的性能影响,建议将这些行定期移到一个历史表中。执行下列操作之一:
下表列出了此参数的属性:
Table 4-51 Delete Processed Rows?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
delete-from-log |
|
Required? |
no |
|
Default Value |
0 (no) |
|
Legal Value |
1, yes, true (yes) 0, no, false (no) |
|
Schema-Dependent |
True |
NOTE:将此参数设置为布尔值 False 会降低发布性能,除非定期从事件日志表中去除已处理的行。
Allow Loopback? 参数指定是否应发布驱动程序的数据库用户帐户引发的事件。
如果此参数设置为布尔值 True,则发布回送事件。 如果此参数设置为布尔值 False,则忽略回送事件。
下表列出了此参数的属性:
Table 4-52 Allow Loopback?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
allow-loopback |
|
Required? |
no |
|
Default Value |
0 (no) |
|
Legal Value |
1, yes, true (yes) 0, no, false (no) |
|
Schema-Dependent |
True |
NOTE:将此参数设置为布尔值 True 可能会降低性能,因为这样可能会发布无关的事件。
Driver for JDBC 可使用一个无触发器发布参数。 但是,状态目录参数也会影响无触发器发布。
Startup Option 参数指定启动无触发器发布者时会发生哪些情况。
下表列出了此参数的属性:
Table 4-54 Startup Option:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
startup-option |
|
Required? |
no |
|
Default Value |
1 (process all changes) |
|
Legal Value |
1 (resync all objects) 2 (process future changes only) 3 (process all changes) |
|
Schema-Dependent |
True |
IMPORTANT:无触发器发布发生以下更改时可能会强制重新同步:
Polling Interval (In Seconds) 参数指定进入下一个巡回检测循环之前,需要经过多少秒的非活动状态时间。
下表列出了此参数的属性:
Table 4-55 Polling Interval (In Seconds):属性
|
属性 |
值 |
|---|---|
|
Tag Name |
polling-interval |
|
Required? |
no |
|
Default Value |
10 (seconds) |
|
Legal Value |
1-604800 (1 week) |
|
Schema-Dependent |
True |
NOTE:建议将此值设置为不小于 10 秒。
Publication Time of Day 参数指定每一天发布开始的时间。 时间被理解为服务器本地平均时间(运行驱动程序的服务器上的时间)。
下表列出了此参数的属性:
Table 4-56 Publication Time of Day:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
time-of-day |
|
Required? |
no |
|
Sample Value |
13:00:00 (1PM) |
|
Default Value |
(none) |
|
Legal Value |
hh:mm:ss (h = hour, m = minute, s = second) |
|
Schema-Dependent |
True |
NOTE:此参数会覆盖 Polling Interval (In Seconds) 参数。请参见Polling Interval (In Seconds)。
Post Polling Statements 参数指定在每个活动的巡回检测循环结束时执行的 SQL 语句。 活动的巡回检测循环是指发生了某些发布活动的巡回检测循环。
此参数的主要用途是允许发布活动发生之后清理事件日志表。
可能需要对这些语句中参照的任何数据库对象(例如表、储存过程和函数)显式进行纲要限定。
下表列出了此参数的属性:
Table 4-57 Post Polling Statements:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
post-poll-stmt |
|
Required? |
no |
|
Case-Sensitive? |
请参见未定界标识符的大小写问题。 |
|
Delimiters |
semicolon ( ; ) |
|
Sample Value |
DELETE FROM direct.direct_process |
|
Default Value |
(none) |
|
Legal Value |
(any set of legal SQL statements) |
|
Schema-Dependent |
True |
Batch Size 参数指定在单个发布文档中发送的事件数。
基本上是批越大,性能越好。
提交成本也可能很高。
此参数定义了一个上限。 在某些情况下,《发布者》通道可能覆盖指定的值。 选择上限 128 可以最大限度地降低 Java 内存堆溢出的可能性,并可以减少驱动程序关闭时出现的延迟终止的情况。
下表列出了此参数的属性:
Heartbeat Interval (In Minutes) 参数指定《发布者》通道在发送检测信号文档之前可以处于非活动状态的分钟数。 实际上,这一时间可以超过指定的分钟数。 也就是说,此参数定义的是下限。 仅当《发布者》通道处于非活动状态已经达到了指定的分钟数时,《发布者》通道才会发送检测信号文档。 发送的任何发布文档实际上都是检测信号文档。
下表列出了此参数的属性: