TOP>企業情報>コラム>技術情報>PGECons最新ドキュメントでOracle Database→PostgreSQLへの移行を攻略!

PGECons最新ドキュメントでOracle Database→PostgreSQLへの移行を攻略!

PGECons_logo

昨今、企業システムでPostgreSQLの利用が急速に増えており、新規にとどまらず、既存システムの商用データベースの置き換え先として採用されるケースも増加傾向にあります。大きな後押しとなっているのはDBMSとしてのPostgreSQL自体の豊富な機能はもちろんですが、2012年から企業レベルでPostgreSQLの技術情報を継続して公開している「PostgreSQLエンタープライズ・コンソーシアム 」(以下、PGECons)の存在があります。本記事ではPGEConsの公開ドキュメントを参考に、Oracle DatabaseからPostgreSQLへの移行のポイントをご紹介します。


PostgreSQLを安心して選定するための指針「DB選定基準編」


データベース移行では、まず置き換え先のデータベースを選定し(図1の⓪)、続くステップとして移行可否を判断するためのアセスメント(図1の①)を実施します。アセスメントの結果、移行のコストやリスクに対してメリットがあり移行を実施すると判断した場合、システム構成や周辺システムとのデータ連携、データベースに格納されているスキーマ定義、データ、ストアドプロシージャを含むアプリケーションと運用の移行へと進めていきます(図1の②-⑦)。その後、テストと必要に応じてチューニングを施した上で移行評価を行います(図1の⑧-⑩)。

図1:データベース移行の全体像

図1:データベース移行の全体像

企業システムでデータベースに求められる機能要件は多岐にわたります。そのため、データベースがそれらを実現する技術要素を持っているかどうかをきちんと把握した上で適切に選定する必要があります。各要件に対応するPostgreSQLの特徴や機能を確認するには、PGEConsが公開する移行ガイドの「DB選定基準編」※1を利用します。DB選定基準編では、要件を「アーキテクチャ」「スキーマ・オブジェクト」「国際化対応」「開発言語」などデータベースの一般的な機能と、「地理空間情報」「外部データとの連携」などPostgreSQLの特徴的な機能が関係する項目とに分類し、対応状況が整理されています。

アーキテクチャの章ではデータベース構造や同時実行性、ロック制御、トランザクション分離レベルといった基本的な項目ごとにPostgreSQLと商用データベース(Oracle Database、Microsoft SQL Server、IBM DB2)の仕組み※2が比較されており、ドキュメントに目を通すとPostgreSQLがDBMSとして必要な機能を全て備えていることが分かります。また国際化対応の章では、マルチバイトの格納やソート順序、メッセージ表示の設定など、日本語のデータを扱う際に考慮すべき情報がまとめられています。これは日本国内で活動するコミュニティならではの情報と言えます。

※1「DB選定基準編」はこちら から参照ください。
※2「【別紙】アーキテクチャ比較表」はこちら から参照ください。

PostgreSQLには表1にあるような特徴的な機能が多く存在します。これらのうち、特にGIS(Geographic Information System:地理情報システム)はユーザから高く評価されている機能で、これがPostgreSQLを採用するポイントとなった事例があります。また、FDW(外部データラッパ)は、データベース移行を進める上でも重要な要素となる、データ連携を実現する機能として注目されています。

カテゴリ 機能 概要
表1:PostgreSQLの特徴的な機能
データ型 範囲型 値の範囲を取り扱うデータ型
JSONデータ型 JSONデータを格納するための型
JSON型、JSONB型が存在
インデックス 部分インデックス 条件を満たすレコードのみにインデックスを作成
式インデックス 計算や関数の結果に対してインデックスを作成
セキュリティ 行レベルセキュリティ 行単位でのアクセス制御
オブジェクト指向 テーブルの継承 親テーブルの構造を継承した子テーブルの作成
地理空間情報 GIS(地理情報システム) 地理データ型、地理空間情報の演算、高速な検索
外部データ FDW(外部データラッパ) PostgreSQLの外部に存在するデータに対するアクセス手法
文書検索 全文検索 問い合わせを満たす自然言語の文書を識別や関連性の判定

GISは、地理情報を管理、加工し、検索結果や分析結果を可視化するシステムを指します。GISの空間データベースには、文字や数値など一般的なデータと同じようにSQLを使って地理情報データを処理する仕組みが必要です。PostgreSQLでは空間データベースとして利用するための拡張モジュール「PostGIS」が提供されており、ベクタデータやラスタデータなど空間データを格納するためのデータ型や高速な検索を実現するGiSTを利用したR-Treeインデックス、関数など豊富な機能を備えています。2013年のPGECons主催事例発表セミナーでご紹介したスポットライト社の来店検知サービス「スマポ」※3のPostgreSQL導入事例では、PostGISの豊富な機能や高い性能が評価されたことが採用の背景にあります。

※3「スポットライト社の来店検知サービス『スマポ』」の詳細情報はこちら から参照ください。

PostGISの利用方法やGIS要件への対応に関して、旅行会社の地理情報システムを例に実機を用いた検証・考察※4も公開していますので、あわせて参照ください。

※4「GISアセスメント編」はこちら から参照ください。

FDWは、PostgreSQLの外部にあるさまざまなデータソースにSQLを利用してアクセスする仕組みです。PostgreSQL本体に同梱されるPostgreSQL間をつなぐpostgres_fdwやCSVファイルとの連携を可能にするfile_fdwのほか、Oracle DatabaseやMySQL、MongoDBやLDAPなどさまざまなデータソースに対応するFDWが開発されており、連携先のテーブルに対して参照だけでなく更新処理もサポートするFDWの種類も増えています。

図2:FDWによるデータ連携

図2:FDWによるデータ連携

PGEConsでは、さまざまなデータベースが利用されている社内システムを例に、勤怠管理や人事給与システムなどで個々に管理されるユーザ(社員)情報を一元管理へと変更し、FDWを介して各システムへデータを連携するというシナリオで検証を行っており、社員の昇格や退職などに伴ったデータ更新も想定通りの結果となることが確認できています※5。世の中のあらゆるモノをインターネットでつなぐIoTが本格化し、さまざまなデバイスから集約されたビッグデータの活用が注目される昨今、多種多様な外部データソースとの連携を実現するFDWの重要性が高まっていくものと期待しています。

※5「FDW(外部データラッパ)のアセスメント」はこちら から参照ください。

企業システムで利用するデータベースを選定する場合、メンテナンスや監視などの運用管理や開発で活用できる機能・ツールの充実度も重要なポイントです。DB選定基準編では、pg_basebackupやpgAdminなどPostgreSQLの標準機能に加えて、PostgreSQLに対応している主なOSS、商用ツールが整理されており、対象システムに適した機能やツールを選定する際の参考情報として活用することができます。

データベース組み込み関数を移行難易度ごとに分類


データベース移行時にコスト、工数がかかる要素の1つに、ストアドプロシージャやファンクションなどデータベースに格納されたプログラムの書き換えがあります。移行を検討するユーザにとって「書き換え範囲がどの程度なのか?」という点は、アセスメントの段階から適切に把握しておきたい事項ではあるものの、自分たちで情報を整理しようとすると大変な労力がかかります。このような時にはアプリケーション移行に関する各種ドキュメントを活用します。

ドキュメントの1つ「組み込み関数調査編」※6では、250個を超えるOracle Databaseの関数それぞれに対するPostgreSQLの対応状況を図3のような一覧表※7で整理し、書き換えが必要な場合、同等機能を持った異なる関数へ置き換えるだけの移行難易度が比較的低いものから、独自に関数の作成が必要な難易度中程度のもの、移行が困難で移行難易度が高い関数が章ごとにまとめられています。そのため、対象システムで利用する関数がどの難易度に該当し、どういう対応をすべきかを確認するのに便利です。

また、組み込み関数調査編には、PostgreSQL本体の関数に加えて「orafce」と呼ばれるモジュールを導入した場合の対応範囲が含まれています。orafceはOracle Databaseと互換性のある関数をPostgreSQLへ実装することを目的に活動するプロジェクトです。PostgreSQLの一般的なcontrib モジュールと同じくEXTENSION としてorafceを導入することで、Oracle Databaseからの移行時にプログラムの書き換えにかかるコスト、工数を抑えることができます。

図3:組み込み関数対応表イメージ

図3:組み込み関数対応表イメージ

※6「組み込み関数移行調査編」はこちら から参照ください。
※7「別紙:組み込み関数対応表(Oracle-PostgreSQL)」はこちら から参照ください。


組み込み関数移行調査編は、現在PostgreSQL 9.5とorafce 3.2.1を前提とした内容へアップデートして公開されています。ドキュメント作成当時のPostgreSQL 9.2と比較すると移行可能な関数が22個増えており、PostgreSQLのバージョンアップに伴い移行がしやすくなってきていることがわかります。

ストアドプロシージャはPostgreSQLではオブジェクトとしてサポートされていないため、ストアドファンクションとして書き換える必要があります。書き換えの際に注意すべき事項は「ストアドプロシージャ移行調査編」※8を参照します。本ドキュメントでは、Oracle Databaseに加えてIBM DB2とMicrosoft SQLServerそれぞれのストアドプロシージャにおいて書き換えが必要となる箇所と書き換えの方針がまとめられています。

※8「ストアドプロシージャ移行調査編」はこちら から参照ください。

コラム:Oracle Databaseと同様にストアドプログラムを作成できる「EDB Postgres」

弊社アシストの取り扱い製品「EDB Postgres」はPostgreSQLをエンジンとし、Oracle Databaseとの高い互換性を持つデータベースです。ストアドプロシージャやパッケージはPostgreSQLではサポートされていませんが、EDB PostgresではOracle Databaseの手続き型言語PL/SQLと同様の構文で、それらのストアドプログラムを作成することができます。実システムでもOracle Databaseからの置き換え先としての採用が増えており、これまでの移行事例では95%を超える互換率の実績があります。

EDB Postgresが持つすべての機能を60日間無償で利用できるトライアルをご用意しています。

詳細はこちらをご参照ください。


終わりに


今回は、PostgreSQLへの移行で活用できるPGEConsのドキュメント「移行ガイド」をご紹介しました。本ドキュメントでは、PostgreSQLを移行先として検討する段階から移行完了までのすべてのステップで実施すべき内容と注意点、考慮点が詳細かつ網羅されています。また、表2のように項目ごとに個別ファイルで管理されているため、移行の全体像を把握したい場合にも各ステップの懸念点や課題を解消する場合にも活用いただければと思います。

No 移行ステップ 移行ガイド項目
(各タイトルをクリックするとドキュメントにアクセスできます)
概要
表2:移行ガイドのドキュメント一覧
データベース選定 DB選定基準編 データベースに求められる要件に対して、PostgreSQLの対応機能を紹介
アセスメント DB移行フレームワーク編 移行難易度評価のためのヒアリング項目やテスト移行による評価ポイントを紹介
システム構成移行 システム構成調査編 PostgreSQLで構築可能な構成(シングル、冗長化など)を紹介
異種DB連携検討 異種DB間連携調査編 異種データベースとPostgreSQLのデータ連携手法を紹介
定義移行 スキーマ移行調査編 DDL仕様の違いによる書き換え範囲をオブジェクトの種別ごとに紹介
データ移行 データ移行調査および実践編 データ型やオブジェクトの互換性、データの抽出、整形、挿入の手法を紹介
データ移行・文字コード変換編 異なる文字コードのDBからの移行における注意点や移行手順を紹介
アプリケーション移行 ストアドプロシージャ移行調査編 ストアドプロシージャ移行における書き換えの範囲と方針を紹介
アプリケーション移行調査編 接続形態、使用する開発言語ごとの移行方法を紹介
アプリケーション移行実践編 サンプルアプリケーションを対象としたテスト移行の詳細と評価を紹介
SQL移行調査編 SQL移行における書き換えの範囲と方針を紹介
組み込み関数移行調査編 組み込み関数の書き換えの範囲を紹介
運用移行 バージョンアップ編 PostgreSQLのバージョンアップの手順と検証結果を紹介
移行試験 試験編 スキーマ、データ、アプリケーション移行後の確認ポイントと手法を紹介
移行評価
チューニング チューニング編 PostgreSQL固有機能の性能上の注意点やチューニング手法を紹介

PGEConsでは、公開しているすべてのドキュメントからキーワードを元にPostgreSQLに関して知りたいことを簡単に検索できる「成果物総索引 」を用意しています。例えば、「『Oracle DatabaseストアドプロシージャのPostgreSQLへの移行』に関する情報を知りたい!」という場合、「データベース移行」→「アプリケーション移行」→「ストアドプロシージャの移行」→「OracleからPostgreSQLへの移行」へとリンクを辿ることで、関連情報が記載されたページ を参照することができます。総索引もぜひ利用ください。


執筆者紹介

高瀬 洋子

高瀬 洋子(Youko Takase)

株式会社アシスト データベース技術本部 技術開発部

アシスト入社後、Oracle Databaseのサポート業務を経て、2009年よりPostgreSQL、EDB Postgresのサービス立ち上げに参画。「PostgreSQLなら高瀬に聞こう」と社内外から言ってもらえる存在となることを目標に日々活動。2014年4月よりイギリスに拠点を移し、EDB Postgresの啓蒙活動と顧客対応の後方支援を担当。

高瀬の紹介記事はこちら

関連製品/サービス


Facebookで情報をお届けしています

Facebookでは、アシストの「今」を週3回のペースでお届けしています。「めげない、逃げない、あまり儲けない」を合言葉に日々頑張っておりますので、応援よろしくお願いします。



ページの先頭へ戻る