来る9月11日開催の「PostgreSQL活用事例セミナー」では、PostgreSQLを実際の業務で利用するユーザ企業様の事例をご紹介します。セミナー詳細については本記事の一番下もご参照ください。
最も時間を要する移行後のテスト工程
近年、PostgreSQLが採用される機会が増えていますが、既存システムからの置きかえの場合、異種データベースからPostgreSQLへの「移行手順が確立されていない」ことが重要な課題の1つとして挙げられ、実際の移行は過去の経験則や点在するノウハウに依存しているのが実状です。
今回ご紹介する移行ワーキンググループ(移行WG)は、PGEConsが設立された2012年から活動するグループで、異種データベースからPostgreSQLへの移行を検討する際のガイドラインの提示を目標に、移行検討時の留意事項や、難易度判断、調査方法など14種の項目を策定し、2012年度はそのうちの11種の情報を整理しました。ドキュメントは手に取りやすいように項目ごとに個々のファイルとなっており、例えば、PostgreSQLへの移行に必要な一連の作業は「DB移行フレームワーク編」に、また移行対象となる「スキーマ」「データ」「アプリケーション」のデータベース間の相違点や具体的な移行手順はそれぞれ以下のドキュメントに詳細情報が記載されています。
「スキーマ移行調査編」
「データ移行調査および実践編」
「アプリケーション移行実践編」
2013年度は新たにマルチバイトを含む文字コード変換を伴うデータの移行、商用データベースのストアドプロシージャ移行の手順やチューニング手法などを整備しました。それぞれ以下のドキュメントに詳細情報がまとめられています。
「データ移行・文字コード変換編」
「ストアドプロシージャ移行調査編」
「チューニング編」
そして3年目となった2014年度はデータベース移行後のテスト工程に焦点を当て、「スキーマ」「データ」「アプリケーション」が正常に移行できたかどうかを確認する手法や注意点を整理しました。データベース移行後はすべてのアプリケーションを対象に稼働テストを実施することが通常であり、移行WGが2012年度に実施したアプリケーション移行検証においてもテスト工程が移行の90%を占める結果になったことを受け、テスト工程の情報整備が重要という認識に基づいています。
今回、「InfoScoop」と呼ばれるオープンソースの企業ポータルツールを使って、Oracle Database 11gからPostgreSQL 9.4へのテスト移行を実施し、その結果を元にドキュメントを整備しています。次項から移行対象となる「スキーマ」「データ」「アプリケーション」を順に見ていきます。
スキーマ移行の結果を確認
オブジェクト定義情報を含むスキーマは、図2のように移行元の異種データベースと移行先のPostgreSQLからスキーマの情報をそれぞれ抽出し、それらのオブジェクト定義情報の差分を元に結果が同一または仕様変更を行った部分が正しく変更されていることを確認します。
今回の対象は「スキーマ」とそれに紐付く「テーブル」「列」「インデックス」「ビュー」「制約」など基本的なオブジェクトを前提としており、成果ドキュメントではOracle Database、Microsoft SQL Server、PostgreSQLから定義情報を抽出するためのサンプルSQLが紹介されています。
※各RDBMSから定義情報を抽出するサンプルSQLは「試験編 異種RDBMSからPostgreSQLへの移行」p14-p16をご参照ください。
定義情報はテキストで出力して比較することができますが、比較する前に出力形式の統一などいくつか加工を行う必要があります。今回は、迅速かつ容易に確認するために、図3にあるように抽出データをPostgreSQLのデータベースへ挿入し、出力形式の変換を行った上で差分比較を行いました。今回の比較では、Oracle DatabaseからPostgreSQLへのデータ移行ツールである「Ora2Pg」で定義された属性変換ルールに基づいて差分を抽出していますが、実際の移行時はシステムごとに定義された変換ルールに則って実施してください。
定義に差異があったオブジェクトについては、移行時の変更仕様に基づくものかどうかを確認し、該当しない差異を不具合と判断します。不具合には図4のようなケースが考えられ、内容に応じて対処を実施します。