データベースに
PostgreSQLを選ぶ理由～移行先DB選定のポイントと組み込み関数の移行ノウハウ～

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

アジェンダ PGECons WG2
 これまでの活動内容
 2015年度の活動
 2015年度の成果

 おわりにCopyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

2

PGECons WG2Copyright © 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への移行ガイド」の文書構成

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

6

2012年度 活動概要
 移行作業の全体像の検討

DBMS移行時の作業内容

DB移行フレームワーク

 移行作業の内容、手順の調査

アセスメント システム構成
 異種DB間連携
 スキーマ移行
 データ移行 ストアドプロシージャ移行調
 アプリケーション移行
 SQL移行 組み込み関数移行 移行作業の検証
 データ移行 アプリケーション移行

移行判定

PostgreSQLの構成検討

システム構成移行

中断

異種DB連携検討
異なるDBMS間のデータ連携

スキーマ移行

定義移行
データ移行

データ移行
SQL、ストアードプロシージャ、組み込み関数移行

アプリケーション移行

運用移行

試験

チューニング
システム切り替え

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

データ移行

7

2013年度 活動概要
 既存項目の深堀り マルチバイト文字コード移行に関する調査
 Oracle 以外のプロシー
ジャ言語の調査

DB移行フレームワーク
アセスメント
移行判定

システム構成移行

 未着手の項目の解消

異種DB連携検討

定義移行

 DB移行におけるチューニ

ングのフレームワーク検討
および作業の具体化
 バージョンアップに関する
手順書作成

中断

データ移行

監視やバックアップはWG3（バージョンアップのみ実施）

運用移行

アプリケーション移行

性能改善

試験

チューニング
システム切り替え

データ移行

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

8

2014年度 活動概要
 移行結果を確認するための試験について着手

DB移行フレームワーク
アセスメント スキーマ移行試験

移行判定

 データ移行試験
 アプリケーション移行試験

システム構成移行

中断

異種DB連携検討

定義移行
データ移行
アプリケーション移行

運用移行

試験

チューニング

移行結果の確認試験

システム切り替え

データ移行

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

9

「異種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年）

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

11

チューニング（2013年）

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

12

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

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

13

試験編（2014年）

移行したデータベースやアプリケーション等の移行結果の妥当性を確認する試験Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

10

2015年度の活動
 活動内容 体制

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

11

2015年度活動内容
 継続活動アセスメント これまでの成果物の一部最新化、追加検討

移行判定

システム構成移行

 新規活動異種DB連携検討

定義移行

 PostgreSQLを移行先のDBMSとして選定するにあたり、基準とすることができるような情報をまとめた資料の作成に着手

中断

データ移行
アプリケーション移行

運用移行

移行試験
移行評価

チューニング

システム切り替え

データ移行

移行プロセス全体像
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

12

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

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

移行の前段として追加
DB選定

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

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

アセスメント

システム構成移行



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

2015年度更新

異種DB連携検討

データ移行

アプリケーション移行

運用移行

移行試験
移行評価

チューニング

システム切り替え

DBMSに求められる要件整理


中断

定義移行

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



移行判定

データ移行

DB選定基準編＜NEW！＞ (43ページ+別表7)

移行プロセス全体像
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

13

2015年度活動体制
 2015年度のWG2は下記体制で活動しました。
企業名

組み込み関数DB選定基準備考

NECソリューションイノベータ株式会社

○

○

主査

株式会社HTKエンジニアリング （※）

-

○

副査

日本電子計算株式会社 （※）-○

富士通株式会社○-

株式会社
富士通ソーシアルサイエンスラボラトリ○○

三菱電機株式会社 （※）○-※ 新規参加企業

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

14

2015年度の成果

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

15

2015年度活動成果物


2015年度の成果物はPGEConsのサイトにて公開しております。
https://www.pgecons.org/download/works_2015/

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

16

2015年度の成果
 異種DBMSからPostgreSQLへの移行ガイド
 組み込み関数移行調査編
 DB選定基準編

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

17

活動の整理

DB選定基準編を追加するにあたり、WG2の活動領域が一般的な移行業
務のどの辺りに位置しているのかを整理。

DB選定基準編

組み込み関数移行調査編

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

18

2015年度の成果
 異種DBMSからPostgreSQLへの移行ガイド
 組み込み関数移行調査編
 DB選定基準編

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

19最新版の情報反映（全体状況）
 活動初年度（2012年度）の調査結果を更新し異種DBからの移行のしやすさを定量的に把握する
 以下の要因により新しく移行可能な組み込み関数を
ピックアップ PostgreSQLのバージョンアップによるもの（9.2→9.5）
 orafceのバージョンアップによるもの（3.0.3→3.2.1）
 PostgreSQL、orafce機能の組み合わせや、作り込みにより代替できるもの 結果（全体状況）
 移行×：135関数 → 113関数

アプリケーションにより使用する関数や頻度は異なるが、移行しやすくなってきている
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

20最新版の情報反映（成果物：本文）
 情報の反映に加え、対応方法、対応レベルに応じた章立てで記載
移行
難易度
易
同一の機能
あり
関数作成で
対応
関数作成が
困難

難
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

21

最新版の情報反映（成果物：別紙）
 対応レベルに応じた凡例と、対処内容を記載
移
行
難
易
度

易  異種DBと同名の組み込み関数がある orafce導入により同名・同機能の組み込み関数が利用可能 機能は同じだが関数名が異なるため、アプリ改修が必要
難  同等、もしくは近い機能を開発することで対処可能

PostgreSQL本体での対応可否と、対応する組み込み関数名を記載

orafceを導入することで同名の組み込み関数が利用可能な場合は「○」Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

22

バージョンアップによる差異
 PostgreSQLに追加された関数
Oracle

用途

PERCENTILE_CONT

パーセンタイル値およびソート指定を使用し、そのソート指定に従ってそのパーセンタイル値に該当する補間された値を戻す

PERCENTILE_DISC

パーセンタイル値およびソート指定を指定し、そのセットから要素を戻す

CARDINALITY

ネストした表内の要素数を返却※PostgreSQLでは配列の要素数

 orafceに追加された関数
Oracle

用途

SYSDATE

現在の日時を戻す （関数の括弧は必要）

DBTIMEZONE

データベースのタイムゾーンの値を戻す （関数の括弧は必要）

SESSIONTIMEZONE

現行セッションのタイムゾーンを返す （関数の括弧は必要）

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

23

組み込み関数の移行方法
 別名の組み込み関数を利用することにより異種DBの組み込み関数を代替する方法
OraclePostgreSQLHEXTORAW(HEX値)

decode(HEX値, 'hex')
指定したHEX値を※Oracleのdecode関数とはRAW値に変換
引数の数、用途共が異なる※HEX値はTEXT型で入力、戻り値は
BYTEA型、'hex'は固定値

RAWTOHEX(RAW値)

encode(バイナリ値, 'hex')※バイナリ値はBYTEA型で入力、戻り値はTEXT型、'hex'は固定値指定したRAW値を
HEX値に変換

NUMTODSINTERVAL(n, 'char_expr')

make_interval(単位:=値, ・・・)

INTERVAL DAY TO
SECOND リテラルを取得する

NUMTOYMINTERVAL(n, 'char_expr')

make_interval(単位:=値, ・・・)

INTERVAL YEAR TO
MONTHリテラルを取得する

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

用途

24組み込み関数の移行方法(例)NUMTODSINTERVALINTERVAL DAY TO SECOND リテラルを取得する関数
SQL> SELECT NUMTODSINTERVAL(10, 'SECOND') FROM DUAL;
NUMTODSINTERVAL(10,'SECOND')-------------------------------------------------------------------------+000000000 00:00:10.000000000
 PostgreSQL 9.4より追加されたmake_intervalで書き換え

postgres=# SELECT make_interval(secs:=10);
make_interval--------------00:00:10(1 行)
 引数が異なる点は注意が必要（小数不可）

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

25

組み込み関数の移行方法（問い合わせ言語関数）
 SQL文と既存の組み込み関数の組み合わせにより異種DBの組み込み関数を代替する方法（例）BIN_TO_NUM関数
1または0で構成されるビット列を可変長引数として取り、10進数の数値に変換し返却する。
PostgreSQLの既存の組み込み関数の組み合わせで（部分的に）実現する。

実装例
CREATE OR REPLACE FUNCTION BIN_TO_NUM(VARIADIC arr int[])
RETURNS integer AS $$SELECT lpad(array_to_string($1, ''), 32, '0')::bit(32)::int;$$ LANGUAGE SQL IMMUTABLE;
実行結果

異種DBの返却データ型はNUMBER型だが、PostgreSQLではINT型で代用

postgres=# select bin_to_num(1,1,1,1,1,1,1,0);
bin_to_num------------ 実装に使用したSQL文のエラー以外の細かい入力値チェックはできない。
「1」「0」のみで構成されない数値や文字列などはbit型へのcastでエラーになる。
254「10」「111」などは入力可能。
(1 row)
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

26

組み込み関数の移行方法(C言語関数)
 C言語関数を使用して異種DBの組み込み関数を代替する方法(例)REGEXP_INSTR
正規表現にマッチする文字列の出現位置を返却する
 PostgreSQLには既に正規表現にマッチした文字列を返却する関数
regexp_matchesが存在。
=> select regexp_matches('12abc345def', '[0-9]{3}');regexp_matches---------------3桁の数字を検索{345}(1 row)
 regexp_matchesの内部では正規表現にマッチした文字列の開始・終了位置を取得している。そのため、regexp_instrでは当該関数のコードを流用し、その開始位置を返却するように改造する形で実装が可能。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

27

組み込み関数の移行方法(C言語関数)(例)VSIZE
引数で指定した値をデータベースに格納する際のバイト数を返す関数。
orafceが提供しているDUMP関数を参考にすることで実装可能。
※ DUMP関数：データベースに保存されている内容の内部形式を見る関数。
値（型名）

OID

固定長型

5(int4)

①

23

②

4

可変長型

a(text)

①

25

②

-1

①
②
③

ヘッダ

typlen③2

要素の型のOIDを取得。（get_fn_expr_argtype関数）
OIDからtyplen（固定長型であればバイト数）を取得。（get_typlenbyval関数）
可変長型の場合は上記だけではサイズを求められないため、ヘッダに記載されたサイズを取得。（datumGetSize関数）

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

28

移行が難しいと判断される関数
 これまで紹介した方法では、異種DBの組み込み関数を代替することが難しい、もしくは変換に手間がかかるもの• 単純な関数ではなく構文に組み込まれているような場合、
PostgreSQL本体に対する修正が必要となってしまう• 内部処理が不明であるため返却する値を一致させることが難しい• マルチバイトを含む特殊な文字列の変換が含まれる

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

29

2015年度の成果
 異種DBMSからPostgreSQLへの移行ガイド
 組み込み関数移行調査編
 DB選定基準編

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

30DB選定基準編
 2015年度の新しい活動として、PostgreSQLの積極的な採用につながるような情報の提供を検討。
 一般的にDBMSに求められる要件を検討し、それに対して

PostgreSQLの対応状況を整理。
 PostgreSQLを採用するにあたり、参考とすることができる
ような情報の整理。
章

概要

技術要件

DBMSに求められる一般的な機能要件に対するPostgreSQLの対応状況の紹介や、PostgreSQLが備えている特徴的な機能についての調査やアセスメントを実施

サポートツール

PostgreSQLのサポートツールを紹介

コスト面での考慮

OSSとしてのコストの考え方

PostgreSQLの
市場価値

安定性や市場における動向など
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

31

技術要件
 アーキテクチャ
 スキーマ・オブジェクト
 国際化対応
 開発言語 前提条件Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

32

アーキテクチャ DBMSに求められる機能に対して、それを実現する

アーキテクチャはDBMS毎に異なる
 異種DBMSとのアーキテクチャ上の主な差異を確認できるよう、キーワードを挙げて調査を実施
 プロセス・メモリの構成、管理 インスタンスとデータベースの関係 クエリの実行フロー、アクセスパス 同時実行性、ロック、デッドロック検知
 トランザクション機構
 ディクショナリ、統計情報
 I/O分散
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

33

アーキテクチャ 商用DBMSであるOracle、SQL Server、DB2を対象にアーキテクチャの差異を別紙形式で記載
 本文ではPostgreSQLとOracleを例として別紙側の
記述を補足
別紙比較表

キーワード

PostgreSQL説明

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

他DBMS説明34

スキーマ・オブジェクト
 SQL:2011の主な機能をサポート
 テーブル、インデックス、シーケンス、ロール、ファンク

ション、トリガ等、基本的なスキーマへの対応
 PostgreSQL 9.3でマテリアライズド・ビューに対応するなど、機能拡張が図られている
 パッケージやシノニム等、異種DBMSに存在する一部の機能において未対応
 データ型は異種DBMSとの差異はあるが、特殊な型を除き対応付くデータ型は存在 「スキーマ移行調査編」の成果物等に記載

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

35

国際化対応 PostgreSQLの日本語への対応状況を紹介
項目

概要

格納データ

日本語のデータを格納することが可能。代表的なエンコーディングとしてUTF8、EUC_JPが使用可能。現在はUTF8が主流。

ソート順

ソート順に使用するロケールを指定可能。バイナリ順で問題なければinitdbの際に--no-locale（C）を指定するのが定石。

メッセージ

ログ等に出力されるメッセージのローカライズが可能。言語にもよる
が日本語はかなりの割合で翻訳されている。

日付・時刻

DateStyleパラメータにより日付の形式を指定可能。TimeZoneの指定により各国の標準時にも対応。夏時間にも対応しており、法改正等で変更があった場合、マイナーバージョンアップの際に反映される。

ドキュメント日本語版は早くから翻訳されたものが存在しており、日本国内におけるPostgreSQLの普及に貢献している。現在は日本PostgreSQL
ユーザ会によりメンテナンスされている。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

36

開発言語




DBMSに求められる要件として、利用できる開発言語（プログラミング言語）
種類の豊富さが挙げられる。PostgreSQLは豊富なプログラミング言語を用いて操作が可能。
プログラミング言語で用いるドライバは、libpqのようにPostgreSQLが標準で備えるものや、サードパーティーが実装してOSSとして公開されているものな
ど、様々なものが存在。
表. 利用できるプログラミング言語 （一部）

プログラミング言語

概要

SQL

SQLを用いて、関数や型の定義、参照更新操作が可能。

C言語

C言語を用いて、関数や型の定義、参照更新操作が可能。埋め込みSQL
プリプロセッサであるECPGを用いて、サーバサイド実装も可能。

Perl

Perl言語を用いて、関数や型の定義、参照更新操作が可能。

PythonPython言語を用いて、関数や型の定義、参照更新操作が可能。

Java言語Java言語を用いて参照更新操作が可能。
JDBCの規格に従ったドライバが提供されている。

.Net Framework
実行系環境言語

VB.netやC#を用いて参照更新操作が可能。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

37

前提条件
 サポートされるプラットフォーム
 一般的なUNIX系OSに対応。WindowsについてもPostgreSQL 8.0にて正式にサポート。
 CPUアーキテクチャやオペレーティングシステム等、プラット
フォームに対する試験は、主な組み合わせについてはビル
ドファームにて日々リグレッションテストが行われている。
種別

動作が期待される環境

CPU

x86、x86_64、IA64、PowerPC、PowerPC 64、S/390、S/390x、Sparc、Sparc 64、ARM、
MIPS、MIPSEL、M68K、PA-RISC

OS

Linux、Windows、FreeBSD、OpenBSD、NetBSD、OS X、AIX、HP-UX、Solaris、UnixWare

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

38

PostgreSQL ビルドファーム

登録されたシステムに対しての評価状況が公開されている

http://buildfarm.postgresql.org/
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

39技術要件 － 特徴的な機能
 PostgreSQLが保有している独特な機能や機能拡張の仕組み等、特徴的な機能を取り上げて紹介 機能の概要や特徴を説明
 前提条件や制限
 アセスメントの実施

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

40特徴的な機能一覧
カテゴリ
データ型

機能

概要

範囲型

値の範囲を取り扱うデータ型

JSONデータ型

JSONデータを格納するための型
JSON型、JSONB型が存在

部分インデックス

条件を満たすレコードのみにインデックスを作成

式インデックス

計算や関数の結果に対してインデックスを作成

セキュリティ

行レベルセキュリティ

行単位でのアクセス制御

オブジェクト指向

テーブルの継承

親テーブルの構造を継承した子テーブルの作成

地理空間情報GIS（地理情報システム）

地理データ型、地理空間情報の演算、高
速な検索

外部データ

FDW（外部データラッパ）

PostgreSQLの外部に存在するデータに対するアクセス手法

文書検索

全文検索

問い合わせを満たす自然言語の文書を識別や関連性の判定

インデックス※ 2015年度の活動では赤字の機能を対象に実施
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

41

GIS（地理情報システム）
GISに求められる一般的な要件や、空間データベースとして備えるべきオブジェクトや関数について調査。
 PostgreSQLのGIS拡張ソフトウェアである「PostGIS」を対象に対応状況の確認を実施。
表. PostGISが備えるオブジェクト
No.

図. 図法の整理（例 モルワイデ図法）

空間
データベース機能

PostGIS提供状況

1

ベクタデータポイント（点）、ラインストリング（線）、ポリゴン（多角形）など、ジオメトリ型として提供

2

ラスタデータPostGIS 2.0以降利用可能

3

空間インデックス

GiSTを利用したR-Treeインデックス

4

空間関数

計測関数、関係判定関数、
地理情報書式変換関数など、各種具備

5

ラスタデータPostGIS 2.0以降利用可能

PostGISは空間データベースとしての機能も使いやすく、連携するソフトウェアも豊富であり、GIS要件に十分耐えうると考えられる。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

42

PostGISを用いたアセスメント
 実機検証（アセスメント）として、以下のようなGISの要件に対してPostGISとQGISを用いて解決を行う一連の手順の確認を実施。
 QGISは地図情報の閲覧、編集、分析などを行うためのソ

フトウェア。
No.

要件

概要

1

文化施設の多い市町村の確認

市町村毎（行政区間毎）の文化施設数を集計し、地図上に表示する。
（コロプレス図）

2

文化施設までの経路検索

ある地点から任意の文化施設までの最短経路を検索し、地図上に表示する。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

43

PostGISを用いたアセスメント
文化施設の数で色分けし、特に多い地域を表示

図a. 文化施設の多い市町村の確認

複数の文化施設間の最短経路を表示図b. 文化施設までの経路検索• PostGISを使用することで、地理情報に関してある程度の理解があれば、GISの実現が可能と考えられる。
• 日本語化されたマニュアルも公開されており、実現したい要件が定まっていれば、実現方法の調査は比較的容易。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

44

FDW（外部データラッパ）
DBMSの外部にある様々なデータリソースにSQLでアクセスする
SQL/MEDの仕様を、外部テーブルとして実現する機能。
 FDW（Foreign Data Wrapper）モジュールについて、その機能性や、個々の実装状況について調査。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

45

FDWの紹介 様々なデータリソースに対するFDWが開発されている
データリソース

FDWモジュール

更新対応

調査時のバージョン○

PostgreSQL 9.5同梱

PostgreSQL

postgres_fdw

CSV

file_fdw

参照のみ

PostgreSQL 9.5同梱

ORACLE

oracle_fdw

○

1.4.0

MySQL

mysql_fdw

○

2.1.2

Firebird

firebird_fdw

○

0.1.0

LDAP

ldap_fdw

参照のみ

0.1.1

JSON

json_fdw

参照のみ

1.3.0

Git

git_fdw

参照のみ

1.0.0

RSS

Multicorn.ｒｓｓfdw

参照のみ

1.3.2

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

46

FDWを用いたアセスメント
PostgreSQLを使ったユーザ情報の統合管理というテーマで実現性検証を実施。
 社内の業務システムごとに様々なDBMSを使用。
 利用者として社員情報を個別に保有しており、情報の更新も各システムの管理者が個別に実施しているため、タイムラグが発生する。
→ 各システムの社員情報のメンテナンスを一元管理したい。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

47

FDWを用いたアセスメント
PostgreSQLからFDWを使用して各システムにアクセスし、情報のメンテナンスを行うことを想定。

• 各種FDWモジュールの導入検証を実施。
• 社員情報の更新について検証シナリオ（社員の昇格、退職等）を実行し、想定通りの結果が得られることを確認。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

48

サポートツールPostgreSQLで使用できるツールを使用目的別の一覧で紹介
 管理ツール

機能拡張モジュール
DBサーバ監視、ログ解析など

 開発ツール

SQLの実行・データ編集
テーブル設計・オブジェクト生成


など

各々のツールの概要については別紙一覧表に記載
別紙一覧表

名称

機能概要

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

開発元・ライセンス49

コストの考慮 PostgreSQLはOSSであるため、ライセンス費用はかからないが、目に見えないコストがかかる可能性があり、導入前の検討が必要
費目名目

PostgreSQL

導入

ライセンス費用は不要。導入作業に必要となるコストのみ。

マイグレーション

他DBMSからの移行の場合、スキーマやアプリケーション、オプショ
ン機能の移行等にコストが発生する。

機能拡張

必要に応じて機能の追加が必要になるが、無償で公開されているものも多い。アップグレードの方針はそれぞれで異なるため注意。

保守サポート

各企業が様々な条件でサポートを提供している。自社内で技術者を育成する場合、育成自体や体制の維持にコストが発生する。

アップグレード

データの移行、もしくはツールによるアップグレードが必要。互換性については確認が必要となる。導入時のバージョンで使用し続けることも可能だが、メジャーバージョンのコミュニティによるメンテナ
ンスは当該バージョンのリリースから5年間が目安。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

50

市場価値
 安定性
 市場ニーズ 技術情報の入手
 サポートCopyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

51

安定性
 PostgreSQL 8.4のリリース状況
 ばらつきはあるものの修正項目は減少傾向

 データ破壊を伴うバグは各リリースで0～2件
 セキュリティの問題対しては対応完了次第リリース

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

52

市場ニーズ PostgreSQLの人気度（2016年3月時点）

PostgreSQL

引用元：DB-Engines http://db-engines.com/en/ranking_trend

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

53

技術情報の入手
 メーリングリストやセミナ、書籍等
 Webサイトでの公開情報
情報の種別

内容・URL

コミュニティ

The PostgreSQL Global Development Groupのサイトには、開発情報やリリー
ス情報、ワールドワイドのイベント情報などが公開。
http://www.postgresql.org/

コミュニティ（国内）

日本PostgreSQLユーザ会の活動状況。
http://www.postgresql.jp/

マニュアル

PostgreSQLの日本語マニュアル。
http://www.postgresql.jp/docs

テーマ別の技術情報

Let's Postgres にはテーマ別に整理された技術情報が公開。
http://lets.postgresql.jp/

Wiki

FAQや開発中の機能などがPostgreSQL Wikiに掲載。
https://wiki.postgresql.org/wiki/Main_Page

ブログ

PostgreSQL コミュニティメンバによるブログ。
http://planet.postgresql.org/

拡張機能

エクステンションがまとめられているサイト。
http://pgxn.org/
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

54

サポート
 PostgreSQLやその周辺製品に対するサポートサービ

ス、教育、構築、コンサルティング等、様々なサービスが提供されている
PGECons サポート で検索！

https://www.pgecons.org/postgresql-info/services/
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

55

まとめ
 組み込み関数調査編
 2012年度成果物に対する最新状況の反映

 移行難易度の高い関数の移行を実施

これまでの活動に対して残っている宿題に着手
 DB選定基準編
 DBを選定する際にポイントとなる情報の整理

 特徴的な機能に対するアセスメントの実施

新しい活動として、PostgreSQLの積極的な採用につながるような情報の提供を目指す
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

56

おわりに

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

57

今後の活動について
 DB選定基準編についてはまだ記載が不十分であったり、記載を見送っている内容もあるため、継続対応を検討。
 併せて成果物の全体的な再編も検討していたが、昨年度は断念。成果物がより使いやすくなるように、引き続き改善をしていきたい。
 今年度は組み込み関数に関する情報の更新を実施
したが、成果物のメンテナンスについては方針を明確にして対応を考えたい。

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

58

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

59