レベル: 初級 Editorial staff, editorial staff, FIT Team, IBM China Development Lab
2005年 11月 30日 カンタン!DB2テクテク第1歩 DPropR-第1話
はじめに
データの複製(以下レプリケーションと記述します)は増大していくデータ管理の局面で重要な役割を果たします。基幹データを各ローカルサイトにレプリケーションして利用することは次のようなメリットを生み出します。
- 各ローカルサイトでのデータ制御を実現し、データの参照・加工における基幹システムへの影響を抑えることができる
- 中央サイトの基幹データにアクセスが集中することによる、ネットワークや、CPU・メモリーなどのさまざまなリソースのボトルネックを回避することができる。
- エンドユーザー指向の柔軟なデータ加工が可能。
レプリケーションのためのIBM製品にはいくつかのものがありますが、ここでは、リレーショナルデータベース用のレプリケーション製品であるDB2 DataPropagatorとDataJoinerについてとりあげます。
DB2 DataPropagatorはリレーショナルデータベース群のデータのコピー(レプリケーション)を自動的に実行する製品あるいはUDBの機能群です。プラットフォームがOS/390の場合、IBM
DB2 DataPropagator、OS/400の場合、DB2 DataPropagator for AS/400という、DB2とは別の製品としての提供になります。その他のプラットフォームではDB2本体に付属する機能として無償で提供されます。
DataJoinerは他社製のリレーショナルデータベースとのレプリケーションの際に必要な製品です。DataJoinerを通して、非DB2のデータをあたかもDB2のデータであるかのように照会・更新の処理をすることができます。DataJoinerには、DataPropagatorの機能が含まれています。
DataPropagator(以下DpropRと記述します)の特長は主に次のようなものです。
- プラットフォーム共通の一貫したアーキテクチャ・インターフェース。
- 既存の表に変更を加えずに変更分の自動的なレプリケーションが可能。
- レプリケーションは非同期に行われる。
- レプリケーションのタイミングは数分から1年間隔まで、またはイベント起動のレプリケーションも可能。
- ソース表全体のみでなく、特定の列や行をレプリケーションすることが可能。
- レプリケーションの際にデータを加工することができる。
- 変更の差分反映も全件更新も可能。
DpropRの構成要素 − Capture
DpropRが提供するデータのレプリケーションは次の3つのコンポーネントからなります。
- ソースデータベースの表やビューから変更のあったデータを取り込むCapture
- ソース表から取り込んだ変更データを同じまたは別のデータベースのターゲット表(1つでも複数でも可)にコピーするApply
- レプリケーション環境の仕様を作成・管理するツール
Captureのしくみはソース表がDB2か非DB2かによって異なります。ソース表がDB2の場合、変更情報の取り込みはCaptureプログラムがソース表のログファイルを読み込んで、ソース表に加えられた全ての変更を収集します。DB2はすべてのトランザクション処理をログファイルに記録しているので、Captureプログラムはソース表に直接アクセスしなくとも、DB2のログファイルを監視することにより、ソース表から変更レコードを検出することができるのです。収集された変更情報は一時的に変更データ表またはCD(Change
Data)表とよばれる表に保管されます。さらに、Captureプログラムはコミット済み作業単位に関する情報を作業単位表またはUOW(Unit Of Work)表とよばれる表に保管します。これらの表は、レプリケーション対象のソースを定義する時に自動的に作成されます。
ソース表がOracle/MS SQL Serverなどの非DB2の場合は、Captureプログラムはソース表のログファイルを読むことができません。そこで変更情報の取り込みはCaptureトリガーが行います。非DB2のデータベースをソース表として定義する際に各ソース表に対して3つのトリガー、すなわち、DELETE/UPDATE/INSERTが作成されます。Captureトリガーは、定義されたソース表に対して削除・更新・挿入操作が行われた時に、コミットされた変更データを整合性変更データ表またはCCD(Consistent
Change Data)表とよばれる表に書き込みます。
Captureプログラムはソース表の存在するサーバーで、1つのソースサーバーに対して1つ稼動させます。DB2/390あるいはDB2/400がソースサーバーになる場合、Captureはサブシステム単位で稼動します。Unix/Windows/Linux上のDB2では、データベース単位でCaptureプログラムを稼動させます。
図1はCaptureのしくみを模式的にあらわしたものです。
図1.Captureのしくみ
DpropRの構成要素 − Apply
ApplyはApplyプログラムによって実行されます。差分更新を反映する場合は、ApplyプログラムはCD表あるいはCCD表から更新情報を読み取り、ターゲット表に反映させます。CCD表にはすでにコミット済みのデータが格納されているので、Applyプログラムは未反映の変更データを抽出し、そのままターゲット表にコピーします。CD表にはソース表に加えられた変更すべてが書き込まれるので、Applyプログラムはコミットされた情報を、UOW表とのJOINによって抽出します。全件データのリフレッシュ時には、ソース表またはソース表に対して作成されたビューからデータを直接読み、データをターゲット表に書き込みます。ターゲット表は1つでも複数でも可能です。ビューを作成して、複数の表に対して変更を反映させることもできます。
CD表・CCD表はソース表と同一データベース内に作成されます。たとえば、Oracleの表をソース表とする場合、CCD表はOracleのデータベース内に作成されます。ApplyプログラムからCCD表へのアクセスはDataJoinerを経由して行われます。
Applyプログラムはターゲット表が存在するサーバーで実行させるのが一般的ですが、ソース表・CD/CCD表などレプリケーションに必要なシステム制御表・ターゲット表にアクセスできる、任意のサーバーで実行可能です。
DB2 Server VSEおよびVM版にはApply機能は提供されていません。ターゲットサーバーがVSEあるいはVMになる場合は、別途Applyプログラム用のサーバーをたてる必要があります。
図2はApplyプログラムによる差分データ反映のしくみを模式的にあらわしたものです。
図2.Applyのしくみ
DpropRの構成要素 − 管理ツール
レプリケーション環境の仕様を作成・管理するツールはDB2ファミリー間のレプリケーションの場合は、DB2 コントロール・センターを使用します。非DB2とのレプリケーションを行う場合は、DJRA(DataJoinerReplicationAdministration)というツールを使用します。これらのツールで次のようなことができます。
- 表あるいはビューをレプリケーション対象のソースとして定義する。
- レプリケーションソース定義を削除する。
- レプリケーションに必要な各種制御表を作成する。
- レプリケーションのタイミング・頻度・起動のためのイベントを定義する。
- レプリケーション前後で実行するSQLステートメントあるいはストアードプロシージャーを定義する。
- レプリケーション処理を活動化・非活動化する。
Control CenterはUnix/Linux/Windowsの各プラットフォームで稼動できます。DJRAはWindowsプラットフォームのみのサポートになります。
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| PDF形式 | dpropr01.pdf | 147KB | HTTP |
|---|
参考文献
著者について  | |  | developerWorks Information Management team |
記事の評価
|