4.5 发布参数

下表汇总了 publisher-level 参数及其属性:

Table 4-44 Publisher-Level 参数和属性

显示名称

标签名称

样本值

默认值

必需

Disable Publisher?

disable

1(是)

0 (no)

no

Disable Statement-Level Locking?

disable-locking

1(是)

0 (no)

no

Publication Mode

publication-mode

2 (triggerless)

1 (triggered)

no

Event Log Table Name

log-table

indirect_process

yes1

Delete Processed Rows?

delete-from-log

0 (no)

1(是)

no

Allow Loopback?

allow-loopback

1(是)

0 (no)

no

Enable Future Event Processing?

handle-future-events

1(是)

0 (no)

no

启动选项

startup-option

 

 

no

Polling Interval (In Seconds)

polling-interval

60

10

no2

Publication Time of Day

time-of-day

15:30:00

(none)

no2

Post Polling Statements

post-poll-stmt

DELETE FROM direct.direct_process

(none)

no

Batch Size

batch-size

16

1

no

Heartbeat Interval (In Minutes)

pub-heartbeat-interval

10

0

no

1 有触发器发布方式必需该参数。 2 这些参数是互斥的。

发布参数分为四个主要的子类别:

4.5.1 未分类参数

Disable Publisher?

Disable Publisher? 参数指定是否禁用《发布者》通道。 如果禁用,则《发布者》通道不查询数据库事件。 与 Disable Subscriber? 参数不同,此时仍可以在《发布者》通道上发出数据库查询,以方便进行其它发布算法。

如果此参数设置为布尔值 True,《发布者》通道将被禁用。 如果此参数设置为布尔值 False,《发布者》通道将处于活动状态。

Table 4-45 Disable Publisher?:属性

属性

Tag Name

disable

Required?

no

Default Value

0 (no)

Legal Value

1, yes, true (yes) 0, no, false (no)

Schema-Dependent

True

Disable Statement-Level Locking?

Disable Statement-Level Locking? 参数指定在执行每一条 SQL 语句以前,是否应在此通道上显式锁定数据库资源。 仅当 Enable Statement-Level Locking? 参数设置为布尔值 True 时,此参数才处于活动状态。

如果此参数设置为布尔值 True,则显式锁定数据库资源。 如果此参数设置为布尔值 False,则不显式锁定数据库资源。

Table 4-46 Disable Statement-Level Locking?:属性

属性

Tag Name

disable-locking

Required?

no

Default Value

0 (no)

Legal Value

1, yes, true (yes) 0, no, false (no)

Schema-Dependent

True

Publication Mode

Publication Mode 参数指定使用哪个发布算法。

如果设置为 1 (triggered),则《发布者》通道将巡回检测事件的事件日志表。 如果设置为 2 (triggerless),《发布者》通道将搜寻同步纲要中的所有表/视图以找到更改,并合成事件。

下表列出了此参数的属性:

Table 4-47 Publication Mode:属性

属性

Tag Name

publication-mode

Required?

no

Default Value

1 (triggered)

Legal Value

1 (triggered) 2 (triggerless)

Schema-Dependent

True

Enable Future Event Processing?

对于有触发器发布,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

将两个时间值设置为常见的时戳对象表示形式后,可以使用以下方法对它们进行比较:

  • com.novell.nds.dirxml.driver.jdbc.db.TimestampUtil.before(java.sql.Timestamp, java.sql.Timestamp):boolean
  • com.novell.nds.dirxml.driver.jdbc.db.TimestampUtil.after(java.sql.Timestamp, java.sql.Timestamp):boolean

Section H.0, 数据库描述符 DTD 中提供了一个示例策略。

如果此参数设置为布尔值 True,则随每个事件发布本地数据库时间。 如果此参数设置为布尔值 False,则忽略这些信息。

下表列出了此参数的属性:

Table 4-49 Enable Future Event Processing?:属性

属性

Tag Name

handle-future-events

Required?

no

Default Value

0 (no)

Legal Value

1, yes, true (yes) 0, no, false (no)

Schema-Dependent

True

4.5.2 有触发器发布参数

Driver for JDBC 可以使用四个有触发器发布参数中的任意一个。

Event Log Table Name

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?

Delete Processed Rows? 参数指定是否从事件日志表中删除已处理的行。

如果此参数设置为布尔值 True,则删除已处理的行。 如果此参数设置为布尔值 False,则更新已处理行的 status 字段值。

为了减轻已处理行滞留在事件日志表中所造成的性能影响,建议将这些行定期移到一个历史表中。执行下列操作之一:

  • 通过Post Polling Statements中的参数调用清理储存过程。
  • 在事件日志表上放置一个 before-delete 触发器,用于截获针对事件日志表执行的删除事件,以及在将删除的行从事件日志表中删除之前,将它们移至历史表。

下表列出了此参数的属性:

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?

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 可能会降低性能,因为这样可能会发布无关的事件。

4.5.3 无触发器发布参数

Driver for JDBC 可使用一个无触发器发布参数。 但是,状态目录参数也会影响无触发器发布。

启动选项

Startup Option 参数指定启动无触发器发布者时会发生哪些情况。

Table 4-53 启动选项 设置和结果

设置

结果

1

假定已更改且已发布了所有对象。

2

忽略过去和现在的更改。

3

发布过去和现在的所有更改。

下表列出了此参数的属性:

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:无触发器发布发生以下更改时可能会强制重新同步:

  • 如果使用无触发器发布,更改 鉴定环境 参数中除 URL 属性以外的任何项目都会强制重新同步所有对象。
  • 如果使用无触发器发布,更改 Schema Name 参数值会强制重新同步所有对象。
  • 更改 State Directory 参数值。

4.5.4 巡回检测参数

Polling Interval (In Seconds)

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

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

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

Batch Size 参数指定在单个发布文档中发送的事件数。

基本上是批越大,性能越好。

  • 批越大,则在网络中沿两个方向所需的往返次数就越少。
  • 单个文档中的事件越多,则从《发布者》通道到 Identity Manager 引擎(假定没有使用向后查询事件)所需的往返次数就越少。
  • 较大的批可以最大限度地减少从《发布者》通道到数据库的往返次数(假定第三方 JDBC 驱动程序和数据库支持批处理)。
  • 在本地文件系统中,批越大,所需的状态文件提交次数就较少。

    提交成本也可能很高。

此参数定义了一个上限。 在某些情况下,《发布者》通道可能覆盖指定的值。 选择上限 128 可以最大限度地降低 Java 内存堆溢出的可能性,并可以减少驱动程序关闭时出现的延迟终止的情况。

下表列出了此参数的属性:

Table 4-58 Batch Size:属性

属性

Tag Name

batch-size

Required?

no

Default Value

1

Legal Value

1 to 128

Schema-Dependent

True

Heartbeat Interval (In Minutes)

Heartbeat Interval (In Minutes) 参数指定《发布者》通道在发送检测信号文档之前可以处于非活动状态的分钟数。 实际上,这一时间可以超过指定的分钟数。 也就是说,此参数定义的是下限。 仅当《发布者》通道处于非活动状态已经达到了指定的分钟数时,《发布者》通道才会发送检测信号文档。 发送的任何发布文档实际上都是检测信号文档。

下表列出了此参数的属性:

Table 4-59 Heartbeat Interval (In Minutes):属性

属性

Tag Name

pub-heartbeat-interval

Required?

no

Default Value

0

Legal Value

0 to 2,147,483,647 (java.lang.Integer.MAX_VALUE)

Schema-Dependent

False