PowerGres

Oracleマイグレーション 第1回

第1回 Oracleとの高い親和性『豊富なアプリケーションインタフェースと豊富なSQLインタフェースサポート』

はじめに

「オープンソース」という言葉を耳にするようになり、久しくなりました。データベースの世界でも、PostgreSQL、MySQLなどバージョンアップのたびに機能が追加され、商用データベースからの移行を検討されている方もいらっしゃると思います。

PowerGres Plusは、PostgreSQLからのインタフェースを継承しているため、非常に多くのアプリケーションインタフェースに対応しています。PHP、Java、Cや、.NET Framework上で使えるアプリケーションインタフェースもあります。

さらに、トランザクションの考え方も「読み取り一貫性」とし、Oracleと同じ機能になっています。そのため、アプリケーションをスムーズに移行することができます。

本シリーズでは、OracleからPowerGres Plusへの移行を検討中のエンジニアの方々に向けて、実際の移行作業の過程を紹介します。

第1回目は、OracleとPowerGres Plusとの高い親和性によりOracleから少ないコストで移行できることを説明します。

(1) 豊富なプログラムインタフェース

表1はOracleとPowerGres Plusの代表的なプログラミングインタフェースの一覧です。

表1: OracleとPowerGres Plusのプログラミングインタフェース

言語/環境 Oracle PowerGres Plus
.NET Framework あり あり
スクリプト言語 PHP,PL/SQL PHP,PL/pgSQL
C Pro*C,OCI,ODBC ECPG,CLI,ODBC
Java JDBC,SQLJ JDBC

PowerGres Plus では、Oracle と同等のプログラムインタフェースがサポートされています。

JDBC は SUN が提供する共通インタフェースであるため、コネクション文字列の変更でそのまま移行できます。

その他の言語についても、関数名のプレフィックスの違いがありますが、機能は同等で、少ない時間で移行することができます。詳細は、このシリーズの移行作業の中で紹介します。

(2) 豊富なSQLインタフェースサポート

PowerGres PlusもOracleも豊富なSQLインタフェースに対応しています。

以下に対応例を記述します。詳細は、このシリーズの移行作業で説明します。

データ型

データベースでは、基本的なデータ型に加え、拡張されたデータ型があります。Oracle でも拡張されたデータ型がありますが、PowerGres Plus には同じ機能のデータ型があるため、型名の書換えだけで対応することができます。

表2: OracleとPowerGres Plusのデータ型対応例

Oracle データ型 最大値 PowerGres Plus 最大値
文字型 CHAR 2000Byte VARCHAR 4000Byte
NCHAR 2000Byte VARCHAR 4000Byte
VARCHAR2 4000Byte VARCHAR 4000Byte
NVARCHAR2 4000Byte VARCHAR 4000Byte
LONG 2GByte TEXT 2GByte
CLOB 4GByte TEXT 4GByte
NCLOB 4GByte TEXT 4GByte
数値型 NUMBER 38桁 NUMERIC 38桁
日付型 DATE TIMESTAMP
TIMESTAMP TIMESTAMP
バイナリ型 RAW 2KByte bytea 2GByte
LONG RAW 2KByte bytea 2GByte
BLOB 4KByte bytea 2GByte
BFILE 4KByte ラージオブジェクト 無制限

ラージオブジェクトは論理上無制限です。

データベース定義

主なデータベースの構成要素例を以下に記述します。

表3: 主なデータベースの構成要素例

Oracle PowerGres Plus Oracle PowerGres Plus
DATABASE DATABASE TRIGGER TRIGGER
SCHEMA SCHEMA FUNCTION FUNCTION
PACKAGE SCHEMA PROCEDURE △ FUNCTION
TABLE TABLE OPERATOR OPERATOR
INDEX INDEX SEQUENCE SEQUENCE
TYPE TYPE VIEW VIEW
[補足]
TABLE

CONSTRATINT、 REFERENCE などすべて PowerGres Plus にもあります

PROCEDURE

PROCEDURE については、このシリーズのストアドプロシジャの移行で詳細を説明します


データ操作

SELECT 文と組込み関数がポイントになります。

以下は、SELECT 文の記述の対応例です。SELECT 文の構文はほとんど同じです。下記の対応例のように、少し記述形式が違うものがありますが、機能には差はありません。

表4: SELECT文の記述の対応例

項目 Oracle PowerGres Plus
列の別名 “AS” 省略可 “AS” が必須
結果の部分取り出し ROWNUM OFFSET
LINE BETWEEN OFFSET 〜 LIMIT
アウタージョイン 拡張構文 “(+)” 標準の記述形式
FROM 句副問合せ エイリアス必要無 エイリアス必須

Oracle の組み込み関数は約 70 個あります。PowerGres Plus も同等の関数があります。ごく少数の関数に関しては、数ステップから、数十ステップの同名の関数を登録することで、簡単に対応することができます。登録の詳細は、このシリーズで順次説明します。

表5: 組み込み関数の対応例

Oracle PowerGres Plus
CONCAT 同名組込み関数をあらかじめ定義(約3ステップ)
INSTR 同名組込み関数をあらかじめ定義(約46ステップ)
ADDR_MONTHS 同名組込み関数をあらかじめ定義(約4ステップ)
LAST_DAY 同名組込み関数をあらかじめ定義(約5ステップ)
MONTHS_BETWEEN 同名組込み関数をあらかじめ定義(約5ステップ)
NEXT_DAY 同名組込み関数をあらかじめ定義(約46ステップ)
GREATEST 同名組込み関数をあらかじめ定義(約5ステップ)
LEAST 同名組込み関数をあらかじめ定義(約5ステップ)

(3) トランザクションの考え方

Oracle は、以下のようなトランザクションの考え方で動作します。

更新中に他のユーザが同じデータを参照できるようにする

参照できるデータは、ユーザの問合せに対して、常に一貫性を保証する

このようなトランザクションの考え方を「読み取り一貫性」とよび、商用データベースでは、Oracle独自のものでした。PowerGres Plus も同様のトランザクションの考え方を採用しているため、業務ロジックの考え方を変更する必要はありません。

読み取り一貫性

図1: 読み取り一貫性

(4) 移行ツール

データベースの移行に関しては、「ora2pg」というオープンソースのツールを活用することで、作業を簡単にすることができます。

通常、データベース定義とデータは、以下の手順により移行します。

ora2pgを使用すると、1)と2)の処理を一度に行うことができます。このツールにより、移行作業の軽減が可能です。

OracleからPowerGres Plusへの移行手順

図2: OracleからPowerGres Plusへの移行手順

ora2pgのサンプルは、PostgreSQLのcontrib/oracleのフォルダに提供されています。

(5) 最後に

今回は、OracleとPowerGres Plusの親和性についてご紹介しました。

Oracleとの親和性により、移行作業がスムーズに行えます。また、移行作業を支援するora2pgがあり、作業を行うことができます。

第2回目より、実際の移行作業の詳細をご紹介します。

製品・サービスに関するお問い合わせ
03-5979-2701

お問い合せ受付時間 月 - 金 10:00 - 17:00

メールフォームでのお問い合わせ

ページトップへ