(57)【要約】【課題】ソフトウェアによるサービスを停止することなく、データベースの構成の変更を伴うソフトウェアの更新を行うアクセス制御プログラム、アクセス制御方法、及び、アクセス制御装置を提供する。【解決手段】第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作可能なプログラムであって、前記複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、処理をコンピュータに実行させる。【選択図】図８
2016099709.tif 000002
【特許請求の範囲】
【請求項１】
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作可能なプログラムであって、
前記複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、
前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、
処理をコンピュータに実行させるアクセス制御プログラム。
【請求項２】
請求項１において、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データが前記第２データベースに追加済みか否かを示す前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御プログラム。
【請求項３】
請求項１または２において、
前記受け付けは、さらに、前記第１データベースが有し前記第２データベースが有していないデータを、前記第２データベースに順次、追加する前記データの移行処理を実行する、アクセス制御プログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記受け付けは、対象データの更新の前記アクセス要求を受け付け、
前記決定は、前記対象データの前記データ移行状況に関する情報が未移行を示す場合に、前記バージョンに関する情報に応じて前記第１データベースまたは前記第２データベースに決定し、前記対象データの前記データ移行状況に関する情報が移行済みを示す場合に、前記バージョンに関する情報に関わらず前記第２データベースに決定する、アクセス制御プログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データの、前記第１データベースから、当該第１データベースとデータの構成が異なる前記第２データベースへの前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御プログラム。
【請求項６】
請求項５において、
前記受け付けは、対象データの書き込みを示す前記アクセス要求を受け付け、
前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記対象データを、前記決定した前記アクセス要求を送信するデータベースの前記データの構成にさらに変換する、アクセス制御プログラム。
【請求項７】
請求項５において、
前記受け付けは、対象データの読み出しを示す前記アクセス要求を受け付け、
前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記アクセス要求に応じて前記第１、第２データベースから読み出したデータを、前記アクセス要求に含まれるバージョンに関する情報に対応するデータベースの前記データの構成にさらに変換する、アクセス制御プログラム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記第１ソフトウェアの更新は、前記複数の情報処理装置上でそれぞれ動作する同一の前記第１ソフトウェアを順次、更新する、アクセス制御プログラム。
【請求項９】
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に、前記情報処理装置が、前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、
前記情報処理装置が、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、
アクセス制御方法。
【請求項１０】
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアから受け付けるデータベースへのアクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と、前記第１データベースから前記第２データベースへのデータ移行状況に関する情報とを記憶する記憶部と、
前記アクセス要求を受け付け、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と、前記データ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する処理部と、
を有するアクセス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御プログラム、アクセス制御方法、及び、アクセス制御装置に関する。
【背景技術】
【０００２】
クラウドサービスでは、アプリケーションプログラム（以下、ソフトウェアとも言う）によるサービスをユーザに提供する際に、同一のアプリケーションプログラムの実行環境を複数用意することがある。複数のアプリケーションプログラムにしたがって処理を分散することにより、処理の負荷が軽減する。
【０００３】
また、複数のアプリケーションプログラムにパッチ（修正プログラム）を適用する場合、ローリングアップデート等の手法が用いられる。ローリングアップデートの手法を用いることにより、アプリケーションを停止することなく、パッチの適用が可能となる。
【０００４】
また、アプリケーションプログラムは、使用するデータをデータベース（DataBase：ＤＢ）に格納する。ＤＢが有するデータの構成には、変更が生じる場合がある。ＤＢのデータの構成の変更については、例えば、特許文献１〜３に記載される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２５０３２９７号公報
【特許文献２】特開２００５-２６６９７３号公報
【特許文献３】国際公開２００５／０８６００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリケーションプログラムのパッチは、アプリケーションプログラムがアクセスするＤＢのデータの構成の変更を伴う場合がある。この場合、ＤＢの不整合を回避するために、複数のアプリケーションプログラムを停止し、ＤＢが有するデータのデータ構成を変更する。
【０００７】
ただし、アプリケーションプログラムによるサービスを停止するためには、サービスを利用する顧客に事前に通知し、顧客の承諾を得る必要がある。このため、アプリケーションプログラムによるサービスを停止するためには、多くの手間がかかる。したがって、アプリケーションプログラムによるサービスを停止することなく、アプリケーションプログラムにデータベースの構成の変更を伴うパッチを適用することが求められる。
【０００８】
１つの側面は、本発明は、ソフトウェアによるサービスを停止することなく、データベースの構成の変更を伴うソフトウェアの更新を行うアクセス制御プログラム、アクセス制御方法、及び、アクセス制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の側面は、第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作可能なプログラムであって、前記複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、処理をコンピュータに実行させる。
【発明の効果】
【００１０】
第１の側面によれば、ソフトウェアによるサービスを停止することなく、データベースの構成の変更を伴うソフトウェアの更新を行う。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態例におけるサービス提供システムの構成の一例を示す図である。
【図２】サービスの機能拡張に伴う、データベース（図１）のデータ構成の変更例である。
【図３】図１に示した、ＡＰサーバのハードウェア構成を説明する図である。
【図４】図３に示した、ＤＢアクセスプログラムを説明する図である。
【図５】図３に示したＡＰサーバのソフトウェアブロック図である。
【図６】本実施の形態例における、２つのアプリケーションプログラムへのパッチの適用処理の概要を説明する図である。
【図７】本実施の形態例における、２つのアプリケーションプログラムへのパッチの適用処理の流れを説明するフローチャート図である。
【図８】図７で説明した処理の流れを、より具体的に説明する図である。
【図９】図６〜図８に示したパッチの適用処理で使用する第１の管理情報を説明する図である。
【図１０】図６〜図８に示したパッチの適用処理で使用する第２の管理情報を説明する図である。
【図１１】図５に示すＤＢアクセスプログラムの１つであって、データ更新を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図１２】図１１に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図１３】図５に示すＤＢアクセスプログラムの１つであって、データ新規追加を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図１４】図１３に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図１５】図５に示すＤＢアクセスプログラムの１つであって、データ検索を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図１６】図１５に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図１７】図５に示すＤＢアクセスプログラムの１つであって、データの条件検索（１件）を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図１８】図１７に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図１９】図５に示すＤＢアクセスプログラムの１つであって、データの条件検索（全件）を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図２０】図１９に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図２１】図５に示すＤＢアクセスプログラムの１つであって、データ削除を示すアクセス要求に対応する移行中用のＤＢアクセスプログラムを示す図である。
【図２２】図２１に示した移行中用のＤＢアクセスプログラムの処理を説明するフローチャート図である。
【図２３】図５に示す、移行中用のＤＢアクセスプログラムの他の処理を記述するＤＢアクセスプログラムの一例を示す図である。
【図２４】図５に示したＤＢ裏更新プログラムの一例を示す図である。
【図２５】図２４に示したＤＢ裏更新プログラムの処理を説明するフローチャート図である。
【発明を実施するための形態】
【００１２】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１３】
［サービス提供システム］
図１は、本実施の形態例におけるサービス提供システムの構成の一例を示す図である。図１に示すサービス提供システムは、クラウドサービスを提供するシステムである。
【００１４】
図１のサービス提供システムは、複数のクライアント装置５０ａ〜５０ｃ、ＷＥＢサーバ４０、ＳＬＢ（Server Load Balancing：ＳＬＢ）サーバ３０、複数のアプリケーションサーバ２０ａ、２０ｂ、ＤＢ（DataBase：ＤＢ）サーバ１０を有する。図１に示す、各サーバは、例えば、物理サーバである。クライアント装置５０ａ〜５０ｃは、例えば、パーソナルコンピュータや携帯端末等である。以下、アプリケーションサーバ２０ａ、２０ｂを、ＡＰサーバ２０ａ、２０ｂ（ＡＰサーバ２０ともいう）と称する。
【００１５】
クライアント装置５０ａ〜５０ｃのそれぞれは、インターネット等のネットワーク６０を介して、ＷＥＢサーバ４０と接続する。図１の例では、ＷＥＢサーバ４０が、３つのクライアント装置５０ａ〜５０ｃと接続する場合を例示しているが、この例に限定されるものではない。
【００１６】
また、ＷＥＢサーバ４０は、ＳＬＢサーバ３０を介して、複数のＡＰサーバ２０ａ、２０ｂと接続する。複数のＡＰサーバ２０ａ、２０ｂのぞれぞれは、ＤＢサーバ１０と接続する。ＤＢサーバ１０は、データベース（DataBase：ＤＢ）を記憶するストレージ装置（以下、ＤＢと称する）８０にアクセスする。
【００１７】
複数のＡＰサーバ２０ａ、２０ｂは、同一のアプリケーションプログラム（ソフトウェア、図示せず）を実行する。ＳＬＢサーバ３０は、ＡＰサーバ２０ａ、２０ｂの負荷状態に応じて、ＷＥＢサーバ４０からのリクエストを割り当てるＡＰサーバ２０ａ、２０ｂを選択する。多数のユーザにサービスを提供する大規模なサービス提供システムでは、負荷分散のために、図１に示すように、複数のＡＰサーバ２０ａ、２０ｂを備える。
【００１８】
また、図１の例では、ＳＬＢサーバ３０は、例えば、管理サーバである。管理サーバは、例えば、サービス提供システムを管理する運用担当者のクライアント装置（図示せず）と接続する。運用担当者は、クライアント装置から、管理サーバを介して、各サーバの制御、及び、管理を行う。
【００１９】
図１のサービス提供システムが提供するサービスは、例えば、ＩａａＳ（Infrastructure as a Service ：ＩａａＳ）である。ＩａａＳは、サービス事業者がデータセンタに設置した物理サーバ（図示せず）をユーザ（以下、テナントと称する）に貸し出すサービスである。テナントは、要望に応じて貸与した物理サーバに所望のシステムを構築し、所定のサービスをテナントのユーザに提供する。
【００２０】
本実施の形態例において、アプリケーションプログラムは、サービス事業者が、テナントにＩａａＳを提供するためのプログラムである。アプリケーションプログラムは、例えば、テナントによるポータルサイト上の操作にしたがって、物理サーバの構築機能や、物理サーバの監視機能等を提供する。したがって、本実施の形態例において、データベース８０は、テナントに貸与する物理サーバの設定情報のデータを有するテーブルや、監視のための設定情報のデータを有するテーブル等を有する。
【００２１】
具体的に、図１のサービス提供システムにおいて、クライアント装置５０ａ〜５０ｃは、操作の入力に応答して、サービスを要求するためのＨＴＴＰ（HyperText Transfer Protocol：ＨＴＴＰ）のリクエストメッセージを、ＷＥＢサーバ４０に送信する。ＷＥＢサーバ４０は、クライアント装置５０ａ〜５０ｃからのリクエストメッセージに応答して、ＡＰサーバ２０ａ、２０ｂへのリクエストを生成し、ＳＬＢサーバ３０に送信する。
【００２２】
ＳＬＢサーバ３０は、複数のＡＰサーバ２０ａ、２０ｂの負荷情報に基づいて選択した、ＡＰサーバ２０ａ、２０ｂにリクエストを送信する。ＡＰサーバ２０ａ、２０ｂがリクエストを受信すると、ＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラムは、リクエストに応じた処理を行う。例えば、アプリケーションプログラムは、データベース８０へのアクセスを指示するアクセス要求をＤＢサーバ１０に出力する。ＤＢサーバ１０は、アクセス要求に応じて、データベース８０への書き込みまたは読み出しを行い、アクセス結果をＡＰサーバ２０ａ、２０ｂに出力する。
【００２３】
ＡＰサーバ２０ａ、２０ｂは、ＤＢサーバ１０のアクセス結果に基づいて、ＷＥＢサーバ４０へのレスポンスの送信や、別の処理等を行う。ＷＥＢサーバ４０は、ＳＬＢサーバ３０を介して受信した、ＡＰサーバ２０ａ、２０ｂからのレスポンスを、リクエスト送信元のクライアント装置５０ａ〜５０ｃに送信する。クライアント装置５０ａ〜５０ｃは、レスポンスを受信すると、レスポンスの内容に応じて情報をブラウザに表示する。
【００２４】
［ソフトウェアの更新］
図１に示すサービス提供システムでは、他社競争力の維持や顧客要望の実現等のために、機能拡張を行う場合がある。または、セキュリティホール等の検出により、プログラムを修正する場合がある。図１に示すＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラムの機能拡張や修正を行う場合、運用担当者は、アプリケーションプログラムにパッチを適用する（ソフトウェアを更新する）。
【００２５】
パッチは、プログラムの一部分を更新して障害の修正や機能変更を行うためのデータである。本実施の形態例において、アプリケーションプログラムのパッチは、例えば、ＩａａＳの機能拡張や機能修正にかかる、一部のプログラムの追加、または変更を示す。アプリケーションプログラムのパッチは、停止状態のアプリケーションプログラムに対して適用される。運用担当者は、アプリケーションプログラムを停止し、コマンドやプログラムの実行により、停止したアプリケーションプログラムにパッチを適用する。
【００２６】
アプリケーションプログラムを停止することにより、テナントは、一時的に、ＩａａＳの機能を使用できなくなる。つまり、テナントは、一時的に、物理サーバの監視処理等を行えないことになる。これにより、テナントが、テナントのユーザに提供するサービスに支障が生じることがある。
【００２７】
また、運用担当者は、サービスを一時的に停止する場合、事前に、停止日程の承諾をテナントから受ける。ただし、図１に示すサービス提供システムを複数のテナントに提供している場合、すべてのテナントが承諾する停止日程を調整することは容易ではない。なお、テナントにとって、たとえ、事前にアプリケーションプログラムを一時停止する旨の通達があったとしても、一時的にサービスの提供を受けることができないことは不便である。
【００２８】
また、提供するサービスにアプリケーションプログラムの停止に伴うサービスの機能制限を行って、アプリケーションプログラムのパッチを適用すると、テナントは、一時的な機能制限の制約を受ける。このため、利便性が十分ではなかった。
【００２９】
したがって、サービスを停止することなくアプリケーションプログラムにパッチを適用する要望がある。サービスを停止することなくアプリケーションプログラムにパッチを適用する手法として、ローリングアップデート等の手法がある。ローリングアップデートでは、複数のＡＰサーバ２０ａ、２０ｂのうち少なくとも１つのＡＰサーバのアプリケーションプログラムを実行状態にし、停止状態のアプリケーションプログラムに順次、パッチを適用する。ローリングアップデートによると、複数のＡＰサーバ２０ａ、２０ｂのうち、１つのＡＰサーバ２０ａ、２０ｂが、アプリケーションプログラムを実行状態になる。したがって、サービスを停止することなく、パッチの適用を行うことが可能になる。
【００３０】
ただし、パッチの内容によっては、ローリングアップデートの手法を適用できない場合がある。データベース８０のデータ構成の変更を伴うパッチ（サービスの機能拡張等）の場合、ローリングアップデートの手法を適用することが困難である。データ構成とは、データベース８０が有するテーブルの項目の数や、サイズ、値の型等のデータ定義である。
【００３１】
例えば、図１の例によると、サービスの機能拡張は、テナントに提供するＩａａＳの機能拡張である。ＩａａＳの機能拡張は、例えば、貸与対象の物理サーバの設定に、ＧＰＵ（Graphics Processing Unit：ＧＰＵ）を搭載の有無を指定可能にする機能拡張である。前述したとおり、データベース８０は、貸与対象の物理サーバの設定情報のテーブル等を有する。したがって、データベース８０のテーブルは、パッチの適用により、既存の項目に加えて新たに、ＧＰＵの搭載の有無を指定する項目を有する。
【００３２】
なお、データベース８０のデータ構成の変更を伴わないパッチ（セキュリティホールに対するパッチや機能修正用のパッチ等）は、ローリングアップデートの手法を適用可能である。
【００３３】
［データベースの変更］
図２は、サービスの機能拡張に伴う、データベース８０（図１）のデータ構成の変更例である。図２では、機能拡張前のデータベース８０が有するテーブルのうち一部のテーブル８１と、機能拡張後のデータベース８０が有する同一のテーブル８２とを示す。
【００３４】
機能拡張前のデータベース８０のテーブル８１は、例えば、項目「ＩＤ（IDentification：ＩＤ）」、項目「ＣＰＵ（Central Processing Unit：ＣＰＵ）コアの数」、項目「メモリサイズ」を有する。また、テーブル８１は、例えば、さらに、項目「ＩＰ（Internet Protocol：ＩＰ）アドレス」、項目「ＯＳ（Operation System：ＯＳ）」等を有する。
【００３５】
項目「ＩＤ」は、物理サーバを識別する情報である。項目「ＣＰＵコアの数」は、物理サーバに搭載するＣＰＵコアの数を示し、項目「メモリサイズ」は、物理サーバに搭載するメモリのサイズを示す。また、項目「ＩＰアドレス」は、物理サーバに設定するＩＰアドレスを示し、項目「ＯＳ」は、物理サーバで動作させるＯＳの種別を示す。
【００３６】
図２の機能拡張前のデータベース８０のテーブル８１の例によると、「ＩＤ：Ｍ１０」の物理サーバの設定は、「ＣＰＵコアの数：４個」、「メモリサイズ：４ＧＢ（GigaByte：ＧＢ）」「ＩＰアドレス：ｘｘｘ.ｘｘｘ.ｘ.ｘ」、「ＯＳ：ＯＳ１」である。他の物理サーバも同様にして、各項目の情報を有する。
【００３７】
一方、機能拡張後のデータベース８０のテーブル８２の例は、機能拡張前のデータベース８０のテーブル８１の各項目に加え、項目「ＧＰＵの有無」を有する。このように、テーブル８１と、テーブル８２のデータ構成は異なる。図２の機能拡張後のデータベース８０のテーブル８２の例によると、「ＩＤ：Ｍ１０」の物理サーバの項目「ＧＰＵの有無」の設定は、「ＧＰＵの有無：無」である。
【００３８】
アプリケーションプログラムは、それぞれのテーブル８１、８２のデータ定義にしたがって、データベース８０のデータにアクセスする。即ち、パッチ未適用のアプリケーションプログラムはテーブル８１のデータ構成に、パッチ適用済みのアプリケーションプログラムはテーブル８２のデータ構成にしたがって、データにアクセスする。したがって、パッチ未適用のアプリケーションプログラムと、パッチ適用済みのアプリケーションプログラムが共通のデータを更新する場合、適切にデータを更新できない。即ち、データの不整合が生じる。
【００３９】
図１で説明したとおり、ローリングアップデートでは、複数のアプリケーションプログラムに順次、パッチを適用する。したがって、パッチの適用処理が完了するまでの間、共通のデータベース８０に対して、パッチ未適用のアプリケーションプログラムと、パッチ適用済みのアプリケーションプログラムからのアクセスが混在して発生する。このため、データベース８０の不整合が生じ得る。データベース８０の不整合が生じた場合、アプリケーションプログラムは、適切な処理を行うことができない。
【００４０】
なお、複数のアプリケーションプログラムのパッチ適用時に、一時的にサービスを停止し、データベース８０が有するテーブル８１のデータを、テーブル８２のデータ構成に変換する移行処理を行うことが考えられる。ただし、データベース８０は、システムの規模に応じて多量のデータを有する。したがって、データベース８０の移行処理は、データの量に応じて多大な工数を要する。データベース８０の移行処理が多大な工数を要することにより、移行処理にかかる長い期間、サービスを停止することになってしまう。
【００４１】
したがって、パッチがデータベース８０のデータ構成の変更を伴う場合、アプリケーションプログラムによるサービスを停止することなく、アプリケーションプログラムにパッチを適用することは容易ではなかった。
【００４２】
次に、本実施の形態例におけるＡＰサーバ２０ａ、２０ｂのハードウェア構成、及び、ソフトウェアブロック図を説明する。
【００４３】
［ＡＰサーバの構成］
図３は、図１に示した、ＡＰサーバ２０ａ、２０ｂのハードウェア構成を説明する図である。図３は、１つのＡＰサーバ２０ａのハードウェア構成を示すが、図１に示す別のＡＰサーバ２０ｂも同様のハードウェア構成を有する。
【００４４】
図３に示すＡＰサーバ２０ａは、例えば、ＣＰＵ（Central Processing Unit：ＣＰＵ）１０１、ＲＡＭ（Random Access Memory：ＲＡＭ）２０１や不揮発性メモリ２０２等を備えるメモリ１０２、通信インタフェース部１０３を有する。各部は、バス１０４を介して相互に接続する。
【００４５】
ＣＰＵ１０１は、バス１０４を介してメモリ１０２等と接続すると共に、ＡＰサーバ２０ａ全体の制御を行う。通信インタフェース部１０３は、イントラネットを介して、図１に示した、ＳＬＢサーバ３０やＤＢサーバ１０等の通信機器との間でデータの送受信を制御する。メモリ１０２のＲＡＭ２０１は、ＣＰＵ１０１が処理を行うデータ等を記憶する。
【００４６】
メモリ１０２の不揮発性メモリ２０２は、ＣＰＵ１０１が実行するＯＳのプログラムを格納する領域（図示せず）や、ＯＳ上で動作するアプリケーションプログラムを格納する格納領域２１０を備える。また、不揮発性メモリ２０２は、ＤＢアクセスプログラムを格納する格納領域２１１、ＤＢ裏更新プログラムを格納する格納領域２１２を備える。不揮発性メモリ２０２は、ＨＤＤ（Hard disk drive：ＨＤＤ）、不揮発性半導体メモリ等で構成される。
【００４７】
アプリケーションプログラム格納領域２１０のアプリケーションプログラム（以下、アプリケーションプログラム２１０と称する）は、ＣＰＵ１０１の実行によって、図１で説明した示したＩａａＳを提供する処理を実現する。アプリケーションプログラム２１０は、本実施の形態例において、パッチを適用する対象のプログラムである。また、ＤＢ裏更新プログラム格納領域２１２のＤＢ裏更新プログラム（以下、ＤＢ裏更新プログラム２１２と称する）は、ＣＰＵ１０１の実行によって、バックグランドによる、データベース８０の移行処理を実現する。ＤＢ裏更新プログラム２１２の詳細は、図５で後述する。
【００４８】
また、ＤＢアクセスプログラム格納領域２１１のＤＢアクセスプログラム（以下、ＤＢアクセスプログラム２１１と称する）は、ＣＰＵ１０１の実行によって、アプリケーションプログラム２１０によるデータベース８０へのアクセス要求の制御処理を実現する。アクセスの制御処理は、アプリケーションプログラム２１０が発行するアクセス要求の内容に応じて、ＤＢサーバ１０へのアクセスを制御する処理である。アクセス要求は、例えば、データベース８０へのデータの新規追加処理、データベース８０が記憶するデータの更新処理、検索処理、及び、削除処理などである。
【００４９】
ＤＢアクセスプログラム２１１は、アクセス要求に基づいて、ＤＢサーバ１０（図１）で動作するＤＢソフトウェア（図示せず）のＡＰＩ（Application Programming Interface：ＡＰＩ）を呼び出す。また、ＤＢアクセスプログラム２１１は、ＡＰＩの実行結果を、アクセス要求の結果として、アプリケーションプログラム２１０に出力する。
【００５０】
図４は、図３に示した、ＤＢアクセスプログラム２１１を説明する図である。図４において、図３で示したものと同一のものは、同一の記号で示す。
【００５１】
図４は、アプリケーションプログラム２１０と、ＤＢアクセスプログラム２１１との対応関係を示す。本実施の形態例では、アプリケーションプログラム２１０のパッチは、ＤＢアクセスプログラム２１１を、さらに有する。即ち、ＤＢアクセスプログラム２１１は、アプリケーションプログラム２１０のパッチとセットである。
【００５２】
ＤＢアクセスプログラム２１１は、アプリケーションプログラム２１０のＤＢアクセスモジュール２１１を切り出したプログラムである。即ち、ＤＢアクセスモジュール２１１は、アクセス要求に基づいて、ＤＢサーバ１０で動作するＤＢソフトウェア（図示せず）のＡＰＩを呼び出し、ＡＰＩの実行結果を出力するモジュールである。
【００５３】
ＤＢアクセスプログラム２１１は、アプリケーションプログラム２１０のパッチの適用状態に応じて、アクセス要求の制御処理を行う。ＤＢアクセスプログラム２１１の詳細は、図５で後述する。
【００５４】
図５は、図３に示したＡＰサーバ２０ａのソフトウェアブロック図である。図５において、図１、図３で示したものと同一のものは、同一の記号で示す。図５は、１つのＡＰサーバ２０ａのソフトウェアブロックを示すが、図１に示す別のＡＰサーバ２０ｂも同様のソフトウェアブロックを有する。
【００５５】
図５では、ＡＰサーバ２０ａ（図３）のソフトウェアブロック図と、ＤＢサーバ（図１）１０のソフトウェアブロック図とを示す。図５に示すように、ＡＰサーバ２０ａは、アプリケーションプログラム２１０、移行中用のＤＢアクセスプログラム２１１−１、移行完了後用のＤＢアクセスプログラム２１１−２、及び、ＤＢ裏更新プログラム２１２を有する。即ち、図３、図４に示したＤＢアクセスプログラム２１１は、移行中用のＤＢアクセスプログラム２１１−１と、移行完了後用のＤＢアクセスプログラム２１１−２とを有する。
【００５６】
図５に示すアプリケーションプログラム２１０は、パッチの適用前（未適用）のアプリケーションプログラム２１０と、パッチを適用後（適用済み）のアプリケーションプログラム２１０のいずれかを示す。本実施の形態例では、パッチ未適用のアプリケーションプログラム２１０を、旧バージョンのアプリケーションプログラム２１０と称する。また、パッチの適用後のアプリケーションプログラム２１０を、新バージョンのアプリケーションプログラム２１０と称する。
【００５７】
また、ＡＰサーバ２０ａは、アプリケーションプログラム２１０のパッチの適用状況に応じて、移行中用、移行完了後用のＤＢアクセスプログラム２１１−１、２１１−２、ＤＢ裏更新プログラム２１２のうち一部または全部のプログラムを有する。運用担当者は、例えば、アプリケーションプログラム２１０のパッチの適用状況に応じて、移行中用、移行完了後用のＤＢアクセスプログラム２１１−１、２１１−２、及び、ＤＢ裏更新プログラム２１２を、不揮発性メモリ２０２（図３）に記憶する。
【００５８】
また、図５に示すＤＢサーバ１０は、データベース８０へのアクセスを管理するＤＢソフトウェア１１０と、データベース８０を有する。ＤＢソフトウェア１１０は、ＡＰＩに応じた、データベース８０に対するアクセス処理を行うソフトウェアである。
【００５９】
また、本実施の形態例において、データベース８０は、アプリケーションプログラム２１０のパッチの適用状況に応じて、旧データベース８０−１と新データベース８０−２とを有する。旧データベース８０−１は、パッチ未適用のアプリケーションプログラム２１０に対応するデータベースである。また、新データベース８０−２は、パッチ適用後のアプリケーションプログラム２１０に対応するデータベースである。つまり、例えば、旧データベース８０−１は、図２で説明したテーブル８１を有し、新データベース８０−２はテーブル８２を有する。
【００６０】
移行中用のＤＢアクセスプログラム２１１−１は、旧データベース８０−１から新データベース８０−２への移行処理が完了するまでの間の、アクセス制御処理を行うプログラムである。移行処理が完了するまでの間は、旧バージョン、新バージョンのアプリケーションプログラム２１０によるアクセス要求が混在するとともに、アクセス対象のデータが旧データベース８０−１と新データベース８０−２に混在する。移行中用のＤＢアクセスプログラム２１１−１は、アクセス要求に応答して、アクセス要求を送信するデータベース８０−１、８０−２を決定（選択）し、決定したデータベース８０−１、８０−２を対象とするＤＢソフトウェア１１０のＡＰＩを呼び出す。移行中用のＤＢアクセスプログラム２１１−１の処理の詳細は、図６、図１１〜図２３にしたがって後述する。
【００６１】
移行完了後用のＤＢアクセスプログラム２１１−２は、旧データベース８０−１から新データベース８０−２への移行処理が完了した後の、アクセス制御処理を行うプログラムである。移行完了後は、新バージョンのアプリケーションプログラム２１０のみによるアクセス要求が発生する。即ち、移行完了後用のＤＢアクセスプログラム２１１−２は、新バージョンのアプリケーションプログラム２１０によるアクセス要求に応答して、新データベース８０−２へのアクセス要求を行う。
【００６２】
ＤＢ裏更新プログラム２１２は、旧データベース８０−１から新データベース８０−２へ各データの移行処理（以下、移行処理と称する）を、バックグラウンドで行うプログラムである。ＤＢ裏更新プログラム２１２は、旧データベース８０−１が有し、新データベース８０−２が有していないデータを、新データベース８０−２のデータ構成に基づいて変換して、新データベース８０−２に順次追加する。ＤＢ裏更新プログラム２１２の処理の詳細は、図２４、図２５にしたがって後述する。
【００６３】
次に、図６〜図８にしたがって、本実施の形態例における、２つのアプリケーションプログラム２１０へのパッチの適用処理の流れを説明する。
【００６４】
［パッチの適用処理の流れ］
図６は、本実施の形態例における、２つのアプリケーションプログラム２１０へのパッチの適用処理の概要を説明する図である。図６において、図１、図５で示したものと同一のものは、同一の記号で示す。２つのアプリケーションプログラム２１０は、図１に示したＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラムである。また、図１で説明したとおり、ＡＰサーバ２０ａ、２０ｂは、ＳＬＢサーバ３０と接続し、ＤＢサーバ１０を介して共通のデータベース８０にアクセスする。
【００６５】
本実施の形態例におけるパッチの適用処理では、図１で説明したローリングアップデートと同様にして、図６に示す２つのアプリケーションプログラム２１０に順次、パッチを適用する。即ち、パッチの適用処理の過程において、運用担当者は、一方のＡＰサーバ２０ａを稼働させ、他方のＡＰサーバ２０ｂを停止させる。そして、運用担当者は、停止側のＡＰサーバ２０ｂのアプリケーションプログラム２１０にパッチを適用する。
【００６６】
したがって、パッチの適用処理の過程において、図６に示すように、一方のＡＰサーバ２０ａは稼働側のＡＰサーバ２０ａ、他方のＡＰサーバ２０ｂは停止側のＡＰサーバとなる。この場合、ＳＬＢサーバ３０は、稼働側のＡＰサーバ２０ａにリクエストを送信する（図６の実線の矢印）。即ち、ＳＬＢサーバ３０は、停止側のＡＰサーバ２０ｂにリクエストを送信しない（図６の点線の矢印）。また、図５で説明したように、各ＡＰサーバ２０ａ、２０ｂは、パッチの適用状況に応じて、移行中用、移行完了後用のＤＢアクセスプログラム２１１−１、２１１−２、及び、ＤＢ裏更新プログラム２１２を有する。
【００６７】
また、図６に示す、アプリケーションプログラム２１０は、パッチの適用状況に応じて、パッチ未適用のアプリケーションプログラム２１０、または、パッチ適用済のアプリケーションプログラム２１０（図６ではパッチと示す）を示す。したがって、パッチの適用処理において、旧バージョンのアプリケーションプログラム２１０によるアクセス要求と、新バージョンのアプリケーションプログラム２１０によるアクセス要求とが混在して生じる。
【００６８】
また、図６に図示していないが、本実施の形態例におけるパッチの適用処理では、ＤＢ裏更新プログラム２１２が、バックグラウンドで順次、移行処理を行う。したがって、パッチの適用処理において、アクセス要求が対象とするデータが、旧、新データベース８０−１、８０−２に混在する。
【００６９】
したがって、本実施の形態例におけるパッチの適用処理では、移行処理中に、図５に示した移行中用のＤＢアクセスプログラム２１１−１を、ＡＰサーバ２０ａ、２０ｂで動作させる。移行中用のＤＢアクセスプログラム２１１−１は、アクセス要求に含まれるアプリケーションプログラム２１０のバージョンに関する情報と、データ移行状況に関する情報とに基づいて、アクセス要求を送信するデータベースをデータベース８０−１、８０−２から決定する。そして、移行中用のＤＢアクセスプログラム２１１−１は、決定したデータベース８０−１、８０−２を対象とするＤＢソフトウェア１１０のＡＰＩを呼び出す。
【００７０】
アプリケーションプログラム２１０のバージョンに関する情報は、アプリケーションプログラム２１０が更新済みか否か、即ち、パッチ適用済みか否かを示す情報である。また、データ移行状況に関する情報は、旧データベース８０−１から新データベース８０−２への移行状態を示し、対象データが新データベース８０−２に追加済みであるか否かを示す情報である。
【００７１】
これにより、移行中用のＤＢアクセスプログラム２１１−１は、適切なデータベース８０−１、８０−２にアクセス要求を送信することができる。即ち、移行中用のＤＢアクセスプログラム２１１−１は、複数のバージョンのアプリケーションプログラム２１０によるアクセス要求が混在し、アクセス要求の対象データが複数のデータベース８０−１、８０−２に混在する場合におけるアクセス要求の互換を実現する。
【００７２】
これにより、パッチの適用処理の経過中であっても、データベース８０−１、８０−２のデータの整合性を維持しながら、アクセス要求の実行が可能になる。したがって、パッチの適用処理の経過中であっても、アプリケーションプログラム２１０によるサービスの提供が可能になる。また、本実施の形態例では、ＤＢ裏更新プログラム２１２が、バックグラウンドで移行処理を行うことにより、アプリケーションプログラム２１０へのパッチの適用処理の経過中に、データベース８０の移行処理をあわせて行うことが可能になる。
【００７３】
図７は、本実施の形態例における、２つのアプリケーションプログラム２１０へのパッチの適用処理の流れを説明するフローチャート図である。図７のフローチャート図において、構成ＡのＡＰサーバは、図１、図６に示したＡＰサーバ２０ａである。また、構成ＢのＡＰサーバは、図１、図６に示したＡＰサーバ２０ｂである。
【００７４】
Ｓ１：本実施の形態例における初期状態では、構成ＡのＡＰサーバ２０ａのみが稼働中であるものとする。構成ＡのＡＰサーバ２０ａでは、旧バージョンのアプリケーションプログラム２１０が動作する。運用担当者は、パッチ適用後のアプリケーションプログラム２１０のデータ定義（データ構成）に基づいて、空の新データベース８０−２を生成する。空のデータベースは、データを有しておらず、データ定義のみが適用されたデータベースである。なお、例えば、運用担当者が、移行用プログラムを用意し、移行用プログラムにしたがって空の新データベース８０−２を生成してもよい。
【００７５】
Ｓ２：次に、運用担当者は、稼働側のＡＰサーバを、構成ＡのＡＰサーバ２０ａから、構成ＢのＡＰサーバ２０ｂに切り替える。切り替え中は、一時的に、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂがともに、実行状態になる。切り替え完了後、構成ＢのＡＰサーバ２０ｂでは、旧バージョンのアプリケーションプログラム２１０と、移行中用のＤＢアクセスプログラム２１１−１が動作する。
【００７６】
また、運用担当者は、停止中の構成ＡのＡＰサーバ２０ａの旧バージョンのアプリケーションプログラム２１０にパッチを適用する。これにより、構成ＡのＡＰサーバ２０ａのアプリケーションプログラム２１０が、新バージョンに更新される。また、運用担当者は、構成ＡのＡＰサーバ２０ａに、移行中用のＤＢアクセスプログラム２１１−１、及び、ＤＢ裏更新プログラム２１２を導入する。
【００７７】
Ｓ３：次に、運用担当者は、稼働側のＡＰサーバを、構成ＢのＡＰサーバ２０ｂから、構成ＡのＡＰサーバ２０ａに切り替える。切り替え中は、一時的に、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂがともに、実行状態になる。切り替え完了後、構成ＡのＡＰサーバ２０ａでは、新バージョンのアプリケーションプログラム２１０、移行中用のＤＢアクセスプログラム２１１−１、及び、ＤＢ裏更新プログラム２１２が動作する。
【００７８】
また、運用担当者は、停止中の構成ＢのＡＰサーバ２０ｂのアプリケーションプログラム２１０にパッチを適用する。これにより、構成ＢのＡＰサーバ２０ｂのアプリケーションプログラム２１０は新バージョンに更新される。また、運用担当者は、構成ＢのＡＰサーバ２０ｂの移行中用のＤＢアクセスプログラム２１１−１を、移行完了後用のＤＢアクセスプログラム２１１−２に更新する。
【００７９】
Ｓ４：ＤＢ裏更新プログラム２１２によるデータの移行処理が完了すると、運用担当者は、稼働側のＡＰサーバを、構成ＡのＡＰサーバ２０ａから、構成ＢのＡＰサーバ２０ｂに切り替える。切り替え中は、一時的に、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂがともに、実行状態になる。切り替え完了後、構成ＢのＡＰサーバ２０ｂでは、新バージョンのアプリケーションプログラム２１０と、移行完了後用のＤＢアクセスプログラム２１１−２が動作する。また、運用担当者は、停止中の構成ＡのＡＰサーバ２０ａの移行中用のＤＢアクセスプログラム２１１−１を、移行完了後用のＤＢアクセスプログラム２１１−２に更新する。
【００８０】
これにより、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂのアプリケーションプログラム２１０の新バージョンへの更新が完了するとともに、データの移行処理が完了する。また、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂの移行中用のＤＢアクセスプログラム２１１−１が、移行完了後用のＤＢアクセスプログラム２１１−２に更新される。
【００８１】
次に、図８にしたがって、図７のフローチャート図で説明した処理をより具体的に説明する。
【００８２】
図８は、図７で説明した処理の流れを、より具体的に説明する図である。図８の工程Ｓ１〜Ｓ４は、図７のフローチャート図の工程Ｓ１〜Ｓ４に対応する。図８において、図５で示したものと同一のものは、同一の記号で示す。
【００８３】
Ｓ１：図７で説明したとおり、本実施の形態例におけるパッチの適用処理の初期状態では、構成ＡのＡＰサーバ２０ａが稼働中（図中の稼働、以下省略）であって、構成ＢのＡＰサーバ２０ｂは停止中（図中の停止、以下省略）である。また、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂのアプリケーションプログラム２１０は、旧バージョンのアプリケーションプログラム２１０（図中の旧）である。工程Ｓ１では、運用担当者は、管理情報にしたがって、構成ＢのＡＰサーバ２０ｂに、移行中用のＤＢアクセスプログラム２１１−１を導入するとともに（図中のＢパッチ）、空の新データベース８０−２を生成する（図中の空）。管理情報については、図９、図１０で後述する。
【００８４】
Ｓ２：工程Ｓ２では、構成ＢのＡＰサーバ２０ｂが起動し、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂはともに、稼働状態となる（図中のＡ→Ｂ）。即ち、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂは、切り替え状態に遷移する（図中の切替、以下省略）。図７で前述したとおり、このとき、構成ＢのＡＰサーバ２０ｂでは、旧バージョンのアプリケーションプログラム２１０に加えて、移行中用のＤＢアクセスプログラム２１１−１（図中の移行）が動作する。
【００８５】
また、工程Ｓ２において、切り替え状態を経て、運用担当者は、構成ＡのＡＰサーバ２０ａを停止する。そして、運用担当者は、管理情報にしたがって、構成ＡのＡＰサーバ２０ａのアプリケーションプログラム２１０にパッチを適用する（図中のＡパッチ）。また、運用担当者は、構成ＡのＡＰサーバ２０ａに、移行中用のＤＢアクセスプログラム２１１−１、及び、ＤＢ裏更新プログラム２１２を導入する。
【００８６】
工程Ｓ２では、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂでは、ともに、旧バージョンのアプリケーションプログラム２１０（図中の旧）が動作する。ただし、移行中用のＤＢアクセスプログラム２１１−１は、旧バージョンのアプリケーションプログラム２１０のアクセス要求に応答して、新データベース８０−２にアクセス要求を送信する場合がある。例えば、データの新規追加を示すアクセス要求を受け付けた場合である。これにより、新データベース８０−２に、新たにデータが追加される。このため、新データベース８０−２は共存状態に遷移する（図中の共存）。データの新規追加を示すアクセス要求を受け付けた場合のＤＢアクセスプログラム２１１−１の詳細は、図１３、図１４に後述する。
【００８７】
Ｓ３：工程Ｓ３では、構成ＡのＡＰサーバ２０ａが起動し、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂはともに、稼働状態となる（図中のＢ→Ａ）。即ち、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂは、切り替え状態に遷移する。
【００８８】
切り替え状態の間、構成ＡのＡＰサーバ２０ａでは、新バージョンのアプリケーションプログラム２１０（図中の新）に加えて、移行中用のＤＢアクセスプログラム２１１−１（図中の移行）、及び、ＤＢ裏更新プログラム２１２（図中の移行）が動作する。また、構成ＢのＡＰサーバ２０ｂでは、工程Ｓ２と同様にして、旧バージョンのアプリケーションプログラム２１０と、移行中用のＤＢアクセスプログラム２１１−１とが動作する。
【００８９】
また、工程Ｓ３において、切り替え状態を経て、運用担当者は、構成ＢのＡＰサーバ２０ｂを停止する。そして、運用担当者は、管理情報にしたがって、構成ＢのＡＰサーバ２０ｂのアプリケーションプログラム２１０にパッチを適用する（図中のＢパッチ）。また、運用担当者は、構成Ｂの移行中用のＤＢアクセスプログラム２１１−１を、移行完了後用のＤＢアクセスプログラム２１１−２に更新する。また、ＤＢ裏更新プログラム２１２は、バックグラウンドで、旧データベース８０−１に存在するデータを、順次、新データベース８０−２に追加する（図中のＤＢ移行）。これにより、旧データベース８０−１が共存状態に遷移する（図中の共存）。
【００９０】
工程Ｓ３のプロセスは、ＤＢ裏更新プログラム２１２による移行処理が完了するまで継続する。移行処理の完了時とは、旧データベース８０−１に存在するが、新データベース８０−２には存在しないデータの件数が０件になる状態を示す。運用担当者は、例えば、図１０に後述する管理情報の進捗管理表にしたがって、移行処理の進捗度合いを判定する。大規模なサービス提供システムの場合、工程Ｓ３のプロセスは、月単位の期間を要することもある。ＤＢ裏更新プログラム２１２の処理の詳細については、図２４、図２５にしたがって後述する。
【００９１】
ＤＢアクセスプログラム２１１−１は、アクセス要求によっては、アクセス対象のデータを、新データベース８０−２に移行する場合がある。例えば、ＤＢアクセスプログラム２１１−１は、新バージョンのアプリケーションプログラム２１０による、データ更新を示すアクセス要求に応答して、旧データベース８０−１の更新対象のデータを、新データベース８０−２に移行する。データの更新を示すアクセス要求を受け付けた場合のＤＢアクセスプログラム２１１−１の詳細は、図１１、図１２に後述する。
【００９２】
一方、更新対象となっていないデータは、新データベース８０−２に移行されない。したがって、ＤＢ裏更新プログラム２１２が移行処理を行うことによって、旧データベース８０−１が有するすべてのデータが順次、パッチの適用処理と並行して、新データベース８０−２に移行可能になる。
【００９３】
構成ＡのＡＰサーバ２０ａにおいて、工程Ｓ１、Ｓ２では旧バージョンのアプリケーションプログラム２１０が動作するのに対し、工程Ｓ３では、新バージョンに更新されたアプリケーションプログラム２１０が動作する。また、工程Ｓ３の切り替え状態の間、構成ＡのＡＰサーバ２０ａで新バージョンのアプリケーションプログラム２１０が動作し、構成ＢのＡＰサーバ２０ｂでは、旧バージョンのアプリケーションプログラム２１０が動作する。
【００９４】
つまり、図６で説明したとおり、工程Ｓ１〜工程Ｓ３を処理する期間には、複数のバージョンのアプリケーションプログラム２１０によるアクセス要求が混在する。また、同期間において、アクセス要求を送信するデータは、旧データベース８０−１と新データベース８０−２とに混在する。
【００９５】
したがって、図６で説明したとおり、本実施の形態例では、ＡＰサーバ２０ａ、２０ｂで、移行中用のＤＢアクセスプログラム２１１−１を動作させる。そして、移行中用のＤＢアクセスプログラム２１１−１は、アクセス要求が含むアプリケーションプログラム２１０のパッチ適用状況と、対象データの移行状態とに基づいて、アクセス要求を送信するデータベース８０を決定する。即ち、移行中用のＤＢアクセスプログラム２１１−１は、アクセス要求を送信するデータベース８０を適切に決定する。
【００９６】
これにより、データの不整合を生じさせることなく、各ＡＰサーバ２０ａ、２０ｂのアプリケーションプログラム２１０によるデータベース８０−１、８０−２へのアクセスが可能になる。即ち、アクセス対象のデータがデータ構成の異なるデータベース８０−１、８０−２に混在し、アクセス要求が複数のバージョンのアプリケーションプログラム２１０から発行される場合でも、ＤＢサーバ１０に対するアクセス要求を、適切に実行可能になる。
【００９７】
また、運用担当者は、工程Ｓ１、Ｓ２において、ＡＰサーバ２０ａ、２０ｂに、予め、移行中用のＤＢアクセスプログラム２１１−１を導入しておく。これにより、工程Ｓ３で、移行中用のＤＢアクセスプログラム２１１−１によるアクセス要求の制御処理が可能になる。
【００９８】
Ｓ４：工程Ｓ４では、構成ＢのＡＰサーバ２０ｂが起動し、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂはともに、稼働状態となる（図中のＡ→Ｂ）。即ち、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂは、切り替え状態に遷移する。このとき、構成ＢのＡＰサーバ２０ｂでは、新バージョンのアプリケーションプログラム２１０に加えて、移行完了後用のＤＢアクセスプログラム２１１−２が動作する。
【００９９】
工程Ｓ４の切り替え状態の間は、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂでともに、新バージョンのアプリケーションプログラム２１０が動作する。即ち、新バージョンのアプリケーションプログラム２１０のみが動作する。なお、ＤＢ裏更新プログラム２１２によるＤＢの移行処理は、工程Ｓ３で完了している。したがって、工程Ｓ４の切り替え状態の間、旧データベース８０−１及びＤＢ裏更新プログラム２１２は、削除待ち状態に遷移する（図中の削除待ち）。
【０１００】
また、工程Ｓ４において、切り替え状態を経て、運用担当者は、構成ＡのＡＰサーバ２０ａを停止する。そして、運用担当者は、管理情報にしたがって、構成ＡのＡＰサーバ２０ａの移行中用のＤＢアクセスプログラム２１１−１を、移行完了後用のＤＢアクセスプログラム２１１−２に更新する（図中のＡパッチ）。また、運用担当者は、構成ＡのＡＰサーバ２０ａのＤＢ裏更新プログラム２１２を削除するとともに（図中の削除済）、旧データベース８０−１を削除する（図中の無し）。
【０１０１】
これにより、工程Ｓ４の経過後、構成Ａ、構成ＢのＡＰサーバ２０ａ、２０ｂのアプリケーションプログラム２１０へのパッチの適用が完了するとともに、旧データベース８０−１から、新データベース８０−２への移行処理が完了する。
【０１０２】
このように、本実施の形態例では、アクセス対象のデータがデータベース８０−１、８０−２に混在し、アクセス要求が複数のバージョンのアプリケーションプログラム２１０から発行される場合でも、ＤＢサーバ１０への適切なアクセス要求を実行可能になる。したがって、複数のアプリケーションプログラム２１０に順次、データベース８０のデータ構成の変更を伴うパッチを適用する場合でも、少なくとも１つのアプリケーションプログラム２１０を実行可能になる。これにより、アプリケーションプログラム２１０によるサービスを停止することなく、データベース８０のデータ構成の変更を伴うパッチの、アプリケーションプログラム２１０への適用が可能になる。
【０１０３】
また、本実施の形態例では、アプリケーションプログラム２１０のパッチの適用処理において、ＤＢサーバ１０で動作するＤＢソフトウェア１１０のプログラムを変更する必要がない。本実施の形態例では、ＡＰサーバ２０ａ、２０ｂで動作するプログラムのみを更新する。したがって、アプリケーションプログラム２１０の更新にあたり、他のサーバ（例えば、ＤＢサーバ１０）の処理を変更する必要がないため、アプリケーションプログラム２１０の更新による影響範囲を抑えることが可能になる。
【０１０４】
また、本実施の形態例では、複数のバージョンのアプリケーションプログラム２１０が動作するＡＰサーバ２０ａ、２０ｂで、移行中用のＤＢアクセスプログラム２１１−１に加えて、ＤＢ裏更新プログラム２１２を動作させる。ＤＢ裏更新プログラム２１２は、バックグランドで、旧データベース８０−１の各データを、新データベース８０−２のデータ構成に変更して、新データベース８０−２に追加する移行処理を行う。したがって、本実施の形態例では、アプリケーションプログラム２１０によるサービスを停止することなく、アプリケーションプログラム２１０にパッチを適用可能になるとともに、データベース８０の移行処理を行うことが可能になる。これにより、複数のバージョン間のデータの構成に差異に基づく変換処理が永続的に生じることが回避されるため、処理の負荷が抑えられる。
【０１０５】
［管理情報］
次に、図８に示した、パッチの適用処理で使用する管理情報を、図９、図１０にしたがって説明する。運用担当者は、例えば、イントラネットを介して図１で説明した管理サーバを介して、パッチの適用処理で使用するファイルを、ＡＰサーバ２０ａ、２０ｂの不揮発性メモリ２０２（図３）等に記憶する。運用担当者は、図５で説明した、アプリケーションプログラム２１０のパッチ、ＤＢアクセスプログラム２１１、及び、ＤＢ裏更新プログラム２１２とともに、図９、図１０に示す管理情報を記憶する。運用担当者は、管理情報に基づいて、図６〜図８に示したパッチの適用処理を行う。
【０１０６】
図９は、図６〜図８に示したパッチの適用処理で使用する第１の管理情報３１０を説明する図である。図９に示す管理情報３１０は、アプリケーションプログラム２１０の修正ファイルの一覧、移行中用、及び、移行完了後用のＤＢアクセスプログラム２１１−１、２１１−２のファイル一覧、ＤＢ裏更新プログラム２１２のファイル一覧を有する。
【０１０７】
アプリケーションプログラム２１０の修正ファイルの一覧は、更新前のファイル名と、更新後のファイル名を有する。更新前のファイル名は、パッチ適用前のアプリケーションプログラム２１０のファイル名である。また、更新後のファイル名は、パッチ適用後のアプリケーションプログラム２１０のファイル名である。
【０１０８】
また、移行中用のＤＢアクセスプログラム２１１−１のファイル一覧は、更新前のファイル名と、更新後のファイル名を有する。更新前のファイル名は、例えば、図４で説明したＤＢアクセスモジュール２１１のファイル名である。また、更新後のファイル名は、図５に示した、移行中用のＤＢアクセスプログラム２１１−１のファイル名である。移行中用のＤＢアクセスプログラム２１１−１の詳細は、図１１〜図２３で後述する。
【０１０９】
また、移行完了後用のＤＢアクセスプログラム２１１−２の一覧は、更新前のファイル名と、更新後のファイル名を有する。更新前のファイル名は、移行中用のＤＢアクセスプログラム２１１−１のファイル名である。即ち、更新前のファイル名は、移行中用のＤＢアクセスプログラム２１１−１のファイル一覧の更新後のファイル名と同一である。更新後のファイル名は、図５に示した、移行完了後用のＤＢアクセスプログラム２１１−２のファイル名である。
【０１１０】
さらに、ＤＢ裏更新プログラム２１２のファイル一覧は、図５に示した、ＤＢ裏更新プログラム２１２のファイル名を有する。ＤＢ裏更新プログラム２１２の詳細は、図２４、図２５で後述する。
【０１１１】
図１０は、図６〜図８に示したパッチの適用処理で使用する第２の管理情報３２０を説明する図である。
【０１１２】
図１０に示す管理情報３２０は、アプリケーションプログラム２１０のパッチの適用によりデータ構成が変更となるテーブル名（更新前、更新後）を有する。本実施の形態例では、パッチの適用によりデータ構成が変更となるテーブル名は、図２に例示したテーブルの名前である。運用担当者は、例えば、管理情報３２０内のデータ構成が変更となる更新後テーブル名に基づいて、空の新データベース８０−２を生成する（図７、図８の工程Ｓ１）。
【０１１３】
また、図１０に示す管理情報３２０は、ＤＢ裏更新プログラム名、及び、ＤＢ裏更新進捗管理表を有する。ＤＢ裏更新プログラム名は、図９に示した管理情報３１０のＤＢ裏更新プログラム２１２のファイル一覧と同一の情報である。ＤＢ裏更新進捗管理表は、ＤＢ裏更新プログラム２１２の移行処理の進捗状況を示す管理表である。運用担当者は、例えば、ＤＢ裏更新処理の進捗管理表を参照し、移行処理が完了したか否かを判定する。
【０１１４】
次に、図１１〜図２３にしたがって、図５で説明した移行中用のＤＢアクセスプログラム２１１−１の詳細を説明する。また、図２４、図２５にしたがって、図５で説明したＤＢ裏更新プログラム２１２の詳細を説明する。
【０１１５】
［移行中用のＤＢアクセスプログラム］
図１１〜図２３では、アクセス要求の種別に応じた、移行中用のＤＢアクセスプログラム２１１−１の詳細を説明する。前述したとおり、アクセス要求には、例えば、データベース８０へのデータの新規追加、データベース８０に記憶されたデータの更新、検索、及び、削除などがある。
【０１１６】
［アクセス要求：更新］
図１１は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データ更新を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ａを示す図である。ＤＢアクセスプログラム２１１−１ａは、関数ｕｐｄａｔｅを有する。
【０１１７】
関数ｕｐｄａｔｅのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｄａｔａ、値ｉｄである。値ｔａｂｌｅは、更新対象のテーブルの識別情報を示す。値ｖｅｒｓｉｏｎは、アクセス要求を発行したアプリケーションプログラム２１０のバージョン（パッチ未適用、パッチ適用済み）を示す。値ｄａｔａは、更新対象のデータを示し、値ｉｄは、更新対象のデータの識別番号を示す。
【０１１８】
図１１に示すＤＢアクセスプログラム２１１−１ａは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンと、値ｄａｔａ（更新対象のデータ）の移行状態に基づいて、アクセス要求を送信するデータベース８０を決定する。
【０１１９】
即ち、ＤＢアクセスプログラム２１１−１ａは、更新対象のデータが移行済みであれば、アプリケーションプログラム２１０のバージョンに関わらず、新データベース８０−２を選択しデータを更新する。また、ＤＢアクセスプログラム２１１−１ａは、更新対象のデータが未移行の場合、アプリケーションプログラム２１０が新バージョンの場合は新データベース８０−２を、旧バージョンの場合は旧データベース８０−１を選択しデータを更新する。
【０１２０】
これにより、更新対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、データの更新処理を適切に行うことが可能になる。
【０１２１】
また、ＤＢアクセスプログラム２１１−１ａは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンが、アクセス要求を送信するデータベース８０に対応するアプリケーションプログラムのバージョン２１０と異なる場合、値ｄａｔａを変換する。以下、データベース８０に対応するアプリケーションプログラム２１０のバージョンを、データベース８０のバージョンと称する。
【０１２２】
即ち、ＤＢアクセスプログラム２１１−１ａは、旧バージョンのアプリケーションプログラム２１０からのアクセス要求に応答して、新データベース８０−２にデータを更新する場合、更新対象データを新データベース８０−２のデータ構成に変換する。これにより、アクセス要求が含むデータが、アクセス要求を送信するデータベース８０のデータ構成と異なる場合であっても、データの更新処理を適切に行うことが可能になる。
【０１２３】
図１１のＤＢアクセスプログラム２１１−１ａに示すコードｃｄ１１は、更新対象のデータが新データベース８０−２に移行済みである場合の処理の記述である。コードｃｄ１２は、更新対象のデータが新データベース８０−２に未移行の場合の処理の記述である。また、コードｃｄ１３、ｃｄ１４は、アプリケーションプログラム２１０のバージョンの判定処理の記述を示す。
【０１２４】
次に、図１１に示すＤＢアクセスプログラム２１１−１ａの処理を、図１２のフローチャート図にしたがって説明する。
【０１２５】
図１２は、図１１に示した移行中用のＤＢアクセスプログラム２１１−１ａの処理を説明するフローチャート図である。図１１に示した、更新対象のデータが新データベース８０−２に移行済みである場合の処理（コードｃｄ１１）は、図１２の工程Ｓ１４〜Ｓ１６に対応する。また、図１１に示した、更新対象のデータが新データベース８０−２に未移行の場合の処理（コードｃｄ１２）は、図１２の工程Ｓ２０〜Ｓ２４に対応する。また、図１１に示したコードｃｄ１３は工程Ｓ１４に、図１１に示したコードｃｄ１４は、工程Ｓ２０に対応する。
【０１２６】
Ｓ１１：移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２の更新対象のテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。図２３で後述するが、本実施の形態例では、新データベース８０−２の排他管理のみを行うことによって、旧データベース８０−１の排他管理を合わせて行う。
【０１２７】
Ｓ１２：移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２の対象のテーブルをパラメータである値ｉｄに基づいて検索する。
【０１２８】
Ｓ１３：移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０１２９】
Ｓ１４：新データベース８０−２の対象テーブルに値ｉｄのデータが存在する場合（Ｓ１３のＹＥＳ）、更新対象データが移行済みであることを示す。移行中用のＤＢアクセスプログラム２１１−１ａは、さらに、パラメータである値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１１のｃｄ１３）。つまり、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンを判定する。
【０１３０】
Ｓ１５：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ１４のＮＯ）、旧バージョンのアプリケーションプログラム２１０がアクセス要求を発行したことを示す。即ち、工程Ｓ１５は、アクセス要求を発行したアプリケーションプログラム２１０のバージョンが旧バージョンであって、更新対象データが移行済みの場合を示す。上記の場合、移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２に対して、更新対象データを更新する。
【０１３１】
このため、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる。したがって、移行中用のＤＢアクセスプログラム２１１−１ａは、書き込み対象の値ｄａｔａ（更新対象のデータ）を新データベース８０−２のデータ構成に変換する。これにより、旧バージョンのアプリケーションプログラム２１０のアクセス要求に応じて、新データベース８０−２にアクセスする場合であっても、データの更新処理を適切に行うことが可能になる。
【０１３２】
なお、アクセス要求を発行したアプリケーションプログラム２１０のバージョンが新バージョンであって（Ｓ１４のＹＥＳ）、更新対象データが移行済みの場合（Ｓ１３のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ａは、値ｄａｔａを変換しない。
【０１３３】
Ｓ１６：移行中用のＤＢアクセスプログラム２１１−１ａは、値ｄａｔａが示す更新対象データにしたがって、新データベース８０−２の対象のテーブルを更新する。工程Ｓ１４〜Ｓ１６（図１１のｃｄ１１）は、更新対象データが移行済みの場合（Ｓ１３のＹＥＳ）の処理である。更新対象データが移行済みの場合、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、新データベース８０−２を選択する。そして、移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２に更新対象データを更新する。
【０１３４】
Ｓ１７：新データベース８０−２の対象テーブルに値ｉｄのデータが存在しない場合（Ｓ１３のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ａは、旧データベース８０−１の対象のテーブルを値ｉｄに基づいて検索する。
【０１３５】
Ｓ１８：移行中用のＤＢアクセスプログラム２１１−１ａは、旧データベース８０−１の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０１３６】
Ｓ１９：旧データベース８０−１の対象テーブルに値ｉｄのデータが存在しない場合（Ｓ１８のＮＯ）、いずれのデータベース８０−１、８０−２にもデータが存在しないことを示す。したがって、移行中用のＤＢアクセスプログラム２１１−１ａは、更新対象データが存在しない旨の情報を更新結果に設定する。
【０１３７】
Ｓ２０：旧データベース８０−１の対象テーブルに値ｉｄのデータが存在する場合（Ｓ１８のＹＥＳ）、更新対象データが未移行であることを示す。即ち、値ｉｄのデータが、新データベース８０−２には存在しないが、旧データベース８０−１には存在する場合を示す。移行中用のＤＢアクセスプログラム２１１−１ａは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１１のｃｄ１４）。
【０１３８】
Ｓ２１：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ２０のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。即ち、工程Ｓ２１は、アクセス要求を発行したアプリケーションプログラム２１０のバージョンが新バージョンであって、更新対象データが未移行の場合を示す。移行中用のＤＢアクセスプログラム２１１−１ａは、旧データベース８０−１の検索結果データを新データベース８０−２のデータ構成に変換する。
【０１３９】
Ｓ２２：移行中用のＤＢアクセスプログラム２１１−１ａは、工程Ｓ２１による変換後のデータを、新データベース８０−２のテーブルに追加する。即ち、移行中用のＤＢアクセスプログラム２１１−１ａは、検索結果データを、新データベース８０−２に移行する。
【０１４０】
Ｓ２３：移行中用のＤＢアクセスプログラム２１１−１ａは、値ｄａｔａが示す更新対象データにしたがって、新データベース８０−２の対象のテーブルを更新する。これにより、移行中用のＤＢアクセスプログラム２１１−１ａは、旧データベース８０−１が有する更新対象データを新データベース８０−２に移行するとともに、更新対象データを更新する。
【０１４１】
Ｓ２４：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ２０のＮＯ）、旧バージョンのアプリケーションプログラム２１０がアクセス要求を発行したことを示す。移行中用のＤＢアクセスプログラム２１１−１ａは、値ｄａｔａが示す更新対象データにしたがって、旧データベース８０−１の対象のテーブルを更新する。
【０１４２】
工程Ｓ２０〜Ｓ２４（図１１のｃｄ１２）に示すように、更新対象のデータが未移行の場合（Ｓ１８のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンを参照する。そして、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに応じて、旧データベース８０−１、または、新データベース８０−２を選択し、更新対象データを更新する。
【０１４３】
Ｓ２５：移行中用のＤＢアクセスプログラム２１１−１ａは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０１４４】
図１１、図１２に示すように、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、更新対象データの移行状態に基づいて、更新対象のデータベース８０−１、８０−２を決定する。これにより、移行中用のＤＢアクセスプログラム２１１−１ａは、アクセス要求を送信するデータベース８０−１、８０−２を、適切に、決定可能になる。したがって、更新対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、更新処理を適切に行うことが可能になる。
【０１４５】
［アクセス要求：新規追加］
図１３は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データ新規追加を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ｂを示す図である。ＤＢアクセスプログラム２１１−１ｂは、関数ｃｒｅａｔｅを有する。
【０１４６】
関数ｃｒｅａｔｅのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｄａｔａである。値ｔａｂｌｅは、新規追加対象のテーブルの識別情報を示す。値ｖｅｒｓｉｏｎは、アクセス要求を発行したアプリケーションプログラム２１０のバージョン（パッチ未適用、パッチ適用済み）を示す。値ｄａｔａは、新規追加対象のデータを示す。
【０１４７】
図１３に示すＤＢアクセスプログラム２１１−１ｂは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンに関わらず、新データベース８０−２を選択し、データを追加する。したがって、ＤＢ裏更新プログラム２１２による移行処理の対象となるデータ量を抑制することが可能になる。
【０１４８】
また、ＤＢアクセスプログラム２１１−１ｂは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンが、アクセス要求を送信するデータベース８０のバージョンと異なる場合、値ｄａｔａ（新規追加対象のデータ）を変換する。即ち、ＤＢアクセスプログラム２１１−１ｂは、旧バージョンのアプリケーションプログラム２１０からの新規追加要求に応じて、新データベース８０−２にデータを追加する場合、新規追加対象のデータを新データベース８０−２のデータ構成に変換する。
【０１４９】
ＤＢアクセスプログラム２１１−１ｂに示すコードｃｄ２１は、アプリケーションプログラム２１０のバージョンの判定処理の記述を示す。次に、図１３に示すＤＢアクセスプログラム２１１−１ｂの処理を、図１４のフローチャート図にしたがって説明する。
【０１５０】
図１４は、図１３に示した移行中用のＤＢアクセスプログラム２１１−１ｂの処理を説明するフローチャート図である。図１３に示したコードｃｄ２１は、工程Ｓ３１に対応する。
【０１５１】
Ｓ３１：移行中用のＤＢアクセスプログラム２１１−１ｂは、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１３のｃｄ２１）。つまり、移行中用のＤＢアクセスプログラム２１１−１ｂは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンを判定する。
【０１５２】
Ｓ３２：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ３１のＮＯ）、旧バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。移行中用のＤＢアクセスプログラム２１１−１ｂは、アプリケーションプログラム２１０のバージョンに関わらず、新データベース８０−２の対象テーブルに新規追加データを追加する。このため、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる。即ち、アクセス要求が含むデータと、アクセス要求を送信するデータベース８０のデータ構成が異なる。
【０１５３】
したがって、工程Ｓ３２では、移行中用のＤＢアクセスプログラム２１１−１ｂは、書き込み対象の値ｄａｔａ（新規追加対象のデータ）を新データベース８０−２のデータ構成に変換する。これにより、旧バージョンのアプリケーションプログラム２１０のアクセス要求に応じて、新データベース８０−２にアクセスする場合であっても、データの新規追加処理を適切に行うことが可能になる。
【０１５４】
なお、アクセス要求を発行したアプリケーションプログラム２１０のバージョンが新バージョンの場合（Ｓ３１のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｂは、値ｄａｔａを変換しない。
【０１５５】
Ｓ３３：移行中用のＤＢアクセスプログラム２１１−１ｂは、新データベース８０−２のデータの新規追加対象のテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。
【０１５６】
Ｓ３４：移行中用のＤＢアクセスプログラム２１１−１ｂは、値ｄａｔａが示す新規追加対象データを新データベース８０−２の対象のテーブルに追加する。
【０１５７】
Ｓ３５：移行中用のＤＢアクセスプログラム２１１−１ｂは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０１５８】
図１３、図１４に示すように、移行中用のＤＢアクセスプログラム２１１−１ｂは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、追加対象のデータベースを、新データベース８０−２に決定する。これにより、移行中用のＤＢアクセスプログラム２１１−１ｂは、アクセス要求を送信するデータベース８０−１、８０−２を、適切に決定可能になる。したがって、追加対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、追加処理を適切に行うことが可能になる。
【０１５９】
［アクセス要求：検索］
図１５は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データ検索を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ｃを示す図である。ＤＢアクセスプログラム２１１−１ｃは、関数ｆｉｎｄを有する。
【０１６０】
関数ｆｉｎｄのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｉｄである。値ｔａｂｌｅは、検索対象のテーブルの識別情報を示す。値ｖｅｒｓｉｏｎは、アクセス要求を発行したアプリケーションプログラム２１０のバージョン（パッチ未適用、パッチ適用済み）を示す。値ｉｄは、検索対象のデータの識別番号を示す。
【０１６１】
図１５に示すＤＢアクセスプログラム２１１−１ｃは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、検索対象データの移行状態に基づいて、アクセス要求を送信するデータベース８０−１、８０−２を決定する。即ち、ＤＢアクセスプログラム２１１−１ｃは、検索対象のデータが新データベース８０−２に移行済みの場合は、新データベース８０−２を選択し、新データベース８０−２に未移行の場合は、旧データベース８０−１を選択して検索する。
【０１６２】
また、ＤＢアクセスプログラム２１１−１ｃは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンが、アクセス要求を送信するデータベース８０のバージョンと異なる場合、読み出した検索データを変換する。これにより、読み出したデータが、アクセス要求を送信するデータベース８０のデータ構成と異なる場合であっても、データの検索処理を適切に行うことが可能になる。
【０１６３】
即ち、ＤＢアクセスプログラム２１１−１ｃは、新バージョンのアプリケーションプログラム２１０からのアクセス要求に応じて、旧データベース８０−１を検索した場合、読み出したデータを新データベース８０−２のデータ構成に変換する。また、ＤＢアクセスプログラム２１１−１ｃは、旧バージョンのアプリケーションプログラム２１０からのアクセス要求に応じて、新データベース８０−２を検索した場合、読み出したデータを旧データベース８０−１のデータ構成に変換する。
【０１６４】
図１５のＤＢアクセスプログラム２１１−１ｃに示すコードｃｄ３１は、検索対象のデータが新データベース８０−２に移行済みである場合の処理の記述である。コードｃｄ３２は、検索対象のデータが新データベース８０−２に未移行の場合の処理の記述である。また、コードｃｄ３３、ｃｄ３４は、アプリケーションプログラム２１０のバージョンの判定処理の記述を示す。
【０１６５】
次に、図１５に示すＤＢアクセスプログラム２１１−１ｃの処理を、図１６のフローチャート図にしたがって説明する。
【０１６６】
図１６は、図１５に示した移行中用のＤＢアクセスプログラム２１１−１ｃの処理を説明するフローチャート図である。図１５に示した、検索対象のデータが新データベース８０−２に移行済みである場合の処理（コードｃｄ３１）は、図１６の工程Ｓ４４〜Ｓ４７に対応する。また、図１５に示した、検索対象のデータが新データベース８０−２に未移行の場合の処理（コードｃｄ３２）は、図１６の工程Ｓ５１〜Ｓ５４に対応する。また、図１５に示したコードｃｄ３３は工程Ｓ４４に、図１５に示したコードｃｄ３４は、工程Ｓ５１に対応する。
【０１６７】
Ｓ４１：移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２の検索対象となるテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。
【０１６８】
Ｓ４２：移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２の対象のテーブルをパラメータである値ｉｄに基づいて検索する。
【０１６９】
Ｓ４３：移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０１７０】
Ｓ４４：新データベース８０−２の対象テーブルに値ｉｄのデータが存在する場合（Ｓ４３のＹＥＳ）、検索対象データが移行済みであることを示す。ＤＢアクセスプログラム２１１−１ｃは、検索対象データが新データベース８０−２に移行済みの場合は、検索対象データを、新データベース８０−２から検索する。移行中用のＤＢアクセスプログラム２１１−１ｃは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１５のｃｄ３３）。
【０１７１】
Ｓ４５：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ４４のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ４５の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが同一である。したがって、移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２の検索結果のデータを変換することなく、検索結果に設定する。
【０１７２】
Ｓ４６：一方、値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ４４のＮＯ）、旧バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ４６の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、検索対象のデータベース８０のバージョンが異なる。即ち、アクセス要求が含むデータと、アクセス要求を送信するデータベース８０のデータ構成とが異なる。
【０１７３】
したがって、移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２から読み出した検索結果のデータを旧データベース８０−１のデータ構成に変換する。これにより、旧バージョンのアプリケーションプログラム２１０のアクセス要求に応じて、新データベース８０−２にアクセスする場合であっても、データの検索処理を適切に行うことが可能になる。
【０１７４】
Ｓ４７：移行中用のＤＢアクセスプログラム２１１−１ｃは、工程Ｓ４６で変換したデータを検索結果に設定する。工程Ｓ４４〜Ｓ４７（図１５のｃｄ３１）に示すように、検索対象のデータが新データベース８０−２に移行済みの場合、ＤＢアクセスプログラム２１１−１ｃは、検索対象のデータを新データベース８０−２から検索する。
【０１７５】
Ｓ４８：一方、新データベース８０−２の対象テーブルに値ｉｄのデータが存在しない場合（Ｓ４３のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ｃは、旧データベース８０−１の対象のテーブルを値ｉｄに基づいて検索する。
【０１７６】
Ｓ４９：移行中用のＤＢアクセスプログラム２１１−１ｃは、旧データベース８０−１の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０１７７】
Ｓ５０：旧データベース８０−１の対象テーブルに値ｉｄのデータが存在しない場合（Ｓ４９のＮＯ）、いずれのデータベース８０−１、８０−２にもデータが存在しないことを示す。したがって、移行中用のＤＢアクセスプログラム２１１−１ｃは、検索対象データが存在しない旨の情報を更新結果に設定する。
【０１７８】
Ｓ５１：旧データベース８０−１の対象テーブルに値ｉｄのデータが存在する場合（Ｓ４９のＹＥＳ）、検索対象データが未移行であることを示す。ＤＢアクセスプログラム２１１−１ｃは、検索対象データが新データベース８０−２に未移行の場合は、検索対象データを、旧データベース８０−１から検索する。移行中用のＤＢアクセスプログラム２１１−１ｃは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１５のｃｄ３４）。
【０１７９】
Ｓ５２：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ５１のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ５２の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる。即ち、アクセス要求が含むデータと、アクセス要求を送信するデータベース８０のデータ構成が異なる。
【０１８０】
したがって、移行中用のＤＢアクセスプログラム２１１−１ｃは、旧データベース８０−１から読み出した検索結果のデータを新データベース８０−２のデータ構成に変換する。これにより、新バージョンのアプリケーションプログラム２１０のアクセス要求に応じて、旧データベース８０−１にアクセスする場合であっても、データの検索処理を適切に行うことが可能になる。
【０１８１】
Ｓ５３：移行中用のＤＢアクセスプログラム２１１−１ｃは、工程Ｓ５２で変換したデータを検索結果に設定する。
【０１８２】
Ｓ５４：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ５１のＮＯ）、旧バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ５４の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが同一である。したがって、移行中用のＤＢアクセスプログラム２１１−１ｃは、旧データベース８０−１の検索結果のデータを変換することなく、検索結果に設定する。
【０１８３】
工程Ｓ５１〜Ｓ５４（図１５のｃｄ３２）に示すように、検索対象のデータが新データベース８０−２に未移行の場合、ＤＢアクセスプログラム２１１−１ｃは、検索対象のデータを旧データベース８０−１から検索する。  Ｓ５５：移行中用のＤＢアクセスプログラム２１１−１ｃは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０１８４】
図１５、図１６に示すように、移行中用のＤＢアクセスプログラム２１１−１ｃは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、検索対象データの移行状態に基づき、検索対象のデータベース８０−１、８０−２を決定する。これにより、移行中用のＤＢアクセスプログラム２１１−１ｃは、アクセス要求を送信するデータベース８０−１、８０−２を、適切に決定可能になる。したがって、検索対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からアクセス要求が混在する場合でも、検索処理を適切に行うことが可能になる。
【０１８５】
［アクセス要求：条件検索（１件）］
図１７は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データの条件検索（１件）を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ｄを示す図である。データの条件検索とは、テーブルのある項目の値が所定の条件を満たすデータを１件検索する処理を示す。ＤＢアクセスプログラム２１１−１ｄは、関数ｗｈｅｒｅを有する。
【０１８６】
関数ｗｈｅｒｅのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｃｏｎｄｉｔｉｏｎである。値ｔａｂｌｅは、条件検索対象のテーブルの識別情報を示す。値ｖｅｒｓｉｏｎは、アクセス要求を発行したアプリケーションプログラム２１０のバージョン（パッチ未適用、パッチ適用済み）を示す。値ｃｏｎｄｉｔｉｏｎは、検索条件を示す。
【０１８７】
図１７に示すＤＢアクセスプログラム２１１−１ｄは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、検索対象データの移行状態に基づいて、アクセス要求を送信するデータベース８０を決定する。具体的に、ＤＢアクセスプログラム２１１−１ｄは、旧、新データベース８０−１、８０−２から検索条件を満たすデータを検索し、検索対象データの移行状態に応じて、いずれかのデータベース８０−１、８０−２の検索結果を選択する。
【０１８８】
また、図１５、図１６と同様にして、ＤＢアクセスプログラム２１１−１ｄは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンが、アクセス要求を送信するデータベース８０のバージョンと異なる場合、読み出した検索結果データを変換する。図１７のＤＢアクセスプログラム２１１−１ｄのコードｃｄ４１、ｃｄ４２は、アプリケーションプログラム２１０のバージョンの判定処理の記述を示す。また、コードｃｄ４３は、旧、新データベース８０−２の検索結果を判定する処理の記述を示す。
【０１８９】
次に、図１７に示すＤＢアクセスプログラム２１１−１ｄの処理を、図１８のフローチャート図にしたがって説明する。
【０１９０】
図１８は、図１７に示した移行中用のＤＢアクセスプログラム２１１−１ｄの処理を説明するフローチャート図である。図１７に示したコードｃｄ４１は工程Ｓ７３に、図１７に示すコードｃｄ４２は、工程Ｓ７６に対応する。また、図１７に示したコードｃｄ４３は工程Ｓ６７に対応する。
【０１９１】
Ｓ６１：移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の条件検索対象となるテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。
【０１９２】
Ｓ６２：移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する。
【０１９３】
Ｓ６３：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ６２のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。したがって、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎを旧バージョンの仕様に合わせて変換する。
【０１９４】
Ｓ６４：一方、値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ６２のＮＯ）、旧バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。したがって、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎを新バージョンの仕様に合わせて変換する。
【０１９５】
Ｓ６５：移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎにしたがって、旧データベース８０−１、及び、新データベース８０−２の対象のテーブルを検索する。
【０１９６】
Ｓ６６：移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１及び新データベース８０−２の両方に、値ｃｏｎｄｉｔｉｏｎを満たすデータがあるか否かを判定する。
【０１９７】
Ｓ６７：両方のデータベース８０に値ｃｏｎｄｉｔｉｏｎを満たすデータがある場合（Ｓ６６のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、検索結果を判定する（図１７のｃｄ４３）。具体的に、移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の検索結果である値ｉｄが、旧データベース８０−１の検索結果である値ｉｄ以下の値であるか否かを判定する。
【０１９８】
図１７、図１８の例では、検索条件を満たす値ｉｄを、値ｉｄの昇順に検索する。また、本実施の形態例では、ＤＢ裏更新プログラム２１２が、順次、データの移行処理を行う。したがって、データの移行処理の進捗状況によって、各データベース８０−１、８０−２が格納するデータの比率が異なる。即ち、移行処理の進捗が僅かである場合、大部分のデータが旧データベース８０−１に格納されていることを示す。検索条件を値ｉｄの昇順に検索する場合、より多くのデータを格納するデータベース８０−１、８０−２の検索結果の値ｉｄがより小さい値となる可能性が高い。したがって、移行中用のＤＢアクセスプログラム２１１−１ｄは、検索結果である値ｉｄを比較し、値ｉｄの値がより小さい検索結果を採用する。
【０１９９】
Ｓ６８：新データベース８０−２の検索結果の値ｉｄが、旧データベース８０−１の検索結果の値ｉｄ以下の値である場合（Ｓ６７のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の検索結果を採用する。移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１の検索結果を無効にする。即ち、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎを満たすデータが新データベース８０−２にのみ存在した旨、検索結果を変更する。
【０２００】
Ｓ６９：一方、新データベース８０−２の検索結果である値ｉｄが、旧データベース８０−１の検索結果である値ｉｄより大きい場合（Ｓ６７のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１の検索結果を採用する。移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の検索結果を無効にする。即ち、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎを満たすデータが旧データベース８０−１にのみ存在した旨、検索結果を変更する。
【０２０１】
Ｓ７０：移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１及び新データベース８０−２のいずれにも、値ｃｏｎｄｉｔｉｏｎを満たすデータがなかった否かを判定する。
【０２０２】
Ｓ７１：いずれのデータベース８０−１、８０−２にも値ｃｏｎｄｉｔｉｏｎを満たすデータがない場合（Ｓ７０のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎに合致するデータがない旨、検索結果に設定する。
【０２０３】
Ｓ７２：データベース８０−１、８０−２のいずれかに値ｃｏｎｄｉｔｉｏｎを満たすデータがある場合（Ｓ７０のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、値ｃｏｎｄｉｔｉｏｎを満たすデータが新データベース８０−２にのみあるか否かを判定する。
【０２０４】
Ｓ７３：値ｃｏｎｄｉｔｉｏｎを満たすデータが新データベース８０−２にのみある場合（Ｓ７２のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１７のｃｄ４１）。工程Ｓ６８に該当する場合、工程Ｓ７３に遷移する。
【０２０５】
Ｓ７４：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ７３のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ７４の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが同一である。したがって、移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の検索結果である値ｉｄに対応するデータを変換することなく、検索結果に設定する。
【０２０６】
Ｓ７５：一方、値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ７３のＮＯ）、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる。したがって、図１６と同様にして、移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の検索結果である値ｉｄに対応するデータを、旧データベース８０−１のデータ構成に変換し、検索結果に設定する。
【０２０７】
Ｓ７６：一方、値ｃｏｎｄｉｔｉｏｎを満たすデータが旧データベース８０−１にのみある場合（Ｓ７２のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ｄは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１７のｃｄ４２）。工程Ｓ６９に該当する場合、工程Ｓ７６に遷移する。
【０２０８】
Ｓ７７：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ７６のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。工程Ｓ７７の場合、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる。したがって、図１６と同様にして、移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１の検索結果である値ｉｄに対応するデータを、新データベース８０−２のデータ構成に変換し、検索結果に設定する。
【０２０９】
Ｓ７８：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ７３のＮＯ）、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが同一である。したがって、移行中用のＤＢアクセスプログラム２１１−１ｄは、旧データベース８０−１の検索結果である値ｉｄに対応するデータを変換することなく、検索結果に設定する。
【０２１０】
Ｓ７９：移行中用のＤＢアクセスプログラム２１１−１ｄは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０２１１】
図１７、図１８に示すように、移行中用のＤＢアクセスプログラム２１１−１ｄは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、データの移行状態に基づいて、アクセス要求を送信するデータベース８０−１、８０−２を決定する。したがって、検索対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、条件検索処理を適切に行うことが可能になる。
【０２１２】
［アクセス要求：条件検索（全件）］
図１９は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データの条件検索（全件）を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ｅを示す図である。ＤＢアクセスプログラム２１１−１ｅは、関数ａｌｌを有する。
【０２１３】
関数ａｌｌのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｃｏｎｄｉｔｉｏｎである。各値は、図１７と同様である。図１９に示すＤＢアクセスプログラム２１１−１ｅは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、検索対象データの移行状態に基づいて、アクセス要求を送信するデータベース８０を決定する。具体的に、ＤＢアクセスプログラム２１１−１ｅは、データの移行状態に応じて、旧、新データベース８０−１、８０−２から検索条件を満たすデータを検索し、両方の検索結果を重複しないように合計する。
【０２１４】
また、図１９のＤＢアクセスプログラム２１１−１ｅは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンが、アクセス要求を送信するデータベース８０のバージョンと異なる場合、読み出した検索結果データを変換する。図１７、図１８に示した条件検索（１件）における変換処理と同様である。図１９のＤＢアクセスプログラム２１１−１ｅのコードｃｄ５１は、アプリケーションプログラム２１０のバージョンの判定処理の記述を示す。
【０２１５】
次に、図１９に示すＤＢアクセスプログラム２１１−１ｅの処理を、図２０のフローチャート図にしたがって説明する。
【０２１６】
図２０は、図１９に示した移行中用のＤＢアクセスプログラム２１１−１ｅの処理を説明するフローチャート図である。図１９に示したコードｃｄ５１は工程Ｓ８６に対応する。図２０のフローチャート図における工程Ｓ８１〜工程Ｓ８５は、図１８のフローチャート図における工程Ｓ６１〜Ｓ６５と同様であるため、省略する。
【０２１７】
Ｓ８６：移行中用のＤＢアクセスプログラム２１１−１ｅは、さらに、値ｖｅｒｓｉｏｎが新バージョンを示すか否かを判定する（図１９のｃｄ５１）。
【０２１８】
Ｓ８７：値ｖｅｒｓｉｏｎが新バージョンを示す場合（Ｓ８６のＹＥＳ）、新バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。移行中用のＤＢアクセスプログラム２１１−１ｅは、新データベース８０−２における値ｃｏｎｄｉｔｉｏｎを満たすすべてのデータを、検索結果に設定する。
【０２１９】
Ｓ８８：移行中用のＤＢアクセスプログラム２１１−１ｅは、旧データベース８０−１の値ｃｏｎｄｉｔｉｏｎを満たすデータのうち、新データベース８０−２にないデータを新データベース８０−２のデータ構成に変換し、検索結果に追加する。これにより、移行中用のＤＢアクセスプログラム２１１−１ｅは、旧データベース８０−１と新データベース８０−２の検索結果を合計する。
【０２２０】
Ｓ８９：値ｖｅｒｓｉｏｎが旧バージョンを示す場合（Ｓ８６のＮＯ）、旧バージョンのアプリケーションプログラム２１０が、アクセス要求を発行したことを示す。移行中用のＤＢアクセスプログラム２１１−１ｅは、新データベース８０−２における値ｃｏｎｄｉｔｉｏｎを満たすすべてのデータを、旧データベース８０−１のデータ構成に変換し、検索結果に設定する。
【０２２１】
Ｓ９０：移行中用のＤＢアクセスプログラム２１１−１ｅは、旧データベース８０−１の値ｃｏｎｄｉｔｉｏｎを満たすデータのうち、新データベース８０−２にないデータを、検索結果に追加する。これにより、移行中用のＤＢアクセスプログラム２１１−１ｅは、旧データベース８０−１と新データベース８０−２の検索結果を合計する。
【０２２２】
Ｓ９１：移行中用のＤＢアクセスプログラム２１１−１ｅは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０２２３】
図１９、図２０に示すように、移行中用のＤＢアクセスプログラム２１１−１ｅは、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、複数の検索の対象のデータベース８０−１、８０−２を選択する。したがって、検索対象のデータが旧、新のデータベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、条件検索処理を適切に行うことが可能になる。
【０２２４】
［アクセス要求：削除］
図２１は、図５に示すＤＢアクセスプログラム２１１−１の１つであって、データ削除を示すアクセス要求に対応する移行中用のＤＢアクセスプログラム２１１−１ｆを示す図である。ＤＢアクセスプログラム２１１−１ｆは、関数ｄｅｓｔｒｏｙを有する。
【０２２５】
関数ｄｅｓｔｒｏｙのパラメータは、値ｔａｂｌｅ、値ｖｅｒｓｉｏｎ、値ｉｄである。値ｔａｂｌｅは、削除対象のテーブルの識別情報を示す。値ｖｅｒｓｉｏｎは、アクセス要求を発行したアプリケーションプログラム２１０のバージョン（パッチ未適用、パッチ適用済み）を示す。値ｉｄは、削除対象のデータの識別情報を示す。
【０２２６】
図２１に示すＤＢアクセスプログラム２１１−１ｆは、値ｖｅｒｓｉｏｎの示すアプリケーションプログラム２１０のバージョンに関わらず、値ｄａｔａ（削除対象のデータ）のＤＢの移行状態に基づいて、アクセス要求を送信するデータベース８０を決定する。即ち、ＤＢアクセスプログラム２１１−１ｆは、対象データが、旧データベース８０−１に加え、新データベース８０−２に存在する場合、両データベース８０−１、８０−２から対象データを削除する。
【０２２７】
このように、移行中用のＤＢアクセスプログラム２１１−１ｆは、複数のデータベース８０−１、８０−２を選択してもよい。ＤＢアクセスプログラム２１１−１ｆのコードｃｄ６１は、削除対象のデータが新データベース８０−２に移行済みである場合の処理の記述である。
【０２２８】
次に、図２１に示すＤＢアクセスプログラム２１１−１ｆの処理を、図２２のフローチャート図にしたがって説明する。
【０２２９】
図２２は、図２１に示した移行中用のＤＢアクセスプログラム２１１−１ｆの処理を説明するフローチャート図である。図２１に示したコードｃｄ６１は工程Ｓ１０６、Ｓ１０７に対応する。
【０２３０】
Ｓ１０１：移行中用のＤＢアクセスプログラム２１１−１ｆは、新データベース８０−２の削除対象となるテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。
【０２３１】
Ｓ１０２：移行中用のＤＢアクセスプログラム２１１−１ｆは、旧データベース８０−１の対象のテーブルをパラメータである値ｉｄに基づいて検索する。
【０２３２】
Ｓ１０３：移行中用のＤＢアクセスプログラム２１１−１ｆは、旧データベース８０−１の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０２３３】
Ｓ１０４：旧データベース８０−１の対象テーブルに値ｉｄに対応するデータが存在する場合（Ｓ１０３のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｆは、値ｉｄに対応するデータを旧データベース８０−１から削除する。
【０２３４】
Ｓ１０５：移行中用のＤＢアクセスプログラム２１１−１ｆは、新データベース８０−２の対象のテーブルをパラメータである値ｉｄに基づいて検索する。
【０２３５】
Ｓ１０６：移行中用のＤＢアクセスプログラム２１１−１ｆは、新データベース８０−２の対象テーブルに値ｉｄのデータが存在するか否かを判定する。
【０２３６】
Ｓ１０７：新データベース８０−２の対象テーブルに値ｉｄに対応するデータが存在する場合（Ｓ１０６のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｆは、値ｉｄに対応するデータを新データベース８０−２から削除する。工程Ｓ１０６、１０７（図２１のｃｄ６１）に示すように、削除対象データが移行済みの場合（Ｓ１０６のＹＥＳ）、移行中用のＤＢアクセスプログラム２１１−１ｆは、さらに、新データベース８０−２を、削除対象のデータベース８０に決定する。
【０２３７】
Ｓ１０８：移行中用のＤＢアクセスプログラム２１１−１ｆは、戻り値を設定する。移行中用のＤＢアクセスプログラム２１１−１ｆは、値ｉｄに対応するデータが、旧、新データベース８０−１、８０−２のいずれかに存在した場合（Ｓ１０３のＹＥＳ、Ｓ１０６のＹＥＳ）、戻り値に成功（ＳＵＣＣＥＳＳ）を示す値を設定する。一方、値ｉｄに対応するデータが、旧、新データベース８０−１、８０−２のいずれにも存在しなかった場合（Ｓ１０３のＮＯ、且つ、Ｓ１０６のＮＯ）、移行中用のＤＢアクセスプログラム２１１−１ｆは、戻り値に失敗（ＥＲＲＯＲ）を示す値を設定する。
【０２３８】
Ｓ１０９：移行中用のＤＢアクセスプログラム２１１−１ｆは、新データベース８０−２の対象テーブルの排他解除を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセス可能になる。
【０２３９】
図２１、図２２に示すように、移行中用のＤＢアクセスプログラム２１１−１ｆは、アプリケーションプログラム２１０のバージョンに関わらず、削除対象のデータの移行状態に応じて、削除対象のデータベース８０−１、８０−２を決定する。したがって、削除対象のデータが旧、新データベース８０−１、８０−２に混在し、旧、新バージョンのアプリケーションプログラム２１０からのアクセス要求が混在する場合でも、削除処理を適切に行うことが可能になる。
【０２４０】
図２３は、図５に示す、移行中用のＤＢアクセスプログラム２１１−１の他の処理を記述するＤＢアクセスプログラム２１１−１ｇ〜２１１−１ｊの一例を示す図である。
【０２４１】
図２３のＤＢアクセスプログラム２１１−１ｇは、テーブル全体を排他制御する関数ｌｏｃｋを有する。また、ＤＢアクセスプログラム２１１−１ｈは、テーブル全体を排他解除する関数ｕｎｌｏｃｋを有する。関数ｌｏｃｋ、関数ｕｎｌｏｃｋは、新データベース８０−２のみを対象として、テーブルの排他制御、または、排他解除を行う。
【０２４２】
本実施の形態例では、移行中用のＤＢアクセスプログラム２１１−１（２１１−１ａ〜２１１−１ｆ）は、新データベース８０−２、旧データベース８０−１のアクセス処理をセットで行う。したがって、旧、新データベース８０−１、８０−２のうち、新データベース８０−２の排他管理のみを行うことにより、両データベース８０−１、８０−２の排他管理を実現する。これにより、排他制御にかかる処理量を減少し、プログラムの負荷を抑えることが可能になる。
【０２４３】
また、図２３のＤＢアクセスプログラム２１１−１ｉは、１件のデータを排他制御する関数ｌｏｃｋを有する。また、ＤＢアクセスプログラム２１１−１ｊは、１件のデータを排他解除する関数ｕｎｌｏｃｋを有する。ＤＢアクセスプログラム２１１−１ｉ、２１１−１ｊも同様にして、新データベース８０−２のデータのみを対象として、テーブルの排他制御、または、排他解除を行うことにより、両データベース８０−１、８０−２の排他管理を実現する。これにより、排他制御にかかる処理量を減少し、プログラムの負荷を抑えることが可能になる。
【０２４４】
［ＤＢ裏更新プログラム］
図２４、図２５では、ＤＢ裏更新プログラム２１２の詳細を説明する。
【０２４５】
図２４は、図５に示したＤＢ裏更新プログラム２１２の一例を示す図である。図２４に示すＤＢ裏更新プログラム２１２は、旧データベース８０−１にあるデータを、順次、新データベース８０−２のデータ構成に変換して、新データベース８０−２に追加する。また、このとき、ＤＢ裏更新プログラム２１２は、新データベース８０−２に追加した移行済みのデータを、旧データベース８０−１から削除する。ＤＢ裏更新プログラム２１２は、図２４に示す処理を繰り返すことにより、旧データベース８０−１のすべてのデータを移行する。
【０２４６】
本実施の形態例では、ＤＢ裏更新プログラム２１２によるデータの移行処理の完了後は、アクセス対象のデータの変換処理が発生しない。変換処理は、図１１〜図２３に示した、アクセス要求を発行したアプリケーションプログラム２１０のバージョンと、アクセス要求を送信するデータベース８０のバージョンが異なる場合のデータの変換処理である。つまり、変換処理は、例えば、図１２の工程Ｓ１５、図１４の工程Ｓ３２、図１６の工程Ｓ４６、Ｓ５２等を示す。したがって、本実施の形態例によると、データの変換処理が永続的に生じることが回避されるため、データの変換処理にかかる負荷が抑えられる。
【０２４７】
図２４のＤＢ裏更新プログラム２１２におけるコードｃｄ７１は、旧データベース８０−１のデータを、新データベース８０−２のデータ構成に変換して、新データベース８０−２に追加する処理の記述を示す。
【０２４８】
図２５は、図２４に示したＤＢ裏更新プログラム２１２の処理を説明するフローチャート図である。図２４に示した、コードｃｄ７１に示した処理は、図２５における工程Ｓ１１８〜Ｓ１２０に対応する。
【０２４９】
Ｓ１１１：ＤＢ裏更新プログラム２１２は、旧データベース８０−１から新データベース８０−２へのすべてのテーブルの移行処理が完了したか否かを判定する。
【０２５０】
Ｓ１１２：すべてのテーブルの移行処理が完了している場合（Ｓ１１１のＹＥＳ）、ＤＢ裏更新プログラム２１２は、移行処理が完了した旨の情報（ＣＬＥＡＮ）を通知し、処理を終了する。
【０２５１】
Ｓ１１３：一方、移行が完了していない場合（Ｓ１１１のＮＯ）、ＤＢ裏更新プログラム２１２は、新データベース８０−２の対象のテーブルの排他制御を行う。これにより、他のプログラムは、新データベース８０−２の当該テーブルにアクセスできない。
【０２５２】
Ｓ１１４：ＤＢ裏更新プログラム２１２は、新データベース８０−２の対象のテーブルが既に排他制御済みか否かを判定する。
【０２５３】
Ｓ１１５：新データベース８０−２の対象のテーブルが既に排他制御済みである場合（Ｓ１１４のＹＥＳ）、他のプログラムが対象のテーブルを使用していることを示す。したがって、ＤＢ裏更新プログラム２１２は、データベース８０が使用中である旨の情報（ＢＵＳＹ）を通知し、処理を終了する。データベース８０が使用中である場合、ＤＢ裏更新プログラム２１２は、別のタイミングで移行処理を行う。
【０２５４】
Ｓ１１６：一方、新データベース８０−２の対象のテーブルが排他済みではない場合（Ｓ１１４のＮＯ）、ＤＢ裏更新プログラム２１２は、旧データベース８０−１の対象テーブルのデータを検索する。
【０２５５】
Ｓ１１７：ＤＢ裏更新プログラム２１２は、旧データベース８０−１の対象テーブルが空か否かを判定する。旧データベース８０−１の対象テーブルにデータがない場合（Ｓ１１７のＹＥＳ）、ＤＢ裏更新プログラム２１２は、前述した工程Ｓ１１２に遷移する。
【０２５６】
Ｓ１１８：旧データベース８０−１の対象テーブルにデータがある場合（Ｓ１１７のＮＯ）、ＤＢ裏更新プログラム２１２は、旧データベース８０−１から検索したデータを、さらに、新データベース８０−２から検索する。
【０２５７】
Ｓ１１９：ＤＢ裏更新プログラム２１２は、旧データベース８０−１から検索したデータが新データベース８０−２に存在するか否かを判定する。つまり、ＤＢ裏更新プログラム２１２は、旧データベース８０−１に存在し、新データベース８０−２に存在しないデータを検索する。
【０２５８】
Ｓ１２０：旧データベース８０−１から検索したデータが、新データベース８０−２に存在しない場合（Ｓ１１９のＮＯ）、当該検索したデータが、旧データベース８０−１にのみ存在することを示す。したがって、ＤＢ裏更新プログラム２１２は、旧データベース８０−１から検索したデータを、新データベース８０−２のデータ構成に変換し、新データベース８０−２に追加する。なお、旧データベース８０−１から検索したデータが新データベース８０−２にも存在する場合（Ｓ１１９のＹＥＳ）、ＤＢ裏更新プログラム２１２は、工程Ｓ１２０の処理を行わない。
【０２５９】
Ｓ１２１：ＤＢ裏更新プログラム２１２は、工程Ｓ１１６で旧データベース８０−１から検索したデータを、旧データベース８０−１から削除する。したがって、例えば、すべてのデータの移行完了時、旧データベース８０−１が有するデータの件数は、０件となる。
【０２６０】
Ｓ１２２：ＤＢ裏更新プログラム２１２は、新データベース８０−２の対象テーブルの排他解除を行う。
【０２６１】
図２４で説明したように、ＤＢ裏更新プログラム２１２は、図２５で説明した処理を繰り返すことにより、すべてのデータの移行処理を完了する。移行処理が完了した場合、旧データベース８０−１は空になる。
【０２６２】
［他の実施の形態例］
本実施の形態例では、ＡＰサーバ２０ａ、２０ｂが物理サーバである場合を例示した。ただし、この例に限定されるものではない。ＡＰサーバ２０ａ、２０ｂは、仮想サーバであってもよい。また、本実施の形態例では、２つのＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラム２１０に順次、パッチを適用する場合を例示した。ただし、この例に限定されるものではない。本実施の形態例における移行中用のＤＢアクセスプログラム２１１−１は、３つ以上のＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラム２１０に、順次、パッチを適用する場合にも有効である。
【０２６３】
また、図７、図８によると、本実施の形態例では、構成ＡのＡＰサーバ２０ａにのみ、ＤＢ裏更新プログラム２１２を導入する。ただし、この例に限定されるものではない。運用担当者は、構成ＡのＡＰサーバ２０ａに加えて、構成ＢのＡＰサーバ２０ｂに、ＤＢ裏更新プログラム２１２を導入してもよい。また、構成ＡのＡＰサーバ２０ａ、及び、構成ＢのＡＰサーバ２０ｂのアプリケーションプログラム２１０に順次パッチを適用する処理も、図７、図８の例に限定されるものではない。複数のＡＰサーバ２０ａ、２０ｂで動作するアプリケーションプログラム２１０に順次、パッチを適用する間、移行中のＤＢアクセスプログラム２１１−１が動作していればよい。
【０２６４】
また、図１１〜図２３では、アクセス要求の種別に応じた、移行中用のＤＢアクセスプログラム２１１−１の例を説明した。ただし、図１１〜図２３に示した移行中用のＤＢアクセスプログラム２１１−１の処理は一例である。
【０２６５】
例えば、更新処理のアクセス要求を受け付けた場合（図１１、図１２）を例示する。図１１、図１２では、移行中用のＤＢアクセスプログラム２１１−１ａは、対象データが未移行の場合に、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに応じて、データベース８０−１、８０−２を決定する。また、移行中用のＤＢアクセスプログラム２１１−１ａは、対象データが移行済みの場合に、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、アクセス要求を送信するデータベースを新データベース８０−２に決定する。
【０２６６】
ただし、移行中用のＤＢアクセスプログラム２１１−１ａは、対象データが未移行の場合に、アクセス要求を発行したアプリケーションプログラム２１０のバージョンに関わらず、アクセス要求を送信するデータベースを新データベース８０−２に決定してもよい。
【０２６７】
同様にして、他のアクセス要求を受け付けた場合についても、図１１〜図２３に示した、移行中用のＤＢアクセスプログラム２１１−１の処理の例に限定されるものではない。本実施の形態例における移行中用のＤＢアクセスプログラム２１１−１は、アクセス要求が含むアプリケーションプログラム２１０のバージョンに関する情報と、対象データの移行情報とに基づいて、対象のデータベース８０−１、８０−２を決定する。また、本実施の形態例における移行中用のＤＢアクセスプログラム２１１−１は、両データベース８０−１、８０−２を決定してもよい。
【０２６８】
以上の実施の形態をまとめると、次の付記のとおりである。
【０２６９】
（付記１）
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作可能なプログラムであって、
前記複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、
前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、
処理をコンピュータに実行させるアクセス制御プログラム。
【０２７０】
（付記２）
付記１において、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データが前記第２データベースに追加済みか否かを示す前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御プログラム。
【０２７１】
（付記３）
付記１または２において、
前記受け付けは、さらに、前記第１データベースが有し前記第２データベースが有していないデータを、前記第２データベースに順次、追加する前記データの移行処理を実行する、アクセス制御プログラム。
【０２７２】
（付記４）
付記１乃至３のいずれかにおいて、
前記受け付けは、対象データの更新の前記アクセス要求を受け付け、
前記決定は、前記対象データの前記データ移行状況に関する情報が未移行を示す場合に、前記バージョンに関する情報に応じて前記第１データベースまたは前記第２データベースに決定し、前記対象データの前記データ移行状況に関する情報が移行済みを示す場合に、前記バージョンに関する情報に関わらず前記第２データベースに決定する、アクセス制御プログラム。
【０２７３】
（付記５）
付記１乃至４のいずれかにおいて、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データの、前記第１データベースから、当該第１データベースとデータの構成が異なる前記第２データベースへの前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御プログラム。
【０２７４】
（付記６）
付記５において、
前記受け付けは、対象データの書き込みを示す前記アクセス要求を受け付け、
前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記対象データを、前記決定した前記アクセス要求を送信するデータベースの前記データの構成にさらに変換する、アクセス制御プログラム。
【０２７５】
（付記７）
付記５において、
前記受け付けは、対象データの読み出しを示す前記アクセス要求を受け付け、
前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記アクセス要求に応じて前記第１、第２データベースから読み出したデータを、前記アクセス要求に含まれるバージョンに関する情報に対応するデータベースの前記データの構成にさらに変換する、アクセス制御プログラム。
【０２７６】
（付記８）
付記１乃至７のいずれかにおいて、
前記第１ソフトウェアの更新は、前記複数の情報処理装置上でそれぞれ動作する同一の前記第１ソフトウェアを順次、更新する、アクセス制御プログラム。
【０２７７】
（付記９）
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に、前記情報処理装置が、前記第１ソフトウェアからデータベースへのアクセス要求を受け付け、
前記情報処理装置が、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と前記第１データベースから前記第２データベースへのデータ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する、
アクセス制御方法。
【０２７８】
（付記１０）
付記９において、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データが前記第２データベースに追加済みか否かを示す前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、
アクセス制御方法。
【０２７９】
（付記１１）
付記９または１０において、
前記受け付けは、さらに、前記第１データベースが有し前記第２データベースが有していないデータを、前記第２データベースに順次、追加する前記データの移行処理を実行する、
アクセス制御方法。
【０２８０】
（付記１２）
付記９乃至１１のいずれかにおいて、
前記受け付けは、対象データの更新の前記アクセス要求を受け付け、
前記決定は、前記対象データの前記データ移行状況に関する情報が未移行を示す場合に、前記バージョンに関する情報に応じて前記第１データベースまたは前記第２データベースに決定し、前記対象データの前記データ移行状況に関する情報が移行済みを示す場合に、前記バージョンに関する情報に関わらず前記第２データベースに決定する、
アクセス制御方法。
【０２８１】
（付記１３）
付記９乃至１２のいずれかにおいて、
前記決定は、前記バージョンに関する情報と、前記アクセス要求の対象データの、前記第１データベースから、当該第１データベースとデータの構成が異なる前記第２データベースへの前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、
アクセス制御方法。
【０２８２】
（付記１４）
付記１３において、
前記受け付けは、対象データの書き込みを示す前記アクセス要求を受け付け、
前記情報処理装置は、前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記対象データを、前記決定した前記アクセス要求を送信するデータベースの前記データの構成にさらに変換する、
アクセス制御方法。
【０２８３】
（付記１５）
付記１３において、
前記受け付けは、対象データの読み出しを示す前記アクセス要求を受け付け、
前記情報処理装置は、前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記アクセス要求に応じて前記第１、第２データベースから読み出したデータを、前記アクセス要求に含まれるバージョンに関する情報に対応するデータベースの前記データの構成にさらに変換する、
アクセス制御方法。
【０２８４】
（付記１６）
付記９乃至１５のいずれかにおいて、
前記第１ソフトウェアの更新は、前記複数の情報処理装置上でそれぞれ動作する同一の前記第１ソフトウェアを順次、更新する、
アクセス制御方法。
【０２８５】
（付記１７）
第１データベースおよび第２データベースに接続された複数の情報処理装置上で動作する第１ソフトウェアの更新に伴って実行される前記第１データベースから前記第２データベースへのデータの移行処理中に前記第１ソフトウェアから受け付けるデータベースへのアクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と、前記第１データベースから前記第２データベースへのデータ移行状況に関する情報とを記憶する記憶部と、
前記アクセス要求を受け付け、前記アクセス要求に含まれる前記第１ソフトウェアのバージョンに関する情報と、前記データ移行状況に関する情報に基づき、前記アクセス要求を送信するデータベースを前記第１データベースまたは前記第２データベースに決定する処理部と、
を有するアクセス制御装置。
【０２８６】
（付記１８）
付記１７において、
前記処理部は、前記バージョンに関する情報と、前記アクセス要求の対象データが前記第２データベースに追加済みか否かを示す前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御装置。
【０２８７】
（付記１９）
付記１７または１８において、
前記処理部は、さらに、前記第１データベースが有し前記第２データベースが有していないデータを、前記第２データベースに順次、追加する前記データの移行処理を実行する、アクセス制御装置。
【０２８８】
（付記２０）
付記１７乃至１９のいずれかにおいて、
前記処理部は、対象データの更新の前記アクセス要求を受け付け、前記対象データの前記データ移行状況に関する情報が未移行を示す場合に、前記バージョンに関する情報に応じて前記第１データベースまたは前記第２データベースに決定し、前記対象データの前記データ移行状況に関する情報が移行済みを示す場合に、前記バージョンに関する情報に関わらず前記第２データベースに決定する、アクセス制御装置。
【０２８９】
（付記２１）
付記１７乃至２０のいずれかにおいて、
前記処理部は、前記バージョンに関する情報と、前記アクセス要求の対象データの、前記第１データベースから、当該第１データベースとデータの構成が異なる前記第２データベースへの前記データ移行状況に関する情報とに基づいて、前記アクセス要求を送信するデータベースを決定する、アクセス制御装置。
【０２９０】
（付記２２）
付記２１において、
前記処理部は、対象データの書き込みを示す前記アクセス要求を受け付け、前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記対象データを、前記決定した前記アクセス要求を送信するデータベースの前記データの構成にさらに変換する、アクセス制御装置。
【０２９１】
（付記２３）
付記２１において、
前記処理部は、対象データの読み出しを示す前記アクセス要求を受け付け、前記アクセス要求に含まれる前記バージョンに関する情報が、前記決定した前記アクセス要求を送信するデータベースに対応する前記第１ソフトウェアのバージョンに関する情報と異なる場合に、前記アクセス要求に応じて前記第１、第２データベースから読み出したデータを、前記アクセス要求に含まれるバージョンに関する情報に対応するデータベースの前記データの構成にさらに変換する、アクセス制御装置。
【０２９２】
（付記２４）
付記１乃至７のいずれかにおいて、
前記第１ソフトウェアの更新は、前記複数の情報処理装置上でそれぞれ動作する同一の前記第１ソフトウェアを順次、更新する、アクセス制御装置。
【符号の説明】
【０２９３】
１０：ＤＢサーバ、２０ａ、２０ｂ：アプリケーションサーバ、３０：ＳＬＢサーバ、４０：ＷＥＢサーバ、５０ａ〜５０ｃ：クライアント装置、８０（８０−１、８０−２）：データベース、２１０：アプリケーションプログラム、２１１−１：移行中用のＤＢアクセスプログラム、２１１−２：移行完了後用のＤＢアクセスプログラム、２１２：ＤＢ裏更新プログラム
【図１】
2016099709.tif 000003
【図２】
2016099709.tif 000004
【図３】
2016099709.tif 000005
【図４】
2016099709.tif 000006
【図５】
2016099709.tif 000007
【図６】
2016099709.tif 000008
【図７】
2016099709.tif 000009
【図８】
2016099709.tif 000010
【図９】
2016099709.tif 000011
【図１０】
2016099709.tif 000012
【図１１】
2016099709.tif 000013
【図１２】
2016099709.tif 000014
【図１３】
2016099709.tif 000015
【図１４】
2016099709.tif 000016
【図１５】
2016099709.tif 000017
【図１６】
2016099709.tif 000018
【図１７】
2016099709.tif 000019
【図１８】
2016099709.tif 000020
【図１９】
2016099709.tif 000021
【図２０】
2016099709.tif 000022
【図２１】
2016099709.tif 000023
【図２２】
2016099709.tif 000024
【図２３】
2016099709.tif 000025
【図２４】
2016099709.tif 000026
【図２５】
2016099709.tif 000027