データベース移行のコスト見積りのコツを教えます～PostgreSQL移行での作業量を把握する考え方～

2016年度活動成果報告
PostgreSQLエンタープライズ・コンソーシアム
WG2(移行WG)
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

アジェンダ PGECons WG2～ これまでの活動内容 ～ 2016年度の活動
活動の成果
検討過程のご紹介
ツール移行での気付き 2017年度以降に向けて

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

2

PGECons WG2～ これまでの活動内容 ～Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

3

WG2（移行WG）活動内容
活動テーマ：異種DBMSからPostgreSQLへの移行
課題認識• 異種DBMSシステムをPostgreSQLへ移行するプロセスが確立していないことが、普及を妨げる大きな障壁と認識• 移行作業をどのように進めればよいかがわからない。
• 初期段階で移行に必要なトータルコストを算出できない。
• 過去の経験則や点在するノウハウに依存しているのが現状

活動目標•異種DBMSからPostgreSQLへの移行を検討する際のガイドラインを提示する。（難易度判断、留意すべき事項、移行手順）

成果物•「異種DBMSからPostgreSQLへの移行ガイド」を作成

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

4

商用DBからPostgreSQLに移行するメリット
ベンダ・ロックインの回避
 運用コストの削減
 PostgreSQLの適応領域が広い


多様な技術
への対応

・新しいデータ型（NoSQL分野）への対応（JSON、XML等）
・他DBMSとのデータ連携(FDW)
・全文検索、GIS機能

・インストールが簡単
・設定が簡単・日本語マニュアル、書籍が充実
・クラウド上でも利用可能
・Oracle技術者が覚えやすい

・多コアCPU対応（80コアまで性能改善）
・バックアップ、レプリケーション
機能も充実
・プラットフォームに依存しないスモールビジネスエンタープライズ

適応領域

適応領域でデータベースを使い分けず、データベースをPostgreSQLに統一することが可能
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

5

「異種DBMSからPostgreSQLへの移行ガイド」の構成


移行作業の全体像を解説

2015年度追加
DB選定

DB移行フレームワーク編 (21ページ)

移行作業に含まれる作業内容、手順の調査
システム構成調査編 (29ページ)
異種DB間連携調査編 (18ページ)
 スキーマ移行調査編 (25ページ+別表) データ移行・文字コード変換編 (49ページ)
 ストアドプロシージャ移行調査編(34ページ)
 アプリケーション移行調査編 (10ページ)
 SQL移行調査編 (18ページ+別表)
 組み込み関数移行調査編(30ページ+別表) チューニング編 (30ページ+別表)
 バージョンアップ編 (39ページ+別表) 試験編 (71ページ+別表)

アセスメント

システム構成移行

データ移行調査および実践編 (60ページ+別表)
アプリケーション移行実践編 (25ページ+別表)中断

異種DB連携検討

定義移行
2015年度更新

データ移行

アプリケーション移行

移行作業を試行する検証


移行判定

運用移行

移行試験
移行評価

チューニングDBMSに求められる要件整理
システム切り替え

DB選定基準編 (43ページ+別表)

データ移行

本編のみでも500ページ越え

移行プロセス全体像

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

6

「異種DBMSからPostgreSQLへの移行ガイド」の文書構成№

作成文書（作成年度）

記載概要

1

DB移行フレームワーク編（2012、2013年）

移行作業全体の解説

2

システム構成調査編（2012年）

DBMSの一般的なシステム構成とPostgreSQLの構成

3

異種DB間連携調査編（2012年）

異種DBMSとPostgreSQLのデータ連携方法

4

スキーマ移行調査編（2012年）

異種DBMSとPostgreSQLのスキーマの違いと書き換え方針

5

データ移行調査および実践編（2012年）
データ移行・文字コード変換編（2013年）

異種DBMSからPostgreSQLへのデータ移行時の注意点と実施結果

6ストアドプロシージャ移行調査編（2012、2013年）

異種DBMSのストアドプロシージャをPostgreSQLに移行する際の書き換え方針

7

アプリケーション移行調査編（2012年）

APIやトランザクションの差異と対処方法

8

アプリケーション移行実践編（2012年）

異種DBMSからPostgreSQLに移行した際のアプリケーションの移行結果

9

SQL移行調査編（2012年）

異種DBMSとPostgreSQLのSQL互換性調査結果と書き換え方針

10

組み込み関数移行調査編（2012年、2015年）

Oracle, PostgreSQLの組み込み関数互換性調査結果と書き換え方針

11

チューニング（2013年）

PostgreSQLのチューニング手法を記載

12

バージョンアップ編（2013年）

PostgreSQLのバージョンアップ手法と検証結果

13

試験編（2014年）

移行したデータベースやアプリケーション等の移行結果の妥当性を確認する試験

14

ＤＢ選定基準編（2015年）

PostgreSQLを企業情報システムのDBMSとして選定する際の基準となる情報を提供

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

7

2016年度の活動～ 活動の成果 ～Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

8

活動成果物：「DB移行開発見積り編」について
 異種DBMSからPostgreSQLへ移行する際の移行作業コストを把握する情報提供が目的
 今年度は、Oracleの「データベースオブジェクト」をターゲットに活動 作業コスト内容が把握しやすいよう、主要なオブジェ
クトに限定し整理 アーキテクチャ、SQL、組み込み関数などの相違については、扱っておらず※過去資料を参照ください

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

9

「DB移行開発見積り編」の目次

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

10活動成果物の構成概要
オブジェクト移行の共通要素

移行コス
トの算
出

移行対象の選定

移行対象の視点

移行可否の調査

影響範囲の視点

移行コストの概算見積り

DB上の制約
・命名規則
・データ型
・照合順序
・・・・

発生する共通要素

スキーマオブジェクト

非スキーマオブジェクト・テーブル・制約・索引・ビュー・シノニム・トリガ・・・・

・スキーマ・ユーザ・ロール
・権限・テーブルスペース

移行手段の視点

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

11

移行作業の視点
データベースの移行に必要な作業量を図る視点を下記とし整理移行対象の視点•Ｏｒａｃｌｅが持つオブジェクトをＰｏｓｔｇｒｅＳＱＬに移行可能かを識別する

影響範囲の視点•ＰｏｓｔｇｒｅＳＱＬ移行がオブジェクトの定義（ＤＤＬ）やアプリケーションへ影響する範囲を見極める

移行手段の視点•移行ツールがカバーする範囲を確認•カバーされない範囲は手作業や、自作ツールの開発を検討

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

12

移行作業コストの概算
移行対象の選定移行後も引き続き利用するオブジェクトを選別

移行可否の調査
各視点における影響範囲を調査

移行手段を検討

移行コストの概算見積り
移行作業内容から影響度を分類

影響数と影響度を仕分けしコストを概算

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

13

活動成果物

2016年度の成果物はPGEConsのサイトにて公開しております。
https://pgecons-sec-tech.github.io/tech-report/works_2016.html

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

14

活動成果物の一部紹介
以下を抜粋してご紹介 テーブル ビュー
 シーケンス データベースリンク

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

15

2016年度の活動～ 検討過程のご紹介 ～ 活動メンバー ２０１５年度の振り返り 活動テーマの検討 「調査＆検証」の過程
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

16

活動メンバー 2016年度のWG2は、４社10名で活動しました。
 富士通株式会社（主査）山本 明範、豊島 良美、伊與田 智也
 NECソリューションイノベータ株式会社（副査）黒澤 彰、近藤 太樹
 日本電子計算株式会社
毛塚 賢一、大久保 明彦、伊藤 渉、三浦 諒平
 三菱電機株式会社
田中 覚

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

17

２０１５年度の振り返り
これまでの活動や成果物の振り返り
 成果物として(４年間で500頁超） 作業者向けの膨大なリファレンス集になっていて、知りたい情報にたどり着けない PostgreSQL採用を決定する立場向けの情報が不足している
ために、PGEConsの目的である「PostgreSQLの普及推進（移行推進）」に直結しづらい状況となっている
 活動として 現場へフィードバック・普及活動のために参加し、エンタープライズで活用し易い情報（形式）にしていきたい

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

18

2016年度 テーマ選定 システム移行プロセス×ＷＧ２活動成果物マップ
移行構想
経営課題の把握
システム化構想
IT資産棚卸し
移行性分析
投資効果
実現可能性検証
サイジング検討
データ分析

移行計画
移行方式設計
移行実現
移行計画
教育計画

移行設計

移行開発

移行テスト

切替・運用

新ERモデリング
新DB設計
新物理DB設計
変換仕様設計運用変更設計
環境変更設計
外部連携設計プログラム変換
データ変換
データクレンジング
プログラム改造

データ移行テスト
現新比較テスト
性能テスト
外部疎通テスト【本番切替】
移行リハーサル
本番データ移行
運用切替
並行稼動

チューニング【本番運用】
システム運用システム監査リソース診断セキュリティ診断
バージョンアップ

非機能要件定義

要件・計画領域

設計・開発領域

ＤＢ選定基準スキーマ

DB移行フレームワーク

SQL

システム構成調査

ストアドプロシージャ

異種DB間連携調査

検討候補①

計画周りが手薄

移行
タス
ク

データ

実施領域
チューニング

ＷＧ
２
活動
成果物

バージョンアップ

組込み関数移行

アプリケーション

試験編
移行フレームワークの検証資料

概ね揃っている
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

検討候補②

検証作業が手薄192016年度 テーマ検討案
 テーマ候補①

移行コスト見積り編
移行に必要な作業項目や作業量・費用を測る目安を検討する②

移行テスト編PostgreSQLへの移行テストに必要な検証ポイントを検討する

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

20

2016年度 テーマ候補①


要件・計画領域→コスト見積もりのポイントを提供※作業の項目、作業量が一覧表で確認できるイメージ。

（作業プロセス）
データベース要件（ＷＧ２活動成果物）
ＤＢ選定基準編（FY15整備）

実現性検証

移行フレームワーク編/マイグレーションアセスメント（ガイド）＋アセスメント結果（システム構成、異種DB間連携、GIS、FDW）

コスト見積もり現在なし（ニーズは高いはず）→移行に必要な作業項目や作業量や費用を測る目安を提供

移行作業計画不要（一般的なマネジメント技法で良い）

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

21

2016年度 テーマ候補②
 実施領域→検証のポイントを提供※試験編のノウハウと実践を分離しブラシュアップするイメージ。
移行のテストケースの視点（ポイント）を抽出。
・データが正しく移行されているか？（件数、内容[文字化け,桁落ち、丸め]）・SQLの処理結果が正しいか？ （select文が中心）
・アプリケーション（一部）の動作に影響ないか？
・性能問題が発生していないか？
・・・・・・・・・・・・・

検討はしたものの作業量が多く断念→チューニング編※SQLチューニングをどうやるのか。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

22

活動テーマ：「移行コストの見積り」
 目的

ユーザがPostgreSQLへの移行コストの見積りをするために、検討すべき移行の作業項目や作業量・費用を測る目安を提供する 対象 主要な移行コスト

・設備費用（新システム基盤構築）
・移行費用（影響調査、コンバート作業、移行検証）
・運用費用（運用切替、固定費、変動費）
・教育費用（開発技術、運用技術）※今回は移行費用を対象とし、移行で生じる作業項目を明確にし、更に作業量を測るための方法や観点などを検討する

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

23

活動テーマと成果物との関係
 今年度から取り組んだ活動テーマは、単年で成果を出すことが難しい内容である
 今年度はテーマの活動を遂行しながら、中間成果物として、データベースオブジェクトの移行作業をターゲットに成果をまとめた。
 次年度以降も中間成果物を作成しながら、最終的にテーマ成果物としてまとめていく。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

24

活動スケジュール
7月

8月

9月

テーマ検討

10月

11月

12月

1月

2月

3月

4月

調査＆検証
成果物作成

テーマ検討

•

過去の経緯を踏まえて今後の取り組みをテーマを検討•

データベースオブジェクト移行を対象に、各社で担当を決めて仕様の調査、移行ツールの検証を実施
検証結果から利用頻度の高いもの選定した調査＆検証•• 成果物の範囲を決めて、Sphinxを使いドキュメントを作成

成果物作成 • 活動を振り返り、発表資料作成

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

25

テーマの取り組み方針

活動検討

メンバーの総意によって進めるワーキング活動
1. 活動方針 メンバー全員がテーマの目的を正しく理解する メンバー全員が検討会で議論や意見交換を必ず行う
 メンバー全員が同一テーマの何らかの作業を担当する
2. 行動指針 毎月コンスタントに活動する
 技術力の向上を目指す やりがいや楽しみを見つける
3. コミュニケーションの促進 コミュニケーションツールを積極的に利用する
 気軽に聞き合える雰囲気を作る
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

26

「調査＆検証」の過程

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

27

データベースオブジェクト移行の調査・検討→ 大凡の進め方を決定、WG内で共有、検討作業へ
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

28

マニュアルをベースに機能毎に移行可否を検討
このレベルでは移行△の基準が曖昧
DDLレベルで分析基準が明確になり議論が活発に！

移行×のオブジェクトが大半

物理属性のオプションが多く、資料として読みにくい→ 「業務でよく使用する機能」をガイドの対象とすることにCopyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

29

成果物への反映まで至らなかったが。。。
 ファンクション、PL/SQLにも挑戦
PL/SQL

構造

コメント

データ型

移行対象
宣言部(DECLARE)
実行部(BEGIN)
例外処理部(EXCEPTION)
単一行コメント(--)
複数行コメント(/* */)スカラー・データ型

コンポジット・データ型

SQLデータ型
BOOLEAN
PLS_INTEGER
BINARY_INTEGERREF CURSORTABLEVARRAYRECORD
変数の宣言
制御構造

条件付き選択文
LOOP文

順次制御文

IF文CASE文基本LOOP文WHILE LOOP文FOR LOOP文EXIT文EXIT WHEN文CONTINUE文CONTINUE WHEN文FORALL文
GOTO文
NULL文

PostgreSQLでその移行判断 注意事項
まま使えるか○△○×○○○★SQLとPL/SQLでは最大サイズが変わるものがある。
→データ型にまとめるか、PL/SQLは別途記載するか?
△○
桁の丸めに注意が必要△■プログラムソース構造
桁の丸めに注意が必要△・基本制御構造 [順次、選択、反復]
REFCURSORに変更△××△
順次
宣言方法が違う。
・OracleTYPE 型名 IS RECORD(変数名 データ型, …
);
変数名 型名;・PostgreSQL
事前に定義された構造を持たない。
変数名 RECORD;△○○○○○
反復○○○○△○○○××△○

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

選択30

2016年度の活動～ ツール移行での気付き ～Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

31

移行ツール（Ora2Pg）の紹介
 Oracleのデータベースオブジェクトの移行工数を減らすツールとしてOra２Pg（GNUGeneral Public License V3）を活用
 オブジェクト定義済みのOracle環境に接続しPostgreSQL用の定義（DDL）の出力が可能
また、テキストとして記載されたDDLからの出力も可能
 過去資料でも、ご紹介 2013年度：データ移行・文字コード変換編

 2014年度：試験編

 本年度活動では、バージョン17.6を利用
 http://ora2pg.darold.net/

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

32

Ora2Pgについて
 過去の成果物を参照しながら作業していると、最新バージョンでは改善されていた。
 データ型 NUMBER型の精度に応じた整数型への変換
 NCHAR型の長さ指定
 自動変換可能な型の追加（ROWID、BFILE）

 テーブル 一部パーティション（レンジ、リスト）への対応

 PostgreSQLに追加された機能への対応
 マテリアライズドビュー

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

33

Ora2Pgの注意点
 更新頻度が高い
 リリースごとに多くの修正・改善が取り込まれているが、仕様が変わっていることがあった。
 DDLを入力として変換が可能だが、データベースをソースとした場合と出力が異なるケースがあった。
DDLファイル
CREATE TABLE test (C1 NUMBER(10),C2 VARCHAR(100))
NOLOGGING;

CREATE UNLOGGED TABLE test (c1 bigint,c2 varchar(100)ファイルインプット時のみ);
UNLOGGED TABLEに変換されたOra2Pg変換
DB定義
OracleCREATE TABLE test (c1 bigint,c2 varchar(100));
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

34

Ora2Pgの注意点
 シノニムの定義に対して、ビューを作成
 シノニムの利用用途により最適解ではないことも SQLのスキーマ名修飾の省略が目的の場合ビューではなく、検索パス（search_path）の活用が良い テーブルに別名を設け、透過的にSQLを利用する場合
 同じ内容の本番データのテーブル名と、開発環境データのテーブル名を変えるが、同一のSQLでアクセスしたいビューを使用した代替を活用する

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

35

2017年度以降に向けて

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

36

2016年度の成果
 「見積り」という新しい観点で、WG2の取組みを開始
 参加メンバーの関心事や技術的な取組みというスタンスから、利用者視点に切り替え、考察・評価した成果物に 「業務で良く使う」という尺度で、ユーザフレンドリーな「ガイド」を仕立てた
 今年度のテーマである移行コスト見積りは、範囲を広げ今後も継続、その根幹ができた

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

37

2016年度の成果を挙げることに囚われた 作業分担し各社で宿題をこなし、９０分で議論

参加企業間のコミュニケーションは極僅か
 WG参加者のスキルや経験値に差があり、特定の人、会社に議論が集中 年度単位の活動のため、１年でまとめることが難しい
テーマは、後まわしとなる
 WG活動の検討会における、ファシリティが弱い技術的な議論に寄ってしまった。。。
 成果発表の締切りに追われ、今年度活動の議論に挙げるに至らなかった内容もある
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

38

今後の活動について
 網羅的ではなく、業務でよく使用する機能にフォーカス 良い検討題材がない・・・、求む！！
 PostgreSQL移行を検討中の商用DBMSを利用している業務システム
 機能の使用用途、使用頻度、使用手法（ソース、SQLなど）が共有可能

 移行プロセス全体を試行
 DBMS移行における、課題の洗出し、手法の検討、ツール化、実践・評価を示すにはパワーが不足・・・、求む！！
 DBMSの移行はDBオブジェクトだけではない（アプリ、データなど）
 読み物ではなく、移行工数概算見積りのテンプレート化
 検証の事例化（観点、移行手法などの正当性を確認）

 参加者エクスペリエンスの更なる向上を 経験差、考え方の違い、本音など得られるものは多種・多様
 PostgreSQL以外のツール活用も（Sphinx、GitHubなど）
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

39

今後の活動に向けて
 WG活動として、成果物作成完了の年度縛りが外れる 成果物（外部）に向けた活動だけでなく、参加者（内部）に向けた活動も計画できる
 WG活動としてのロードマップを作成
 移行開発作業の全体整理
 今後の活動の具体的な取組み内容を見える化 これまで後まわしとなった重い内容にも取組める

 WG活動への参加が可能な方法（案）をアンケートへ 移行課題の共有可能
 社内試行結果は示せる
 １回、２回の勉強会なら参加できる
 関西や、他地方での開催なら参加できる
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

40

ぜひぜひ、WG活動へ
 みなさまとの接点を増やすことを検討しています 2017年度以降の新しい取組みが広報されましたら、参加をお願いいたします

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

41

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

42