アシストWebセミナーレポート「TalendによるPostgreSQLとOracle Databaseのデータ連携の勘所」

2011年9月29日(木)

アシストは、2011年7月26日に、Talendを用いてPostgreSQLとOracle Databaseをデータ連携させる方法を紹介するWebオンラインセミナーを開催した。セミナーでは、「OSSに興味があるものの、不安を抱いているOracleユーザー」を対象に、具体的な連携手法や、機能、性能の検証結果が、30分で分かりやすく解説された。本稿では、セミナーの様子をレポートする。

RDBMS活用の現状とTalendのデータ連携について

オープン・ソース(OSS)のデータベース・サーバー・ソフト「PostgreSQL」の人気が高まっている。BSD(Berkeley Software Distribution)ライセンスのため、低コストかつ自由に構築でき、しかもベンダーに依存することなく継続的に利用ができるのが最大の魅力だ。特にコスト面では、初期ライセンス費用だけでなく、保守コストも大幅に削減可能で、5年間のTCOを比較すると、PostgreSQLは商用RDBMSの1/5という費用での利用が可能という例を示した。

OSSというと商用と比べて機能的に見劣りすると考えられがちだが、商用RDBMSでも全ての機能を活用しているという例は少なく、実際に使っているのは一部の機能というケースが多いという。

基幹システムにはOracle Databaseを利用し、業務システムにはPostgreSQLといった用途別の使い分けや、フロントDBにPostgreSQLを、バックエンドDBにOracle Databaseを利用するといった負荷分散を目的とした使い分けなど、RDBMSを使い分ける動きはこれからも増えていくことが予想される。

RDBMSを使い分ける際には、システム要件に合わせてRDBMSを選択するスキル、複数のRDBMSを活用するための技術者育成コスト、保守管理コストなどの課題があるが、最大の課題は「異機種、異バージョンのRDBMS間でのデータ連携」である。

既存システムとのデータ連携・統合という課題を解決するのがデータ統合ソフト「Talend」(開発会社は、仏Talend SA)だ。アシストでは2011年からTalendの取り扱いを始め、有償版の「Talend Integration Suite」の販売、サポートから、無償のスターターキット配布も行っている。

TalendによるPostgreSQLとOracle Databaseのデータ連携についてはこちらの記事でも詳しく解説しているので、参考にしていただきたい。

Talendの特徴的な機能が、データの変更を検知して別データベースに反映する仕組みを提供する、Change Data Capture(CDC)だ。CDCを使うことで、容易にPostgreSQLとOracle Databaseのデータ連携を実現することができる。

CDCによるシステム連携手段は、Triggerモードと再実行ログモードの2つがあるが、今回のセミナーで検証に用いられたのはTriggerモードを利用したデータ連携だ。Triggerモードは、まずTalend上でソーステーブルにTriggerを設置し、CDC設定時に変更テーブルを作成するもの。ソーステーブルへのデータの挿入、更新、削除といった変更の操作と同時に、Triggerにより変更データが抽出され、変更テーブル内に格納される。変更データは、変更テーブルとソーステーブルのデータを用いて、ターゲットデータベースでデータ連携される、といった仕組みだ(図1)。

図1 Triggerモードによるデータ伝播の全体像(セミナー資料より抜粋)(クリックで拡大)

CDCの機能検証

アシストでは当セミナーに先駆けて、実際にTalendのCDC機能を利用して、その機能と性能の検証を行った。

最初に機能の検証として、コールセンターシステムの擬似アプリケーションを利用して、夜間バッチにて変更データを伝播させる「オフライン同期」と、OLTPの処理データをバックエンドのデータベースにリアルタイムで変更データの同期を取る「オンライン同期」の2つの機能で、CDCによる変更データの伝播が正常に動作するかを確認した。

図2 オフライン同期時の動作検証(セミナー資料より抜粋)(クリックで拡大)

最初にオフライン同期の動作検証。データ伝播のためのジョブ設計は、ログマスタ表のUPDATE処理のデータ伝播→ログ詳細表のINSERT処理のデータ伝播→ログ詳細表のDELETE処理のデータ伝播となっており、問題なく変更データの伝播が可能なことを確認した。

夜間バッチなど、処理が行われていないデータベースに対して、CDCで変更データの伝播を実行する場合は、比較的容易に実行可能であるということを検証できた。

図3 オンライン同期時の動作検証(セミナー資料より抜粋)(クリックで拡大)

次にオンライン同期での動作検証を行ったが、ジョブによるデータ同期後にデータ不整合が発生した。データ伝播のためのジョブ設計はオフライン同期検証の際と同じものを用いたが、UPDATE、INSERT、DELETEの各ステップで変更テーブルを参照したため、同期するデータに一貫性が取れなかったというのが、データ不整合の原因だった。

このデータ不整合を回避するには、変更テーブルへの読み取り一貫性を保つために、処理ステップを分けずに、伝播処理を同処理内で実行するようにジョブ設計をすることが必要となる。さらに、親子関係にある表の場合は、参照整合性制約違反にならないよう、データ伝播の順番を考慮した設計が必要となる。

図4 データ不整合に対する回避策(セミナー資料より抜粋)(クリックで拡大)

OLTP系のシステムでリアルタイムにCDCで変更データの同期を実行する場合は、トランザクション制御や制約関連などを考慮してジョブを設計しなければならない。

なお、ソーステーブルに実行されたトランザクションのDML実行順序を正確に伝播させる場合、DML実行順序を変更テーブルに記録できるTriggerを別途作成し、伝播ジョブをTalendで生成する必要もある。

CDCの性能検証

次に、擬似オンライントランザクション処理の動作傾向から、OLTP系システムへCDCを採用するための参考情報を得るために、図3の環境を用いて、TriggerモードでのCDCの性能評価を行った。

図5 CDC性能評価の検証結果(セミナー資料より抜粋)(クリックで拡大)

検証結果は図5のとおりで、PostgreSQL+CDCでのTPSは、シングルとほぼ同等であり、トリガーによる変更データの蓄積や、同期処理のオーバーヘッドは小さく(図5 グラフ上)、処理性能に大きな影響は与えない。

また、非同期伝播のため同時接続セッション数の増加に伴い、同期遅延行数も増加する(図5 グラフ下)ので、データ同期要件に合わせた選定が必要となる。

まとめと今後の展開について

今回、CDCの機能と性能の検証を行い、オフラインであれば容易にデータの同期を行うことができること、オンラインでも設定などを工夫することにより、低コストでのデータ同期が可能であることを紹介した。

また、Talendはデータ連携だけでなく、データの移行にも有効なツールだ。例えば、Oracle DatabaseからPostgreSQL、PostgreSQLからOracle Databaseにデータを移行する際、通常であれば一旦DBを止めてデータを抽出し移行することになるが、Talendの変更差分を伝播できるという機能を利用すれば、もっと容易に移行することができる。

ある時点でデータキャプチャを設定して、そのまま運用を続け、いざ切り替えるというときに、変更差分を伝播し同期を行えば、移行の時間を大幅に短縮することが可能だ。

Talendの無償版は、アシストのWebサイトからもダウンロードできる。アシストを介してダウンロードした場合、Talendの使い方を日本語で書いたガイドや、日本語のチュートリアルなどが配布パッケージに同梱されているので、興味のある方は是非ダウンロードしてみてもらいたい。

アシストの配布パッケージには、Talendの操作手順を日本語で書いたガイドが含まれる(画像のクリックでダウンロード・ページを参照)

Webセミナーはアシストにとっても新しい試みではあるが、受講者からは好評を得たという。Web上ではチャットも可能で、講師と受講者のインタラクティブなやり取りも可能だ。今後もテーマやニーズにあわせ、実際に出席する形のセミナーとWebセミナーを使い分けながら開催していくという。手軽に参加できるので、興味のあるテーマの際には参加を検討してはいかがだろうか。

アシストのセミナー情報
https://www.ashisuto.jp/?ty=seminar

Talend Integration Suite
http://www.ashisuto.co.jp/prod/talend/sum/lineup/1195108_4691.html

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています