DataSpiderデザインパターンβ 第6回 設計パターン 「Database Monitoring Pattern」

Avatar
dstn

DataSpiderデザインパターンβ 第6回 設計パターン 「Database Monitoring Pattern」


今回は、システム設計に関するパターンとして、複数データベース間の同期や、データベースの変更をメールで通知する処理を自動で行う「Database Monitoring Pattern」を紹介します。これは、DataSpider Servistaに標準で搭載されている(※)トリガー「DBトリガー」を使用して、データベースのイベント(挿入・更新・削除)を検知し、連携処理(スクリプト)を実行するパターンとなります。

(※)Server Package版で標準搭載

 

1 課題


多くのシステムでRDB(リレーショナルデータベース)はデータストアの基盤として使用されている。このため、データ連携を行うタイミングとして「データベースの変更」をきっかけに行いたいというニーズは非常に大きい。たとえば、「フロントにあるデータベースと基幹データベースの情報をリアルタイムに同期させたい」「レコードが挿入されたらそのデータをメールで送付したい」といったシナリオが考えられる。

そのような要件に対応するには一般的にはデータベース固有のトリガーが使用される。しかし、データベースごとにそれぞれトリガーを設計する必要があり、さらにそこにデータの同期や変更情報の通知などの連携部分まで加わると、開発やメンテナンスにかかる工数が膨大になる懸念がある。

 

2 解決方法


DataSpider ServistaのDBトリガーを使用し、データベースのイベント(挿入・更新・削除)をポーリングで検知して、連携処理を自動で実行する。

 

3 説明


DBトリガーは、指定したデータベースのテーブルを一定間隔で監視し、ステータスカラムの値の状態によってスクリプトを実行させるトリガー機能である。
「挿入」「更新」「削除」の3つの監視イベントをトリガーで定義しておき、ステータスカラムの値(ステータス値)が定義された値になった場合にスクリプトを実行させる。

DBTrigger

たとえば、監視イベントを「挿入」、ステータス値「1」を「挿入」とした場合、ステータスカラムの値が「1」のデータを検知した場合にトリガーが発火する。
このようにステータスカラムを使用することにより、データベースの変更を検知できるようにしている。
また、監視イベントは複数組み合わせた設定が可能。

イベントで検知したデータはトリガーからスクリプトに渡され、後続の処理で使用することができる。
このデータを別のデータベースに反映させることで複数データベースの同期を実現でき、またメールの本文に記載して送信すれば変更の通知が自動でできるようになるなど、スクリプトの処理内容によって多彩な連携処理を行うことができる。

 

4 メリット


・以下のデータベースに対応 (2013年11月現在)
- Access、DB2、MySQL、Oracle、PostgreSQL、SQL Server、JDBC(汎用)、ODBC(汎用)、Dr.Sum EA、Amazon RDS、SQL Azure

・トリガーはGUIの操作で簡単に設定可能。複製や有効・無効の切り替えも容易

・監視を行う間隔は秒単位で指定可能。データベースの更新頻度に合わせて柔軟に設定できる

・スクリプトでは、多様な接続先(クラウド上のデータベースやSFA、オンプレミスのデータベース、ERP、グループウェア、レガシーシステムなど)との連携が、ノンプログラミング・簡単なGUI操作でできる

・データ処理の方法に変更があった場合も、DBトリガーで起動するスクリプトを変更する、もしくはスクリプトの改修を行うことで対応でき、メンテナンスコストの削減ができる

 

5 注意点


・DBトリガーの実行には、事前に監視対象のテーブルにステータス値を指定するカラムを用意する必要がある。
(ステータスカラムのデータ型は整数型(INTEGER)で、サイズは「5」以上にする。)

・DBトリガーで実行するスクリプトには、最上位にXML型スクリプト入力変数を設定する必要がある。

・DBトリガーの監視間隔を短くすることでリアルタイムに近い検知をすることができるが、その分データベースへのクエリ発行数が多くなりデータベースの負荷も高くなるため、注意する必要がある。

 

6 関連事項


・同じトリガー機能では、DataSpiderデザインパターンβ 第2回 設計パターン「 Executable FTP Server」でFTPトリガーを紹介している。

コメント

ログインしてコメントを残してください。

Powered by Zendesk