目次


PHPアプリケーションをMySQLからDB2に移行するプロセス

第1部移行の準備

IBM社内のイントラネット・アプリケーションの事例に基づく移行について

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: PHPアプリケーションをMySQLからDB2に移行するプロセス

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:PHPアプリケーションをMySQLからDB2に移行するプロセス

このシリーズの続きに乞うご期待。

本シリーズについて

My SQLは、現在PHPプログラミングで最も多く使用されているデータベース・サーバーですが、DB2もPHPの機能に対応した汎用度の高いデータベースであり、多くのアプリケーションに最適な機能を提供する点ではMySQLを上回る大きなメリットを提供します。

本シリーズでは、PHPアプリケーションをDB2に移行する際のメリットについて説明したうえで、実際の移行例に基づいて移行の準備方法および実行方法、メンテナンス方法、発生する恐れのあるリスクへの対応方法について説明します。プロジェクトをスムーズに進めるために有用なコードやコンフィギュレーションのサンプルならびに各種関連情報も提供します。

実際の環境でスムーズに移行を行った例とここから得た教訓を参照することで、明確に記載されたステップに基づいて移行を簡単に実行でき、大きなメリットが得られることを確認できます。

本シリーズは4部に分かれています。IBM社内でibm.comのコンテンツ製作のために本番システムで使用されるミッション・クリティカルなPHPアプリケーション(グローバルに4,000名のユーザーが存在)をMySQLからDB2にスムーズに移行したプロジェクトから得た教訓について説明します。

  • 第1部では、移行準備について説明します。
  • 第2部では、データベース移行について説明します。
  • 第3部では、PHPコード変換について説明します。
  • 第4部では、アプリケーションの実装とメンテナンスについて説明します。

本資料の内容

本資料は、PHPアプリケーションをMySQLからDB2に移行する際の一般的なステップについて理解を深めることを目的としています。あわせて、参照可能な関連情報について紹介し、IBMのプロジェクト・チームが2010年のはじめ実行したプロジェクトについて説明します。

MySQLからDB2への移行について調べた経験のあるユーザーであれば、製品の説明資料、パフォーマンス・ベンチマーク、DB2の説明資料に記載されている機能、IBM Redbookの比較資料(MySQL to DB2 Conversion Guide参考文献を参照)からDB2が提供するメリットについて既にご存知かもしれません。

さらに、機能をフルに装備した無償データ・サーバー、DB2 Express-Cも有益な製品です。本製品は、クラウドまたはAmazon EC2でIBM Smart Business Business Development and Testを活用して簡単にインストールと評価を行えます。本ソリューションに関するリンクも、参考文献のセクションに記載しました。

ここでは、IBM社内で頻繁に使用されるPHPによるイントラネット・アプリケーション(ibm.comのWebサイトのさまざまなページでコンテンツ管理用に使用)を2010年にスムーズに移行した実際の例について説明します。

本記事を読むと、同様の移行プロセスの概要把握、実行すべき項目のタイミングと条件の確認、発生する恐れのあるリスクの認識、各ステップにおけるサポートの受け方について確認することができます。これらの情報を確認すれば、ユーザーのPHPアプリケーションが現在MySQLで構築されている場合、確信を持ってDB2を選択し最大限に活用できます。

本記事の適用について

本記事は、IBM社内で実施したMySQLからDB2への移行のプロセスで得られた教訓と同様の処理に利用可能な関連情報について説明します。本記事は、すべてのシナリオに対応しているわけではなく、移行に関する包括的ガイドではありません。

事例について

Ibm.comの管理チームでは7年以上にわたってプロジェクト・トラッキング・ツール (PTT) を活用して ibm.com上でSales and Distribution部門が公開する情報のライフサイクルを管理してきました。本事例は、このアプリケーションを移行した経緯を説明しています。

PTTは当初小さな組織が使用していた部門ツールから、次第にグローバル規模でスケジュール管理とプロジェクト管理を行うアプリケーションへと成長し、現在では世界中で4,000名のユーザーが使用しているアプリケーションです。

PTTはさまざまな点でLAMP(Linux、Apache、MySQL、およびPHP)プラットフォームで構築された他のイントラネット・ツールと類似しています。差し迫ったビジネス・ニーズのためにある開発者が週末を返上して開発したアプリケーションです。ユーザー数が増大するにつれ、本アプリケーションは多くの新規ニーズに対応するため次々に導入され、急速にその機能を拡張してきました。しかしながら、当初は有益であった特徴が、後日課題を生みこととなります。

移行のきっかけ

本アプリケーションはそのパフォーマンスと変動するニーズへの対応力が関係者にとって有益なツールでしたが、コア・ビジネスは成熟かつ堅牢な戦略に基づくエンドツーエンドのプロセスへと遷移途上でした。しかし、アプリケーションそのものに対して一連の明確な要件が設定され、ワークフロー管理において実績に基づくベストプラクティスが提示され、本アプリケーションに含まれるデータの容量と価値が増大すると、PTTシステムは一時的な便利なアプリケーションではなく、当社のコア・ビジネスの基盤とまでに成長することになります。

PTTが当社の日々の業務により大きな価値を提供し、より堅牢な業務を提供するなか、PTTを関連する一連のWebサービスやデータ・ソースと統合するために、アーキテクチャーの変更が必要となってきました。システム設計をアップグレードするために、PTTに関して包括的なサービス指向アーキテクチャー(SOA)の適用が計画され、新規のビジネス・インテリジェンス・ツールを採用することによって、PTTのデータを活用し、業務効率を向上させました。

表1において、当社がMySQLからDB2への移行を決定した理由についてまとめています。ステークホルダーにとっての相対的な重要性が高いものから順に記載しています。

表1. 移行によって達成されるメリットと移行のきっかけ
メリット内容重要性
分析ツールのパフォーマンスと互換性データ容量が大きくなり、Hyperion-Brioによるデスクトップ分析ツールでは対応が困難になっていました。この問題を解決するためにCognosの導入を決定したものの、本製品はLinux上で稼働するDB2とのみ互換性を持っていた(MySQLはODBCを使用するWindows上でのみ使用可能)。タイムリーによりスマートな意思決定を行うために、データベースの移行が必要だった。非常に重要
IBMのミドルウェアとの互換性サービス指向アーキテクチャー(SOA)に対応するために、IBMポートフォリオに含まれる他のツールやアプリケーション(コンテンツ管理を行うFileNetやビジネス・プロセスの管理を行うILOG JRules等)との互換性についても検討した。高い
DB2の専門知識MySQLの活用経験は十分にあったが、IBM社ではDB2に関する資料、経験、およびサポートが豊富であった。さらに、アプリケーション・サポート・スタッフを数多く生み出す教育機関においてDB2の使用実績が高まっていた。高い
データの一貫性MySQLデータベースには、トランザクション処理を行わないMyISAMエンジンをベースにしていた。日々のトランザクション容量が増加し、それに伴いトランザクションの価値が上昇するなか、データの一貫性とガバナンスを改善するためにはトランザクション、ストアード・プロシージャー、およびトリガーへの移行が必須となっていた。MySQLはさまざまなストレージ・エンジンに基づいて多くの機能を提供しているが、DB2のほうがより成熟した機能を提供していた。高い
ホスティングのオプションとコスト現在当社のデータセンター内でアプリケーションのホスティングを行っている。他のホスティング業者のサービスや事前設定済みのIBMクラウド上のサーバー・イメージに今後移行することを決定した場合、サポート・コストを低く保つためにテスト済みかつ共通のプロファイルを提供する必要がある。中程度
ライセンスのコストOracleが提供するMySQLの年間のサポート価格は、600ドルから5,000ドルであるのに対し、IBM社内の使用なら、DB2のライセンス・コストはかからない。通常のお客様は、DB2 ExpressのサポートをOracleが提供するサポート価格よりも低い価格で取得することができる。DB2の使用期限付きのライセンス・コストは、2,000ドル程度である。低い

もちろん、他にも以下のようなDB2への移行が非常に魅力的であると実感できるメリットが挙げられます。

  • 自動チューニングと自動コンフィギュレーション
  • 非常に高い拡張性
  • セキュリティー設定の精緻化
  • ネイティブXMLストレージ
  • データ圧縮

当初、移行時におけるこれらの要素は、当社のビジネス目標にはさほど重要ではないと考えられていました。

コストおよびメリットの評価

移行に関する評価を行ったところ、移行をスムーズに行うためにリスクの削減が必要となる項目をいくつか特定しました。あらゆる移行計画において、現状を客観的に分析することで、移行を行うべきかどうか適正に評価する必要があります。移行により得られるメリットが、お客様のアプリケーションやサイトで発生する恐れのあるリスクを上回る必要があります。

表2では、移行に関する戦略とともに、移行によって発生する恐れがあり、その影響が大きいリスクについて列挙しました。

表2. 移行によって発生する恐れのあるリスクとリスク削減のための戦略
リスク内容リスク削減のための戦略
安定しているコードとデータベース構造にエラーが発生する。ほぼ8年間に及ぶシステム変更によって、安定しているカスタマイズ済みのアプリケーションを構築していた。本アプリケーションは完璧ではなく、新規機能を追加する際にはソフトウェアの更新に伴うエラーが発生していたものの、きわめて安定した状態にあり、ステークホルダーの要件を十分満たしていた。重要な機能について詳細の文書化を行い、作成した文書に基づいてユニット・テスト、コンポーネント・テスト、およびユーザー・アクセプタンス・テストを実施する。
既存のハードウェアとミドルウェアのインフラが変更される。移行を行うことで、既存のバックアップとレプリケーションのアーキテクチャーに大きな変更が発生する。新規のプラットフォームで必要となるキャパシティーについて把握し、要件を満たし、さらには現状を上回る新規のインフラを構築する。
リソースを新機能の開発からインフラの移行に振り分けられる。Wより多くのリソースをインフラ投資に割く必要があるため、新機能に割ける時間が少なくなる。機能の点からアプリケーションの成熟度が高いことを考えると、この点は大きな問題とはならなかった。ビジネス部門がそれほど頻繁にシステムを使用せず、重要な新機能の開発が必要ない時期に移行を実施する。

表3では、当社がMySQLを使用し続けた際に対応が必要となる可能性の高いリスクについて説明しています。

表3. 移行の必然性を示す一連のリスク
リスク内容
ビジネススピードを最大化できない。高パフォーマンスな分析ツールによってビジネス・インテリジェンスと業務効率を改善しなければ、データの増大とともにレポーティングと意思決定に要する時間が長くなり、ビジネスの遅延が発生する。
データ一貫性が懸念される。MySQLはトランザクションに対応したストレージ・エンジンを提供するものの、当社のアプリケーションはより軽微なMyISAMのテーブル型に基づいて構築されていた。データの一貫性とガバナンスを改善するためには、トランザクションに対応したストレージ・エンジンまたは別のデータ・サーバー・ベンダーに以降することが必要となっていた。
Oracleのサポートへの依存。OracleがSunを2009年に買収したことによって、今後のMySQLに関するサポート状況が見えなくなっていた。さらに、Oracleは2007年Hyperion-Bioによる分析ツールを買収した。

慎重にリスクを見極め、メリットを検証し、ツールや資料等の関連情報を効果的に活用することによって、本プロジェクトは時間とリソースを投資するに値することを確認しました。

チームメンバーに対する教育

移行実施の決定後、作業項目の計画を立て、作業項目に影響を及ぼす条件とスケジュールについて検討し、リソースの割り当てを開始しました。本プロセスのポイントは、チームメンバーのDB2に関する知識を高め、移行にあたっての参照資料を揃え、以前の移行作業から得た教訓をまとめることでした。さらに、移行プロセスを迅速化できる自動化ツールやその他の開発環境についても評価を行いました。

アプリケーションの移行以外にも、ソフトウェアとハードウェアのインフラで必要となる変更について計画を立て、PHPインフラにおいてデータ・レイヤ以外について改善を行うべきかどうかを決定しました。

これらをまず実行することで、非常に精度の高いプロジェクト計画を作成できました。

チームメンバーのDB2に対する知識を高める

当社チームはPTT以外のアプリケーションのサポートも行っているため、チームメンバーの多くはDB2に対する基本的な知識を持っていました。DB2は他のツールとの関連が深く、最も頻繁に使用されているデータベース・プラットフォームであるためです。DB2を使用したことがないメンバーは、以下の参照資料を活用してDB2の基本情報を確認しました。これらの資料は、参考文献セクションにも列挙されています。

  • DB2 for Linux, UNIX, and Windowsに基づくアプリケーション開発に関する参照資料(developerWorksで掲載)
  • DB2 for Linux, UNIX, and Windowsによるデータベース管理に関する参照資料(developerWorksで掲載)
  • “Understanding DB2: Learning Visually with Examples,” IBM Press.
  • データベース管理者向けDB2に関するe-kit(developerWorksで掲載)

場合によっては、講義形式のトレーニングのほうが有用である場合があります。より詳細な情報については、参考文献のセクションを参照ください。

移行に関してチームメンバーの知識を高める

他のアプリケーション・サーバー、データ・サーバー、およびオペレーティング・システムからIBMのソフトウェアに移行するにあたっては豊富な情報が提供されています。特に、IBM Redbookからは一連の移行ガイドが提供されています。当社が主に活用したのは、最近改訂された“MySQL to DB2 Conversion Guide”(参考文献を参照)です。無償で提供される本ガイドは、当社が移行を検討していた2009年12月に改訂されました。当社ではMySQLからDB2への移行を行うにあたり、本資料を主に参照しました。

PHPに特化した移行情報を収集するために、別のIBM Redbook (“Developing PHP Applications for IBM Data Servers”)を参照し、作者の1人があるISVが提供する主なアプリケーションを移行した際の経験も参考にしました。Daniel Krookによる考察は、Writing SQL for both MySQL and DB2というタイトルのブログの記事(参考文献を参照)にまとめられています。さらに、その他の一連の参照資料とDB2の製品情報資料を参照しました。

他のプロジェクトに基づいてDB2を使用した実績があったため、ソフトウェア移行プロジェクト事務局(SMPO、参考文献を参照)の支援は求めませんでした。SMPOは他の移行プロジェクトの場合は有効に活用できる可能性があると考えています。本組織は、移行シナリオに基づいて無償で評価を実施します。

移行ツールの検証

移行に必要な一般的なタスクを確認した時点で、移行を迅速にする自動化ツールについて、評価する必要がありました。MySQLからDB2への移行をスムーズに実施するにはいくつかの方法があり、どの方法が当社にとって最適かを判断する必要がありました。当社では、IBM DATA MOVEMENT TOOL (DMT)とRational Software Architect (RSA)を使用することを決定しました。InfoSphere Data ArchitectやOptim Development Studio等のその他のツールを使用して、データ・モデリングやプロシージャーの開発を行うことも可能でした。しかしながらこれらのツールがシンプルであり、当社のスタッフがRationalのツールの使用実績があったため、これらのツールを選択しました。

IBM Data Movement Tool

DDLのエクスポート、データベース・オブジェクトの変換、およびデータ移行を自動化します。本ツールはよりシンプルなワークフローを提供することで、既存の移行ツールキットの代わりとなるものです。

Rational Software Architect

詳細のビジュアル・データ・モデリング、リバース・エンジニアリング、ツイーキング機能を提供します。本ツールを使用して、ビュー、ストアード・プロシージャー、ユーザーが設定した関数、およびトリガーを作成することもできます。

ハードウェア、ミドルウェア、およびアプリケーションの移行の検証

アプリケーション・ソフトウェアの移行を行うこと以外に、今回ハードウェアのアップグレードを行い、PHPの開発環境と運用環境を刷新しました。以前はカスタムでコンフィギュレーションを行ったハードウェアを使用しており、今回はグラフィカル・ユーザー・インターフェースを備えた、サポート可能かつ事前設定されたバイナリーPHPシステムに移行したいと考えました。Zend Serverによってキャッシング機能、モニタリング機能、およびその他のコンフィギュレーション機能が提供され、PHPと拡張機能のアップグレードも簡略化できました。堅牢なZend Frameworkを含みかつ実績のあるPHPライブラリーを活用することによって、よりオブジェクト指向のモデル・ビュー・コントローラー(MVC)アーキテクチャーに移行できました。

プロジェクト・プランの構築

資料を収集し、実施すべき作業内容を決定し、タイミングを設定し、作業の条件を確認した後、必要な時間とリソースを設定するためにプロジェクト・プランを作成しました。表4は、当社のプランの概要を示しています。

当社では、1名のアーキテクト、2名の開発者、および1名のプロジェクト・マネージャーのチームによるプロジェクトの実施期間としておよそ3か月が必要であると見積もり、150のテーブル、10 GBのデータ、および数百のPHPファイルの移行が必要と想定しました。

表4. MySQLのDB2への移行に関するプロジェクト・プラン概要
フェーズタスク所要時間数
準備一連のタスクとスケジュールの作成16
トレーニングの計画、必要な情報の収集、およびトレーニングの実施48
アプリケーションの評価とシステム計画の実施64
データベース構造の変換実装する新規のDB2の機能の評価16
移行対象のデータ構造の範囲を決定16
データベースのDDLをMySQLからDB2に移行40
DB2のデータベースとオブジェクトを作成24
データの移行移行対象のデータの範囲を検証8
データの移行40
パーミッションの移行8
アプリケーションのアップデートSQL文の変換32
新規の同時処理とカーソルのオプションの実装16
トランザクション、ユーザーが定義した関数、およびストアード・プロシージャーの実装16
データベースの関数名とパラメーターの変換40
同等の関数が提供できないコードの部分を特定し、ワークアラウンドを提供32
データベース管理機能の設定使用するツールセット(コマンドラインとGUIの両方を含む)の確認8
バックアップ・プロシージャーのマッピングと変換16
レプリケーション・プロシージャーのマッピングと変換16
自動化されたデータ保持ルールの実装16
テストとチューニング既存の機能に基づいてユーザー・アクセプタンス・テストの作成16
パフォーマンスのボトルネックを見極め、アプリケーションのロジック変更を実施24
設計アドバイザー、パフォーマンスモニター、およびインデックス・アドバイザーを活用のうえ、データベースのチューニングを実施32
実装PHPモジュールとホスティング環境が適切に設定済みであることを確認24
統合テストとユーザー・アクセプタンス・テストを完了40
継続的なサポート想定どおりの機能が実現したことを確認16
データベースの健全性に関するアラートへの対応16
ユーザーが報告したパフォーマンス上の問題への対応24

リソースの割り当て

必要な作業とプロジェクトのスケジュールを把握した後、利用可能なリソースをプロジェクトの4つのフェーズに割り当てました。表5は、繰り返し実施される各フェーズに対して、利用可能な資料、ツール、インフラを関連付けたものです。なお、以下の4つのフェーズは、本シリーズの資料の各部に対応しています。

表5. 移行のためのフェーズとリソース
フェーズリソース
準備
  • IBM Pressの書籍
  • SMPO
  • DB2管理者向けeKit
  • 参照資料一覧
  • IBM Smart Business Development and Test on the IBM Cloud
データの移行
  • データ移行ツール
  • Rational Software Architect
  • DB2管理者向けeKit
  • 参照資料一覧
  • IBM Smart Business Development and Test on the IBM Cloud
コードの移行
  • PHP拡張機能に関する参照資料
  • PHPに関するRedbook
  • ISVのスキル
  • 参照資料一覧
  • IBM Smart Business Development and Test on the IBM Cloud
実装
  • コスト削減戦略
  • developerWorksの関連記事
  • 参照資料一覧
  • IBM Smart Business Development and Test on the IBM Cloud

図1は、表5を図式化したものです。

図1. MySQLからDB2への移行プロジェクトにおけるフェーズとリソース
The phases and resource mapping for our MySQL to DB2 migration
The phases and resource mapping for our MySQL to DB2 migration

当社の移行結果について

2009年後半において、当社ではMySQLからDB2にアプリケーションの移行を実行する計画を最終的に確定しました。個別の状況によっては他のさまざまなオプションを採用することが可能であったものの、移行パスを明確に文書化できました。その他のオプションについては、MySQL to DB2 Conversion Guideをはじめとする資料で確認できます。本資料では、実際に当社が採用したプランと有益であったツールに関して説明します。

2010年に新アプリケーションの移行はスムーズに完了し、当社はビジネスのボリュームと質を大きく改善でき、高い顧客満足度を達成できました。

大多数のエンドユーザーにとって移行が滞りなく完了したため、本プロジェクトは大きな成功を収めることができました。ユーザーにとってアプリケーションは以前と同様の機能を提供しているものの、当社はデータの一貫性を改善し、ビジネス部門はデータから得られる知見により迅速に対応し、本アプリケーションをさまざまなIBMインフラ(将来にわたってさまざまなソフトウェアを活用する予定)にスムーズに統合できる可能性が高まりました。

結論

本資料の目的は、当社のプロジェクト・チームがPHPアプリケーションをMySQLからDB2に移行した経緯を説明することにあります。さらにこのタスクを実施するにあたり、利用できるリソースも確認し、2010年において当社がこのタスクをスムーズに実行したプロセスも確認しました。

本シリーズの第1部は、以下の情報を提供します。

  • IBMによるアプリケーションの移行事例に関連する目的、リスク、およびメリットについて確認する。
  • 各種資料を収集することで、DB2の機能について確認し、MySQLの移行に必要な情報について確認する。
  • 移行を実行するにあたって役立つツールについて確認する。
  • さまざまなツールを組み合わせて使用することで、プロジェクトの各フェーズのプロセスをスムーズに実行できることを確認する。

本シリーズの次のセクションでは、データベース構造の変換とデータの移行のプロセスについて確認できます。

謝辞

本資料の記載内容を確認し、コメントを提供してくれたLeons PetrazickisとAmbrish Bhargavaに感謝します。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, Open source
ArticleID=773043
ArticleTitle=PHPアプリケーションをMySQLからDB2に移行するプロセス: 第1部移行の準備
publish-date=11092011