PostgreSQL 適 用 するための 検 討 ポイントについて ~ 異 種 DBMSからの 移 行 を 考 える~ 2012 年 度 活 動 成 果 報 告 PostgreSQLエンタープライズ コンソーシアム WG2( 設 計 運 用 WG)
Agenda WG2( 設 計 運 用 WG)の 活 動 概 要 成 果 紹 介 PostgreSQL 移 行 成 否 を 分 けるポイントとは? WG2の 活 動 を 振 り 返 って 2
WG2( 設 計 運 用 WG) 活 動 の 概 要 3
WG2( 設 計 運 用 WG)の 概 要 活 動 方 針 PostgreSQL 利 用 促 進 を 目 的 とし PostgreSQL 経 験 の 少 ないDB 技 術 者 に 向 けた 情 報 発 信 を 行 う 他 DBMSと 比 べた 際 のPostgreSQLの 優 位 点 や 注 意 事 項 を 明 確 化 する 実 システムを 更 改 する 場 合 の 検 討 項 目 手 順 を 作 成 する ( 例 ) SQL 文 やストアドプロシージャなどのアプリケーション 側 の 注 意 点 データ 定 義 変 更 の 有 無 を 判 定 する 基 準 や 方 法 PostgreSQL 活 用 時 にかかるコスト 要 因 の 分 析 4
WG2 活 動 計 画 策 定 の 経 緯 エンタープライズ 領 域 へのPostgreSQLの 普 及 を 推 進 するために PostgreSQLを 普 及 していく 上 で 課 題 となるポイントを PGECons 設 立 準 備 期 間 に 活 動 テーマ 候 補 としてリストアップ リストアップされた 課 題 の 中 から 設 計 運 用 分 野 の 課 題 かつ 要 望 および 重 要 度 を 考 慮 して 活 動 テーマを 選 定 5
( 参 考 ) 活 動 テーマ 候 補 抜 粋 大 項 目 小 項 目 概 要 保 守 性 保 守 サポート トレーサビリティ 保 守 サポート 事 例 紹 介 障 害 解 析 情 報 の 取 得 方 法 の 整 備 運 用 性 セキュリティ 監 視 運 用 目 的 別 の 監 視 手 法 の 整 備 バックアップ 運 用 目 的 別 のバックアップ 手 法 の 整 備 監 査 目 的 別 の 監 査 への 対 応 方 法 (アクセスログの 取 得 など) の 整 備 データベース データ スキーマの 連 携 移 行 手 順 の 整 備 移 行 性 アプリケーション プログラム SQLなどの 互 換 性 検 証 ストアドプロシージャに 対 する 移 行 ノウハウの 整 備 移 行 コスト 移 行 コストの 見 積 の 考 え 方 の 整 備 接 続 性 他 ソフトウェア との 連 携 他 ソフトウェアとの 接 続 性 検 証 他 ソフトウェアとの 連 携 手 法 の 整 備 組 合 せ(スタック)モデルの 整 備 本 年 度 着 手 のテーマ 6
エンタープライズ 領 域 で 使 われている 異 種 DBMSシステムへ の 対 応 を 図 る ( 参 考 )PGECons 発 足 セミナー(2012 年 7 月 6 日 )アンケートより Q: 現 在 お 客 様 はどんなリレーショナルデータベースをお 使 いですか?( 複 数 回 答 可 ) 45 40 35 30 25 20 15 10 5 0 7
WG2の2012 年 度 活 動 テーマ 異 種 DBMSからPostgreSQLへの 移 行 と 設 定 課 題 認 識 異 種 DBMSシステムをPostgreSQLへ 移 行 するプロセスが 確 立 していないことが 普 及 を 妨 げる 大 きな 障 壁 と 認 識 活 動 目 標 移 行 作 業 をどのように 進 めればよいかがわからない 初 期 段 階 で 移 行 に 必 要 なトータルコストを 算 出 できない 過 去 の 経 験 則 や 点 在 するノウハウに 依 存 しているのが 現 状 異 種 DBMSからPostgreSQLへの 移 行 を 検 討 する 際 に 留 意 すべき 事 項 や 難 易 度 判 断 調 査 方 法 といったガイドライ ンを 本 WGから 提 唱 する 8
2012 年 度 の 活 動 スケジュール 中 間 発 表 (12 月 )まで 全 体 計 画 策 定 調 査 項 目 洗 い 出 し 決 定 年 度 末 (3 月 )まで 各 項 目 の 調 査 の 実 施 移 行 トライアルの 実 施 項 目 8 月 9 月 10 月 11 月 12 月 1 月 2 月 3 月 4 月 ~ 計 画 策 定 調 査 調 査 項 目 決 定 中 間 発 表 成 果 発 表 トライアル 成 果 まとめ 9
実 施 体 制 参 加 企 業 ( 企 業 名 順 ) 日 本 電 気 株 式 会 社 NECソフト 株 式 会 社 日 本 電 信 電 話 株 式 会 社 NTTソフトウェア 株 式 会 社 SRA OSS, Inc. 日 本 支 社 TIS 株 式 会 社 株 式 会 社 アシスト クオリカ 株 式 会 社 サイオステクノロジー 株 式 会 社 株 式 会 社 日 立 製 作 所 株 式 会 社 日 立 ソリューションズ 株 式 会 社 富 士 通 ソーシアルサイエンスラボラトリ 10
検 討 会 の 様 子 隔 週 でWG2 参 加 各 社 による 検 討 会 を 開 催 11
今 年 度 の 成 果 物 2012 年 度 WG2 活 動 成 果 報 告 書 として PGEConsサイトに 公 開 しました 移 行 作 業 の 調 査 ドキュメントと ともに 検 証 時 に 実 際 に 移 行 を 行 ったアプリケーションの ソースコードも 公 開 しています 12
作 成 文 書 と 担 当 会 社 作 成 文 書 DB 移 行 フレームワーク 編 システム 構 成 調 査 編 異 種 DB 間 連 携 調 査 編 スキーマ 移 行 調 査 編 SQL 移 行 調 査 編 ストアドプロシージャ 移 行 調 査 編 組 み 込 み 関 数 移 行 調 査 編 データ 移 行 調 査 および 実 践 編 アプリケーション 移 行 調 査 編 アプリケーション 移 行 実 践 編 運 用 設 計 試 験 項 目 チューニング 担 当 会 社 NECソフト 日 本 電 信 電 話 日 本 電 気 サイオステクノロジー TIS SRA OSS, Inc. 日 本 支 社 クオリカ TIS 富 士 通 ソーシアルサイエンスラボラトリ アシスト TIS NTTソフトウェア ( 今 期 実 施 せず) ( 今 期 実 施 せず) ( 今 期 実 施 せず) 13
成 果 紹 介 14
作 業 文 書 の 構 成 移 行 作 業 の 全 体 像 を 解 説 DB 移 行 フレームワーク 編 移 行 作 業 に 含 まれる 作 業 内 容 手 順 の 調 査 システム 構 成 調 査 編 異 種 DB 間 連 携 調 査 編 スキーマ 移 行 調 査 編 SQL 移 行 調 査 編 ストアドプロシージャ 移 行 調 査 編 組 み 込 み 関 数 移 行 調 査 編 アプリケーション 移 行 調 査 編 移 行 作 業 を 試 行 する 検 証 データ 移 行 調 査 および 実 践 編 アプリケーション 移 行 実 践 編 15
作 業 文 書 の 構 成 移 行 作 業 の 全 体 像 を 解 説 DB 移 行 フレームワーク 編 移 行 作 業 に 含 まれる 作 業 内 容 手 順 の 調 査 システム 構 成 調 査 編 異 種 DB 間 連 携 調 査 編 スキーマ 移 行 調 査 編 SQL 移 行 調 査 編 ストアドプロシージャ 移 行 調 査 編 組 み 込 み 関 数 移 行 調 査 編 アプリケーション 移 行 調 査 編 移 行 作 業 を 試 行 する 検 証 データ 移 行 調 査 および 実 践 編 アプリケーション 移 行 実 践 編 16
DB 移 行 フレームワーク 編 (1/2) PostgreSQLに 移 行 するにはどんな 作 業 が 必 要 か? 移 行 プロセスに 対 する 認 識 を 共 有 する のが 目 的 DB 移 行 作 業 の 主 な 流 れ ( 一 部 抜 粋 ) アセスメント PostgreSQL 異 種 DBMS 移 行 判 定 中 断 システム 構 成 移 行 異 種 DB 連 携 検 討 定 義 移 行 データ 移 行 アプリケーション 移 行 運 用 移 行 移 行 評 価 チューニング システム 切 り 替 え データ 移 行 17
DB 移 行 フレームワーク 編 (2/2) アセスメントの 作 業 内 容 について 検 討 簡 易 アセスメントリスト ( 一 部 抜 粋 ) 確 認 事 項 確 認 内 容 判 定 可 用 性 要 件 スキーマ 移 行 上 の 制 約 障 害 による 一 時 的 なサービス 停 止 や 操 作 の 再 実 行 が 許 容 できる 障 害 発 生 時 にノード 切 り 替 えによる 分 単 位 のサービス 停 止 が 許 容 できる 障 害 による 影 響 範 囲 を 制 限 するシステムの 閉 塞 が 可 能 移 行 元 DBMSやオプション 製 品 による 固 有 な 属 性 を 使 用 しない 固 有 な 属 性 (ROWIDやBFILEなど)を 使 用 しない オプション 製 品 が 追 加 する 非 標 準 属 性 を 使 用 しない パーティション パーティションの 利 用 を 前 提 とした 大 容 量 データ 処 理 および 運 用 を 行 わない 100 以 上 に 分 割 するパーティションは 存 在 しない 複 雑 なパーティション 分 割 を 行 わない 構 成 変 更 によるリバランス 等 は 必 要 ない ストアドプロ シージャの 移 行 困 難 性 移 行 作 業 自 体 が 難 しいプロシージャや 存 在 しない PACKAGE 定 義 やグローバル 変 数 を 使 用 しない 移 行 元 DBMSに 固 有 なユーティリティパッケージを 使 用 していない ソースの 更 新 権 限 を 持 たないプロシージャや 難 読 化 したプロシージャは 存 在 しない / / / / 組 み 込 み 関 数 PostgreSQL, Orafceの 何 れも 対 応 していない 関 数 を 利 用 していない / 18
作 業 文 書 の 構 成 移 行 作 業 の 全 体 像 を 解 説 DB 移 行 フレームワーク 編 移 行 作 業 に 含 まれる 作 業 内 容 手 順 の 調 査 システム 構 成 調 査 編 異 種 DB 間 連 携 調 査 編 スキーマ 移 行 調 査 編 SQL 移 行 調 査 編 ストアドプロシージャ 移 行 調 査 編 組 み 込 み 関 数 移 行 調 査 編 アプリケーション 移 行 調 査 編 移 行 作 業 を 試 行 する 検 証 データ 移 行 調 査 および 実 践 編 アプリケーション 移 行 実 践 編 19
システム 構 成 調 査 編 (1/2) DBMSの 主 なシステム 構 成 とその 特 徴 について 調 査 し PostgreSQLに 移 行 時 の 構 成 検 討 の 参 考 となる 資 料 を 作 成 一 般 的 なシステム 構 成 の 特 性 を 紹 介 シングルサーバ HAクラスタ データベースレプリケーション マルチマスタ 負 荷 分 散 クラスタ 今 は XXXX DBMSで Active-Standby 構 成 だけど PostgreSQLで 同 じ 構 成 でよいのか? 可 用 性? 主 に 検 討 のポイントは 以 下 可 用 性 性 能 ( 参 照 更 新 ) 拡 張 性 設 計 運 用 面 初 期 導 入 コスト 性 能? コスト? 20
システム 構 成 調 査 編 (2/2) HAクラスタ 構 成 の 比 較 内 容 ( 一 部 抜 粋 ) 共 有 ディスク ディスクミラーリング ストリーミングレプリケーション 可 用 性 サービス 継 続 性 取 れる 取 れる 取 れる 取 れる ディザスタ ストレージレイヤーでレプリケー 取 れる ションをすれば 可 能 リカバリ 性 能 参 照 系 オーバヘッドはなし オーバヘッドはなし スケールアウトが 可 能 更 新 系 拡 張 性 運 用 設 計 面 初 期 導 入 コスト オーバヘッドはなし HA 構 成 の 中 では 一 元 化 されてい るメリットが 出 る スケールアップで 対 応 データ 容 量 追 加 は 行 いやすい ストレージ 全 体 を 一 括 管 理 できる メリットあり 特 徴 的 な 検 討 項 目 クラスタ 設 計 ストレージの 設 計 共 有 ディスクが 必 要 となり 比 較 的 高 価 オーバヘッドあり 同 期 非 同 期 の 設 定 もあるが ストレージレベルの 非 同 期 では DBの 論 理 破 壊 の 可 能 性 がある スケールアップで 対 応 特 徴 的 な 検 討 項 目 クラスタ 設 計 ストレージ 層 の 同 期 設 計 フェイルバック 時 のデータ 同 期 設 計 汎 用 のサーバのみで 構 成 を 組 み 事 が 可 能 オーバヘッドあり 同 期 非 同 期 の 設 定 で 性 能 とトラン ザクション 反 映 の 信 頼 性 のトレード オフになる カスケードレプリケーションによって 参 照 系 のスケールアウトが 可 能 障 害 時 の 切 替 は 比 較 的 早 い 可 能 性 特 徴 的 な 検 討 項 目 クラスタ 設 計 レプリケーションの 同 期 や PostgreSQLの 切 替 動 作 の 設 計 フェイルバック 時 のデータ 同 期 設 計 汎 用 のサーバのみで 構 成 を 組 み 事 が 可 能 21
異 種 DB 間 連 携 調 査 編 (1/2) 異 種 DBMSとPostgreSQLをどう 連 携 させるか? 異 種 DBMSとPostgreSQLを 連 携 させる 目 的 データベースの 段 階 移 行 時 における 並 行 稼 動 マスターDBの 負 荷 分 散 災 害 対 策 DWH 構 築 異 種 DBMS 間 レプリケーションを 実 現 するソフトウェアを 調 査 InfoFrame DataCoordinator (NEC) DBMoto (クライム) DataSpider Servista (アプレッソ) xdb Replication Server (EnterpriseDB) 22
異 種 DB 間 連 携 調 査 編 (2/2) 異 種 DBMS 間 連 携 トライアル xdb Replication を 使 用 した 異 種 DBMS 間 連 携 を 実 施 し 連 携 時 の 制 限 事 項 や 注 意 点 を 調 査 Oracle xdb Replication Console によるデータ 連 携 PostgreSQL 実 施 結 果 異 種 DBMSとPostgreSQLのデータ 連 携 を 容 易 に 実 現 柔 軟 なレプリケーション 設 定 が 可 能 であることを 確 認 23
スキーマ 移 行 調 査 編 (1/2) 異 種 DBMSとPostgreSQLのスキーマの 違 いは? Oracle, PostgreSQLのDDL 互 換 性 を 調 査 各 種 DDLの 相 違 点 をもとにした 移 行 方 針 を 解 説 組 み 込 みデータ 型 対 応 表 ( 一 部 抜 粋 ) 24
スキーマ 移 行 調 査 編 (2/2) Ora2Pgを 使 った 移 行 で 手 作 業 が 必 要 な 部 分 を 解 説 CREATE TABLE DATA_TYPE_TEST1 ( ID VARCHAR2(5) NOT NULL, CHAR_VARCHAR2_BYTE VARCHAR2(20), CHAR_VARCHAR2_CHAR VARCHAR2(20 CHAR), CHAR_NVARCHAR2 NVARCHAR2(20), CHAR_CHAR_BYTE CHAR(10), CHAR_CHAR_CHAR CHAR(10 CHAR), CHAR_NCHAR NCHAR(10), CHAR_LONG LONG, CHAR_CLOB CLOB, CHAR_NCLOB NCLOB, NUM_NUMBER1 NUMBER(5), NUM_NUMBER2 NUMBER(10), NUM_NUMBER3 NUMBER(11), NUM_NUMBER4 NUMBER(10,2), NUM_NUMBER5 NUMBER(15,5), DATE_DATE DATE, DATE_TIMESTAMP TIMESTAMP(6), DATE_TIMESTAMP_TIMEZONE TIMESTAMP(6) WITH TIME ZONE, DATE_TIMESTAMP_LOCAL TIMESTAMP(6) WITH LOCAL TIME ZONE ) 25
スキーマ 移 行 調 査 編 (2/2) Ora2Pgを 使 った 移 行 で 手 作 業 が 必 要 な 部 分 を 解 説 CREATE TABLE DATA_TYPE_TEST1 ( ID VARCHAR2(5) NOT NULL, CREATE TABLE "data_type_test1" ( CHAR_VARCHAR2_BYTE VARCHAR2(20), "id" varchar(5) NOT NULL, CHAR_VARCHAR2_CHAR VARCHAR2(20 CHAR), char_varchar2_byte varchar(20), CHAR_NVARCHAR2 NVARCHAR2(20), char_varchar2_char varchar(20), CHAR_CHAR_BYTE CHAR(10), char_nvarchar2 varchar(20), CHAR_CHAR_CHAR CHAR(10 CHAR), char_char_byte char(10), CHAR_NCHAR NCHAR(10), char_char_char char(10), CHAR_LONG LONG, char_nchar char, 手 作 業 で char(10) に 書 き 換 える CHAR_CLOB CLOB, char_long text, CHAR_NCLOB NCLOB, char_clob text, NUM_NUMBER1 NUMBER(5), char_nclob text, NUM_NUMBER2 NUMBER(10), num_number1 numeric(5), 手 作 業 で int に 書 き 換 える NUM_NUMBER3 NUMBER(11), "num_number2" numeric(10), 手 作 業 で bigint に 書 き 換 える NUM_NUMBER4 NUMBER(10,2), "num_number3" numeric(11), 手 作 業 で bigint に 書 き 換 える NUM_NUMBER5 NUMBER(15,5), "num_number4" decimal(10,2), DATE_DATE DATE, "num_number5" decimal(15,5), DATE_TIMESTAMP TIMESTAMP(6), "date_date" timestamp, DATE_TIMESTAMP_TIMEZONE TIMESTAMP(6) WITH TIME ZONE, "date_timestamp" timestamp, 手 作 業 で timestamp(6) に 書 き 換 える DATE_TIMESTAMP_LOCAL TIMESTAMP(6) WITH LOCAL TIME ZONE "date_timestamp_timezone" timestamp, 手 作 業 で timestamp(6) with time zone に 書 き 換 える ) "date_timestamp_local" timestamp 手 作 業 で timestamp(6) に 書 き 換 える ); 26
SQL 移 行 調 査 編 (1/2) 異 種 DBMSのSQLはPostgreSQLでも 動 くのか? Oracle, SQL Server, PostgreSQLのSQL 互 換 性 を 調 査 互 換 性 がないSQLの 書 き 換 え 方 針 を 調 査 SQL 差 異 表 ( 一 部 抜 粋 ) 27
SQL 移 行 調 査 編 (2/2) 代 表 的 な 書 き 換 え 例 SELECT 結 果 の 行 数 を 制 限 するSQLはDBMS 毎 に 異 なる Oracle SQL Server PostgreSQL SELECT * FROM (SELECT * FROM tbl ORDER BY id) WHERE ROWNUM <= 10 SELECT TOP 10 * FROM tbl ORDER BY id SELECT * FROM tbl ORDER BY id LIMIT 10 OFFSET 0 PostgreSQL(8.4 以 降 )は 標 準 SQLの 構 文 に 対 応 SELECT * FROM tbl OFFSET 0 ROW FETCH FIRST 10 ROWS ONLY MERGE PostgreSQLでは 未 実 装 WITH 句 を 使 った 書 き 換 え 方 法 を 紹 介 CONNECT BY Oracle 独 自 の 階 層 問 い 合 わせ 再 帰 SQL( 標 準 SQL 準 拠 )を 使 った 書 き 換 え 方 法 を 紹 介 28
ストアドプロシージャ 移 行 調 査 編 異 種 DBMSのストアドプロシージャをどのように PostgreSQLに 移 行 すればよいか? PL/SQLのストアドプロシージャをPostgreSQLへ 移 行 する 際 に 注 意 すべき 点 について 調 査 手 続 き 言 語 の 文 法 的 な 違 いを 明 確 にすることを 目 的 とした 調 査 結 果 SQLや 手 続 き 言 語 の 差 は 機 械 的 に 変 換 可 能 と 思 われる DBMSのアーキテクチャにかかわる 部 分 (トランザクション 制 御 など)が 存 在 すると 移 行 の 難 易 度 が 高 くなる 無 理 にプロシージャに 移 行 せず アプリケーションとして 書 き 換 えた 方 が 良 いパターンもある 29
組 み 込 み 関 数 移 行 調 査 編 (1/2) 異 種 DBMSの 関 数 はPostgreSQLでも 動 くのか? Oracle, PostgreSQLの 組 み 込 み 関 数 互 換 性 を 調 査 組 み 込 み 関 数 対 応 表 ( 一 部 抜 粋 ) 30
組 み 込 み 関 数 移 行 調 査 編 (2/2) 代 表 的 な 書 き 換 え 例 ADD_MONTHS : 月 を 演 算 する 関 数 SQL> SELECT ADD_MONTHS( 2013/3/22,1) FROM DUAL; ADD_MONT -------- 13-04-22 PostgreSQL に ADD_MONTHS 関 数 は 存 在 しない 算 術 演 算 子 を 使 った 書 き 換 え postgres=# SELECT date 2013-03-22 + interval 1 months ;?column? --------------------- 2013-04-22 00:00:00 (1 行 ) Oracle 互 換 関 数 ライブラリ(Orafce)を 利 用 する 方 法 も 31
作 業 文 書 の 構 成 移 行 作 業 の 全 体 像 を 解 説 DB 移 行 フレームワーク 編 移 行 作 業 に 含 まれる 作 業 内 容 手 順 の 調 査 システム 構 成 調 査 編 異 種 DB 間 連 携 調 査 編 スキーマ 移 行 調 査 編 SQL 移 行 調 査 編 ストアドプロシージャ 移 行 調 査 編 組 み 込 み 関 数 移 行 調 査 編 アプリケーション 移 行 調 査 編 移 行 作 業 を 試 行 する 検 証 データ 移 行 調 査 および 実 践 編 アプリケーション 移 行 実 践 編 32
データ 移 行 調 査 および 実 践 編 (1/3) 異 種 DBMSのデータをPostgreSQLに 持 ってくるには どうすればいい? 異 種 DBMSからPostgreSQLへデータ 移 行 を 行 う 場 合 に 発 生 する 作 業 や 注 意 点 について 調 査 実 際 にデータ 移 行 を 試 行 し 調 査 結 果 の 妥 当 性 を 検 証 異 種 DBMS Extract 使 用 するツール コマンドは? CSVファイル など PostgreSQL 投 入 可 能 形 式 Transform Load 文 字 コード 外 字 はどうする? どのくらい 時 間 がかかる? PostgreSQL 33
データ 移 行 調 査 および 実 践 編 (2/3) 移 行 調 査 編 Oracle, SQLServerからPostgreSQLへのデータ 移 行 データ 移 行 作 業 の 手 順 と 注 意 点 を 解 説 データの 抽 出 (Extract) CSVへ 出 力 する 際 の 表 現 形 式 中 間 データへ 出 力 するツール(SPOOL, Ora2Pg, bcpユーティリティ) データの 変 換 (Transform) 中 間 データの 文 字 エンコーディングの 変 換 データの 投 入 (Load) データをロードするツール (COPY, psql, pg_bulkload) データ 移 行 後 の 作 業 データロード 後 に 確 認 すべき 点 (エラー 有 無 投 入 行 数 ) VACUUM, ANALYZE の 実 施 34
データ 移 行 調 査 および 実 践 編 (3/3) 移 行 実 践 編 OracleからPostgreSQLへのデータ 移 行 を 実 践 移 行 元 DBはJdbcRunner 同 梱 の TinyTPC-C で 作 成 Extract, Transform Load Ora2Pg データ 投 入 DML psql Oracle SPOOL CSV COPY PostgreSQL pg_bulkload 実 施 結 果 各 種 ツールで 正 常 に 移 行 でき ツールの 利 便 性 を 確 認 用 途 によっては 使 いづらいケースもあった ツール 利 用 時 は 操 作 方 法 及 びフィジビリティの 確 認 が 重 要 35
アプリケーション 移 行 実 践 編 (1/5) 実 際 に 異 種 DBMSからPostgreSQLへアプリケーショ ン 移 行 を 行 ったら どういう 問 題 が 発 生 するか? 異 種 DBMSで 稼 動 するアプリケーションを PostgreSQL(9.2.2) 上 に 移 行 して 評 価 を 行 った 移 行 対 象 アプリケーション Commander4J バーコードラベルを 作 成 するJavaのOSSアプリケーション 対 応 DB:Oracle, SQLServer, MySQL ステップ 数 :71Ks テーブル 数 :39 SQL 数 :3390 ストアドプロシージャ:なし 36
アプリケーション 移 行 実 践 編 (2/5) SQL 変 更 箇 所 の 抽 出 に db_syntax_diff を 使 用 db_syntax_diff Oracle DatabaseからPostgreSQLへアプリケーションを 移 行 する 際 に 修 正 が 必 要 となる 箇 所 を 報 告 するツール NTT OSSセンタで 開 発 されたOSS ライセンスは The PostgreSQL License https://github.com/db-syntax-diff より 取 得 可 能 アプリケーションのソースコードを 指 定 して 実 行 すると 修 正 が 必 要 なSQLのパターンとマッチングして 報 告 修 正 が 必 要 なSQLのパターンはXML 形 式 で 定 義 するため 必 要 に 応 じてチェックパターンのカスタマイズが 可 能 37
アプリケーション 移 行 実 践 編 (3/5) db_syntax_diff の 出 力 例 ( 一 部 抜 粋 ) 38
アプリケーション 移 行 実 践 編 (4/5) 移 行 実 施 の 手 順 db_syntax_diffをjavaソースコードと 環 境 構 築 用 の SQLファイル(スキーマ 定 義 DDL データ 投 入 DML)に 対 して 実 行 OracleのJDBCドライバクラスを 呼 び 出 す 部 分 を 修 正 db_syntax_diffの 実 行 結 果 をもとに SQL 文 を 修 正 修 正 後 アプリケーションの 動 作 確 認 Commander4j の 基 本 機 能 が 正 常 動 作 するか? 39
アプリケーション 移 行 実 践 編 (5/5) 移 行 実 施 結 果 テスト 工 程 が 全 工 程 の90% 以 上 を 占 めた ツールでSQL 修 正 箇 所 を 自 動 検 出 し 修 正 作 業 が 短 く 済 んだ 修 正 有 無 に 関 わらず 関 連 するSQLはすべてテストを 実 施 した db_syntax_diff で 検 出 できなかった 箇 所 はテスト 工 程 で 対 応 した 項 番 作 業 項 目 所 要 時 間 比 率 #1 AP 修 正 (PostgreSQLへの 接 続 ) 2.8% #2 AP 修 正 (db_syntax_diffに 基 づく 修 正 ) 5.8% #3 テスト およびエラー 修 正 91.4% #1 #2 #3 40
PostgreSQL 移 行 の 成 否 を 分 けるポイントとは? 41
PostgreSQL 移 行 の 成 否 とは? そもそもどういう 形 で 終 われば 移 行 に 成 功 した と 言 えるのでしょう? 莫 大 な 費 用 をかけて 移 行 できても それは 成 功 と 言 えるのでしょうか? 移 行 の 成 功 とは 42
PostgreSQL 移 行 の 成 否 とは? そもそもどういう 形 で 終 われば 移 行 に 成 功 した と 言 えるのでしょう? 莫 大 な 費 用 をかけて 移 行 できても それは 成 功 と 言 えるのでしょうか? 移 行 の 成 功 とは 当 初 見 積 りと 実 作 業 量 の 差 が 小 さい 43
PostgreSQL 移 行 の 成 否 を 分 けるポイント アセスメントの 精 度 を 高 める 当 初 見 積 りを 正 確 にする 移 行 元 移 行 先 システムの 要 件 を 正 しく 把 握 する 移 行 元 DBMSとPostgreSQLの 機 能 差 異 を 理 解 しておく 移 行 ツールをうまく 活 用 する 動 作 検 証 テストの 時 間 を 十 分 に 確 保 する 結 局 実 作 業 量 は 増 えることを 見 越 しておく アプリケーション 移 行 実 践 編 では テスト 工 程 が 全 体 の9 割 以 上 という 結 果 に 移 行 ツールの 利 用 で 修 正 の 実 作 業 量 は 縮 小 移 行 ツールで 吸 収 できないケースへの 対 応 は 必 ず 発 生 44
参 加 各 社 からの 声 WG2の 活 動 を 振 り 返 って 45
WG2の 活 動 で 苦 労 したこと 1. 作 業 時 間 の 捻 出 ミーティング 調 査 時 間 を 確 保 するのが 大 変 だった (NECソフト クオリカ) WG1とWG2を 兼 務 しており 作 業 も 多 く 大 変 だった 社 内 リソースも 含 め 作 業 分 担 をしっかりすると より 参 加 しやすくなると 思 う (NEC) 通 常 業 務 をこなしながら 2 週 に1 度 の 検 討 会 に 向 けた 活 動 を 実 施 していくのは 大 変 だった (NTT SOFT) 46
WG2の 活 動 で 得 られたこと 1. 技 術 者 交 流 の 機 会 PostgreSQLをはじめとするDBMSに 造 詣 の 深 い 他 社 の 技 術 者 と 議 論 する 場 が 得 られた (NECソフト SRA OSS 富 士 通 SSL サイオス NTT SOFT) 2. 実 用 性 の 高 い 技 術 情 報 これまで 知 らなかったツールの 知 識 やノウハウを 得 た (NECソフト NTT SOFT) db_syntax_diff 等 のツールについて 知 ることが 出 来 実 際 のシステム 移 行 案 件 にも 役 立 てることができた (クオリカ) 他 社 が 持 つ 成 果 物 を 参 照 する 機 会 があり 参 考 になった (NTT SOFT) 47
WG2の 活 動 で 得 られたこと 3. PostgreSQLに 対 する 理 解 度 の 向 上 成 果 物 としてまとめることで PostgreSQLに 対 する 理 解 が 深 まった (NEC) 自 身 の 理 解 が 不 足 している 点 を 他 社 のDB 技 術 者 と 交 流 することで 気 づくことができた (NEC) 参 加 企 業 で 作 業 を 分 担 することで 1 社 では 調 査 できない 範 囲 のノウハウを 得 られた (アシスト) 4. ドキュメンテーション 技 術 の 向 上 成 果 物 作 成 を 通 じ 技 術 文 書 のまとめ 方 が 参 考 になった (アシスト) 書 籍 を 出 されている 方 も 少 なくなかった 為 ドキュメンテー ションのテクニックや レビューのコメントなどが 大 変 勉 強 に なった (サイオス) 48
PGEConsで 一 緒 に 活 動 しませんか? 49
Javaは Oracle Corporation 及 びその 子 会 社 関 連 会 社 の 米 国 及 びその 他 の 国 における 登 録 商 標 です 文 中 の 社 名 商 品 名 等 は 各 社 の 商 標 または 登 録 商 標 である 場 合 があります Microsoft Windows Server SQL Server 米 国 Microsoft Corporationの 米 国 及 びその 他 の 国 にお ける 登 録 商 標 または 商 標 です MySQLは Oracle Corporation 及 びその 子 会 社 関 連 会 社 の 米 国 及 びその 他 の 国 における 登 録 商 標 です 文 中 の 社 名 商 品 名 等 は 各 社 の 商 標 または 登 録 商 標 である 場 合 があります Oracleは Oracle Corporation 及 びその 子 会 社 関 連 会 社 の 米 国 及 びその 他 の 国 における 登 録 商 標 です 文 中 の 社 名 商 品 名 等 は 各 社 の 商 標 または 登 録 商 標 である 場 合 があります PostgreSQLは PostgreSQL Community Association of Canadaのカナダにおける 登 録 商 標 および その 他 の 国 における 商 標 です TPC, TPC Benchmark,TPC-C, TPC-E, tpmc, TPC-H, QphHは 米 国 Transaction Processing Performance Councilの 商 標 です その 他 本 資 料 に 記 載 されている 社 名 及 び 商 品 名 はそれぞれ 各 社 が 商 標 または 登 録 商 標 として 使 用 している 場 合 があります 50