4.5 発行パラメータ

次の表は、発行者レベルのパラメータとそのプロパティの概要を示します。

Table 4-44 発行者レベルのパラメータおよびプロパティ

表示名

タグ名

サンプル値

デフォルト値

必須

発行者を使用不可にしますか?

disable

1 (はい)

0 (いいえ)

×

ステートメントレベルのロックを使用不可にしますか?

disable-locking

1 (はい)

0 (いいえ)

×

発行モード

publication-mode

2 (トリガなし)

1 (トリガ付き)

×

イベントログのテーブル名

log-table

indirect_process

(なし)

1

処理された行を削除しますか?

delete-from-log

0 (いいえ)

1 (はい)

×

ループバックを許可しますか?

allow-loopback

1 (はい)

0 (いいえ)

×

将来のイベント処理を有効にしますか?

handle-future-events

1 (はい)

0 (いいえ)

×

起動オプション

startup-option

 

 

×

ポーリング間隔(秒)

polling-interval

60

10

×2

Publication Time of Day (発行時刻)

time-of-day

15:30:00

(なし)

×2

ポストポーリングステートメント

post-poll-stmt

DELETE FROM direct.direct_process

(なし)

×

バッチサイズ

batch-size

16

1

×

ハートビート間隔(分)

pub-heartbeat-interval

10

0

×

1 トリガ付き発行モードでは必須です。2 これらのパラメータは相互排他的です。

発行パラメータは、大きく4つのサブカテゴリに分けられます。

4.5.1 カテゴリなしパラメータ

発行者を使用不可にしますか?

「発行者を使用不可にしますか?」パラメータは、発行者チャネルが使用不可かどうかを指定します。使用不可にした場合、発行者チャネルはデータベースイベントを問い合わせません。ただし、その場合も、「購読者を使用不可にしますか?」パラメータとは異なり、発行者チャネルでデータベースクエリを発行して、代わりの発行アルゴリズムを容易にすることはできます。

このパラメータを論理値のTrueに設定した場合、発行者チャネルは使用不可です。このパラメータを論理値のFalseに設定した場合、発行者チャネルはアクティブです。

Table 4-45 発行者を使用不可にしますか?: プロパティ

プロパティ

タグ名

disable

必須?

×

デフォルト値

0 (いいえ)

有効な値

1、yes、true (はい) 0、no、false (いいえ)

スキーマ依存

True

ステートメントレベルのロックを使用不可にしますか?

「ステートメントレベルのロックを使用不可にしますか?」パラメータは、各SQLステートメントを実行する前にデータベースリソースがこのチャネルで明示的にロックする必要があるかどうかを指定します。このパラメータは、「ステートメントレベルのロックを有効にしますか?」パラメータが論理値のTrueに設定されている場合のみアクティブです。

このパラメータを論理値のTrueに設定した場合、データベースリソースは明示的にロックされます。このパラメータを論理値のFalseに設定した場合、データベースリソースは明示的にはロックされません。

Table 4-46 ステートメントレベルのロックを使用不可にしますか?: プロパティ

プロパティ

タグ名

disable-locking

必須?

×

デフォルト値

0 (いいえ)

有効な値

1、yes、true (はい) 0、no、false (いいえ)

スキーマ依存

True

発行モード

「発行モード」パラメータは、使用する発行アルゴリズムを指定します。

1 (トリガ付き)に設定した場合、発行者チャネルは、イベントログテーブルでイベントをポールします。2 (トリガなし)に設定した場合、発行者チャネルは、同期スキーマ内のすべてのテーブル/ビューで変更を探し、イベントを同期します。

次の表は、このパラメータのプロパティのリストです。

Table 4-47 発行モード: プロパティ

プロパティ

タグ名

publication-mode

必須?

×

デフォルト値

1 (トリガ付き)

有効な値

1 (トリガ付き) 2 (トリガなし)

スキーマ依存

True

将来のイベント処理を有効にしますか?

トリガ付き発行の場合、「将来のイベント処理を有効にしますか?」パラメータは、イベントログテーブル内の行が挿入順(record_id列)と年代順(event_time列)のどちらで並べられ処理されるかを指定します。

このパラメータを論理値のTrueに設定した場合、イベントログテーブルの行は、挿入順に発行されます。このパラメータを論理値のFalseに設定した場合、イベントログテーブルの行は、年代順に発行されます。

トリガなしの発行の場合、「将来のイベント処理を有効にしますか?」パラメータは、データベースのローカル時刻が各イベントと共に発行されるかどうかを指定します。この追加情報は、スケジュール指定されたイベントを強制的に再試行するために使用されます。これを機能させるには、イベントをいつ処理するかを指定する列が、この機能を使用する各論理データベースクラスに含まれ、発行者フィルタに通知のみの属性として配置されている必要があります。Section H.0, データベース記述子のDTDを参照してください。

データベースのローカル時刻は、各XDSイベント(追加、変更、削除など)の属性として発行されます。属性名は、jdbc:database-local-timeです。ここで、名前空間のプリフィックスjdbcは、urn:dirxml:jdbcにバインドされます。形式は、Java文字列表現のjava.sql.Timestamp: yyyy-mm-dd hh:mm:ss.fffffffffです。イベントをいつ処理するかを示す値は、「時間構文」パラメータの値に応じて、整数、標準文字列、または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 将来のイベント処理を有効にしますか?: プロパティ

プロパティ

タグ名

handle-future-events

必須?

×

デフォルト値

0 (いいえ)

有効な値

1、yes、true (はい) 0、no、false (いいえ)

スキーマ依存

True

4.5.2 トリガ付き発行パラメータ

JDBC用ドライバは、4つのトリガ付き発行パラメータをどれでも使用できます。

イベントログのテーブル名

「イベントログのテーブル名」パラメータは、発行イベントが保存されるイベントログテーブルの名前を指定します。

ここで指定する名前は、イベントログテーブルの定義に従う必要があります。

テーブル/ビュー名を使用する場合は、通常このテーブル名を明示的にスキーマ修飾する必要があります。スキーマ名を使用する場合は、このテーブル名は、そのスキーマ名で暗黙的にスキーマ修飾されます。このテーブルが暗黙的なスキーマ以外のスキーマにある場合は、スキーマ修飾する必要があります。

次の表は、このパラメータのプロパティのリストです。

Table 4-50 イベントログのテーブル名: プロパティ

プロパティ

タグ名

log-table

必須?

×1

大文字と小文字を区別?

区切りのない識別子での大文字と小文字の区別を参照してください。

サンプル値

eventlog

デフォルト値

(なし)

スキーマ依存

True

1 このパラメータは、発行モードを1 (トリガ付き発行)に設定した場合は必須です。

処理された行を削除しますか?

「処理された行を削除しますか?」パラメータは、処理された行をイベントログテーブルから削除するかどうかを指定します。

このパラメータを論理値のTrueに設定した場合、処理された行は削除されます。このパラメータを論理値のFalseに設定した場合、処理された行のstatusフィールド値が更新されます。

処理された行がイベントログテーブルに残ることによって起こるパフォーマンスへの影響を緩和するために、定期的に行を履歴テーブルに移動することをお勧めします。このためには、次のいずれかを実行します。

  • ポストポーリングステートメントパラメータを通じてクリーンアップのストアドプロシージャを呼び出す。
  • イベントログテーブルにbefore-deleteトリガを配置して、イベントログテーブルに対して実行される削除イベントを中断し、行がイベントログテーブルから削除される前に、その行を履歴テーブルに移動する。

次の表は、このパラメータのプロパティのリストです。

Table 4-51 処理された行を削除しますか?: プロパティ

プロパティ

タグ名

delete-from-log

必須?

×

デフォルト値

0 (いいえ)

有効な値

1、yes、true (はい) 0、no、false (いいえ)

スキーマ依存

True

NOTE:このパラメータを論理値のFalseに設定した場合、処理済みの行を定期的にイベントログテーブルから削除しない限り、発行のパフォーマンスが低下します。

ループバックを許可しますか?

「ループバックを許可しますか?」パラメータは、ドライバのデータベースユーザアカウントによるイベントを発行するかどうかを指定します。

このパラメータを論理値のTrueに設定した場合、ループバックイベントが発行されます。このパラメータを論理値のFalseに設定した場合、ループバックイベントは無視されます。

次の表は、このパラメータのプロパティのリストです。

Table 4-52 ループバックを許可しますか?: プロパティ

プロパティ

タグ名

allow-loopback

必須?

×

デフォルト値

0 (いいえ)

有効な値

1、yes、true (はい) 0、no、false (いいえ)

スキーマ依存

True

NOTE:このパラメータを論理値のTrueに設定した場合、外部からのイベントが発行されることがあるので、パフォーマンスが低下する可能性があります。

4.5.3 トリガなし発行パラメータ

JDBC用のドライバは、1つのトリガなし発行パラメータを使用できます。ただし、状態ディレクトリパラメータも、トリガなし発行に影響します。

起動オプション

「起動オプション」パラメータは、トリガなし発行の開始時に何を行うかを指定します。

Table 4-53 起動オプション: 設定および結果

設定

結果

1

すべてのオブジェクトが変更されたと見なされ、再発行されます。

2

過去および現在の変更は無視されます。

3

過去および現在のすべての変更が発行されます。

次の表は、このパラメータのプロパティのリストです。

Table 4-54 起動オプション: プロパティ

プロパティ

タグ名

startup-option

必須?

×

デフォルト値

1 (すべての変更を処理)

有効な値

1 (すべてのオブジェクトを再同期) 2 (将来の変更のみを処理) 3 (すべての変更を処理)

スキーマ依存

True

IMPORTANT:トリガなし発行では、次の変更によって強制的に再同期できます。

  • 認証コンテキスト」パラメータで、URLプロパティ以外の何らかの変更を行うと、トリガなし発行が使用されるときにすべてのオブジェクトが強制的に再同期されます。
  • スキーマ名」パラメータの値を変更すると、トリガなし発行が使用されるときにすべてのオブジェクトが強制的に再同期されます。
  • 「状態ディレクトリ」パラメータの値を変更すると再同期されます。

4.5.4 ポーリングパラメータ

ポーリング間隔(秒)

「ポーリング間隔(秒)」パラメータは、ポーリングサイクルの間にアクティブでない状態で経過する秒数を指定します。

次の表は、このパラメータのプロパティのリストです。

Table 4-55 ポーリング間隔(秒): プロパティ

プロパティ

タグ名

polling-interval

必須?

×

デフォルト値

10 (秒)

有効な値

1~604800 (1週間)

スキーマ依存

True

NOTE:この値は10秒以上に設定することをお勧めします。

Publication Time of Day (発行時刻)

「Publication Time of Day (発行時刻)」パラメータは、各日の何時に発行を開始するかを指定します。時刻は、サーバのローカル時刻(ドライバが実行されているサーバでの時刻)を意味すると解釈されます。

次の表は、このパラメータのプロパティのリストです。

Table 4-56 Publication Time of Day (発行時刻): プロパティ

プロパティ

タグ名

time-of-day

必須?

×

サンプル値

13:00:00 (午後1時)

デフォルト値

(なし)

有効な値

hh:mm:ss (h =時、m =分、s =秒)

スキーマ依存

True

NOTE:このパラメータは、「ポーリング間隔(秒)」パラメータを上書きします。ポーリング間隔(秒)を参照してください。

ポストポーリングステートメント

「ポストポーリングステートメント」パラメータは、各アクティブポーリングサイクルの最後に実行されるSQLステートメントを指定します。アクティブポーリングサイクルは、何らかの発行アクティビティが発生するサイクルです。

このパラメータは、主に、発行アクティビティ後のイベントログテーブルのクリーンアップを可能にするために使用されます。

通常は、これらのステートメントで参照されるデータベースオブジェクト(テーブル、ストアドプロシージャ、関数など)を明示的にスキーマ修飾する必要があります。

次の表は、このパラメータのプロパティのリストです。

Table 4-57 ポストポーリングステートメント: プロパティ

プロパティ

タグ名

post-poll-stmt

必須?

×

大文字と小文字を区別?

区切りのない識別子での大文字と小文字の区別を参照してください。

区切り文字

セミコロン

サンプル値

DELETE FROM direct.direct_process

デフォルト値

(なし)

有効な値

(有効なSQLステートメントの任意のセット)

スキーマ依存

True

バッチサイズ

「バッチサイズ」パラメータは、1つの発行ドキュメントで送信されるイベント数を指定します。

基本的に、バッチが大きいほどパフォーマンスが向上します。

  • バッチが大きいと、ネットワーク上の双方向の移動回数が少なくて済みます。
  • 1つのドキュメント内のイベントが多いと、発行者チャネルからIdentity Managerエンジン(クエリバックイベントが使用されないと仮定)への移動回数が少なくて済みます。
  • バッチが大きいと、発行者チャネルからデータベースへの移動回数が最小限になります(サードパーティ製のJDBCドライバおよびデータベースがバッチ処理をサポートしていると仮定)。
  • バッチが大きいと、ローカルファイルシステムでの状態ファイルへのコミット数が少なくて済みます。

    コミットにもコストがかかる場合があります。

このパラメータは、上限を定義します。発行者チャネルは、指定した値を一定の条件下で上書きする可能性があります。Javaヒープのオーバーフローの可能性を最小化し、ドライバのシャットダウン時に発行者スレッド終了が遅延するのを短縮するために、上限として128が選択されています。

次の表は、このパラメータのプロパティのリストです。

Table 4-58 バッチサイズ: プロパティ

プロパティ

タグ名

batch-size

必須?

×

デフォルト値

1

有効な値

1~128

スキーマ依存

True

ハートビート間隔(分)

「ハートビート間隔(分)」パラメータは、発行者チャネルが非アクティブになってからハートビートドキュメントを送信するまでに待機する時間(分)を指定します。実際には、指定した分数よりも長い時間が経過することがあります。つまり、このパラメータは下限を定義します。発行者チャネルは、それが非アクティブ状態になってから指定した時間(分)が経過した場合にだけ、ハートビートドキュメントを送信します。送信される発行ドキュメントは、実質上、ハートビートドキュメントです。

次の表は、このパラメータのプロパティのリストです。

Table 4-59 ハートビート間隔(分): プロパティ

プロパティ

タグ名

pub-heartbeat-interval

必須?

×

デフォルト値

0

有効な値

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

スキーマ依存

False