(57)【特許請求の範囲】
【請求項１】
第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと、前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新する第一の更新手段と、
前記第一の更新手段が、前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納する格納手段と、
前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する第二の更新手段と、
を備えるデータ更新制御装置。
【請求項２】
前記第一の更新手段は、前記第一の記憶手段に格納されている前記レコードを更新する際に値を加算する世代情報を記憶することによって、前記世代情報を前記順序情報として使用し、
前記第二の更新手段は、前記テストアプリケーションが動作を開始する際に、前記第一の更新手段に記憶されている前記世代情報を読み出して、開始時世代情報として記憶することによって、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示すのか否かを判定する、
請求項１に記載のデータ更新制御装置。
【請求項３】
前記第一の更新手段は、前記第一の記憶手段に格納されている前記レコードを更新する際の時刻を前記順序情報として使用し、
前記第二の更新手段は、前記テストアプリケーションが動作を開始する際の時刻を記憶することによって、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示すのか否かを判定する、
請求項１に記載のデータ更新制御装置。
【請求項４】
前記格納手段は、前記第一の更新手段が前記レコードを更新する際に、前記レコードが前記第二の記憶手段に格納済みでない場合に、更新前の前記レコードを前記第二の記憶手段に格納する、
請求項１乃至３のいずれか一項に記載のデータ更新制御装置。
【請求項５】
前記第二の更新手段は、前記テストアプリケーションによる指示に従って前記レコードを更新する際に、最初に前記第三の記憶手段にアクセスすることによって、前記第三の記憶手段に格納されている前記レコードを更新し、前記レコードが前記第三の記憶手段に格納済みでない場合は、前記第一あるいは前記第二の記憶手段に格納されている前記レコードを読み出す、
請求項１乃至４のいずれか一項に記載のデータ更新制御装置。
【請求項６】
複数の前記テストアプリケーションの個々による指示に従って前記レコードを更新する、複数の前記第二の更新手段を備え、
前記格納手段は、前記テストアプリケーション毎に設けられた前記第二の記憶手段に、更新前の前記レコードを格納し、
前記複数の第二の更新手段は、前記テストアプリケーション毎に設けられた前記第三の記憶手段に、前記レコードを更新した結果を格納する、
請求項１乃至５のいずれか一項に記載のデータ更新制御装置。
【請求項７】
前記第一乃至第三の記憶手段をさらに備える、
請求項１乃至６のいずれか一項に記載のデータ更新制御装置。
【請求項８】
前記レコードは、データベースシステムにおいて使用されるキー情報を含み、
前記テストアプリケーションは、前記運用アプリケーションによる前記レコードの更新に関するシミュレーションを行う、
請求項１乃至７のいずれか一項に記載のデータ更新制御装置。
【請求項９】
情報処理装置によって、
第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと、前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新し、
前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納し、
前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する、
データ更新制御方法。
【請求項１０】
第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと、前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新する第一の更新処理と、
前記第一の更新処理が、前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納する格納処理と、
前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する第二の更新処理と、
をコンピュータに実行させるためのデータ更新制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、データベースシステム等におけるデータの更新処理をテストする技術に関する。
【背景技術】
【０００２】
情報化が急速に進展している現代社会においては、様々な分野において、様々なサービスを提供する大規模なデータベースシステムが構築されている。このようなデータベースシステムの可用性を向上させるために、データベースシステムにおけるデータの更新処理をテストすることを、効率的に行う様々な技術が開発されている。
【０００３】
例えば、オンラインデータベースシステム等において、マスタデータベースのデータを使用して動作をシミュレーションする場合、マスタデータベースのレプリカ（複製）を作成し、当該レプリカに対して更新処理を行う方法がある。しかしながら、この方法では、マスタデータベースに大量のレコードが格納されている場合、当該レプリカを作成するために、大容量の記憶領域が必要になるという問題がある。
【０００４】
また、シミュレーションを行う際に、マスタデータベースを直接更新し、シミュレーションが終了した後に、ジャーナルを適用することによって、更新したデータを元の値に戻す方法がある。しかしながら、上述したこれら方法では、当該マスタデータベースを使用した業務を一旦停止する必要がある。したがって、データベースシステムの運用を停止することなく、低コストで、システムの動作をテストする技術に対する期待が高まってきている。
【０００５】
このような技術の一例として、特許文献１には、マスタデータベースに影響を与えることなく動作をシミュレーションするデータベース更新制御方式が開示されている。この方式は、検索要求があったデータの最新イメージが、データベースにあるか更新イメージファイルにあるかを判定する。この方式は、その判定結果に従って、データベースあるいは更新イメージファイルから、検索要求があったデータを取り出す。この方式は、取り出したデータを更新し、更新したデータを更新イメージファイルに登録する。そしてこの方式は、更新したデータの最新イメージが更新イメージファイルにあることを管理する。
【０００６】
また、特許文献２には、データベース処理プログラムをテストする場合に、本番用とテスト用とにデータを分けることにより、テストの影響を本番用データから切り離すようにした装置が開示されている。この装置は、本番モードおよびテストモードを定める実行モード情報を記憶する。この装置は、その実行モード情報を用いてアプリケーション実行部（ＡＰ実行部）と実行モードとを関連付ける。この装置は、ＡＰ実行部がデータベースに接続要求するとき、実行モード情報を送信する。この装置は、実行モード情報に基づいて、本番用またはテスト用のコネクションを生成することによって、接続を確立する。この装置は、ＡＰ実行部が処理するデータを本番用データまたはテスト用データとしてそれぞれ格納する。この装置は、データが更新された場合、その更新された本番用データまたはテスト用データのバージョンを特定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平3-246737号公報
【特許文献２】特開2009-301352号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特許文献１が示す技術では、例えば、シミュレート処理の対象とするデータをレコード単位で読み込む場合、最新レコードの所在がデータベース及び更新イメージファイルのいずれかであるかを判断して読み込む。したがって、この技術では、シミュレート処理の対象として任意の時点のデータベースを対象としてレコードを読み込むことができない。この問題は、特許文献２が示す技術においても同様である。すなわち、特許文献１乃至２が示す技術では、運用中のデータベースシステム等によるデータの更新処理を、その運用に影響を与えることなく、実際の運用状況に近い状態でテストを行うのに十分であるとは言えない。本願発明の主たる目的は、この問題を解決するデータ更新制御装置等を提供することである。
【課題を解決するための手段】
【０００９】
本願発明の一態様に係るデータ更新制御装置は、第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新する第一の更新手段と、前記第一の更新手段が、前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納する格納手段と、前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する第二の更新手段と、を備える。
【００１０】
上記目的を達成する他の見地において、本願発明の一態様に係るデータ更新制御方法は、情報処理装置によって、第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと、前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新し、前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納し、前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する。
【００１１】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るデータ更新制御プログラムは、第一の記憶手段に格納されているレコードを、運用アプリケーションによる指示に従って更新する際に、その更新タイミングと、前記レコードを使用したテストを行うテストアプリケーションが動作を開始するタイミングとの順序関係を示す順序情報と関連付けて更新する第一の更新処理と、前記第一の更新処理が、前記テストアプリケーションが動作を開始したのちに、最初に前記レコードを更新するときに、更新前の前記レコードを第二の記憶手段に格納する格納処理と、前記第一の記憶手段に格納されている前記レコードに関する更新を前記テストアプリケーションによる指示に従って行う際に、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が先であることを示す第一の場合は、前記第一の記憶手段に格納された前記レコードを読み出し、前記レコードと関連付けされた前記順序情報が前記更新タイミングの方が後であることを示す第二の場合は、前記第二の記憶手段に格納された前記レコードを読み出し、前記第一及び第二の場合において、読み出した前記レコードを更新した結果を第三の記憶手段に格納する第二の更新処理と、をコンピュータに実行させるためのプログラムである。
【００１２】
更に、本願発明は、係るデータ更新制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１３】
本願発明は、運用中のデータベースシステム等が使用するデータを使用して、当該データの更新処理をテストすることを、運用に影響を与えずに、実際の運用状況に近い状態で効率的に行うことを可能とする。
【図面の簡単な説明】
【００１４】
【図１】本願発明の第１の実施形態に係るデータ更新制御装置１０の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係る運用ＡＰ用データベース１３０の構成を例示する図である。
【図３】本願発明の第１の実施形態に係る退避レコード情報１４０の構成を例示する図である。
【図４】本願発明の第１の実施形態に係るデータ更新制御装置１０が運用アプリケーション２０の指示により運用ＡＰ用データベース１３０を更新する動作を示すフローチャートである。
【図５】本願発明の第１の実施形態に係るデータ更新制御装置１０がテストアプリケーション３０の指示によりテストＡＰ用データベース１６０にレコードを追加する動作を示すフローチャートである。
【図６】本願発明の第１の実施形態に係るデータ更新制御装置１０がテストアプリケーション３０の指示によりテストＡＰ用データベース１６０のレコードを更新あるいは削除する動作を示すフローチャートである。
【図７】本願発明の第２の実施形態に係るデータ更新制御装置４０の構成を示すブロック図である。
【図８】本願発明の各実施形態に係るデータ更新制御装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１６】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るデータ更新制御装置１０の構成を概念的に示すブロック図である。データ更新制御装置１０は、データベースを使用したサービスを運用中に、当該データベースに対する更新処理を並行してテストすることが可能な装置である。データ更新制御装置１０は、運用アプリケーション（業務アプリケーション）２０による指示に従って、ユーザが使用するデータベースに対する更新処理を行う。運用アプリケーション２０は、複数存在してもよい。データ更新制御装置１０は、テストアプリケーション３０による指示に従って、当該データベースに対する更新処理について、シミュレーションなどによるテストを行う。運用アプリケーション２０、及び、テストアプリケーション３０は、データ更新制御装置１０と通信可能に接続された、あるいは、データ更新制御装置１０を内包するサーバ装置等の情報処理装置において実行されている。
【００１７】
本実施形態に係るデータ更新制御装置１０は、運用ＡＰ（アプリケーション）用更新部（第１の更新部）１１、格納部１２、運用ＡＰ用記憶部（第１の記憶部）１３、退避レコード記憶部（第２の記憶部）１４、テストＡＰ用更新部（第２の更新部）１５、及び、テストＡＰ用記憶部（第３の記憶部）１６を備える。運用ＡＰ用更新部１１、格納部１２、及び、テストＡＰ用更新部１５は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。運用ＡＰ用記憶部１３、退避レコード記憶部１４、及び、テストＡＰ用記憶部１６は、メモリあるいは磁気ディスク等の記憶デバイスである。これらの各記憶部は、電子回路、あるいは、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される記憶制御機能を備えている。なお、これらの記憶部は、データ更新制御装置１０に備えられていなくてもよい。例えば、これらの記憶部は、データ更新制御装置１０と通信可能に接続された外部の記憶装置等に備えられてもよい。
【００１８】
退避レコード記憶部１４、テストＡＰ用更新部１５、及び、テストＡＰ用記憶部１６は、テスト制御機能１００として動作する構成である。テスト制御機能１００は、テストアプリケーション３０が動作を開始することを契機として、動作を開始する。例えば、テスト制御機能１００が、コンピュータプログラムによって実現される場合、データ更新制御装置１０は、テストＡＰ用更新部１５と、退避レコード記憶部１４及びテストＡＰ用記憶部１６の記憶制御機能とを実現するプロセスを、テストアプリケーション３０の動作の開始を契機として立ち上げる（活性化する）。
【００１９】
運用ＡＰ用更新部１１は、運用アプリケーション２０による指示に従って、運用ＡＰ用記憶部１３に記憶された運用ＡＰ用データベース１３０に対する更新処理を行う。図２は、本実施形態に係る運用ＡＰ用データベース１３０の構成を例示する図である。図２に例示する通り、運用ＡＰ用データベース１３０は、「レコード世代」と「主キー」と「ユーザデータ」という項目が関連付けされたレコードを１以上含むデータである。
【００２０】
図２において、「主キー」は、データベースにおける「ユーザデータ」を特定するキー情報である。「レコード世代」は、運用ＡＰ用更新部１１によって、特定のレコードに対する更新（レコードの新規追加を含む）処理が行われたときに、運用ＡＰ用更新部１１によってその特定のレコードに付与される情報である。
【００２１】
図１に示す通り、運用ＡＰ用更新部１１は、世代情報１１０を、例えば内蔵するメモリなどに記憶している。運用ＡＰ用更新部１１は、運用ＡＰ用データベース１３０におけるいずれかのレコードに対して更新処理を行うたびに、世代情報１１０が示す値を「１」加算するとともに、当該レコードに世代情報１１０が示す値を付与する。すなわち、世代情報１１０は、運用ＡＰ用更新部１１による運用ＡＰ用データベース１３０に対する更新処理が行われた回数を示す値である。したがって、運用ＡＰ用データベース１３０における「レコード世代」は、当該レコードに対して更新が行われたときの世代情報１１０が示す値、すなわち更新の世代を表す情報である。
【００２２】
格納部１２は、運用ＡＰ用更新部１１による、運用ＡＰ用データベース１３０におけるいずれかのレコードに対する更新が行われたときに、退避レコード記憶部１４に記憶された退避レコード情報１４０を参照する。図３は、本実施形態に係る退避レコード情報１４０の構成を例示する図である。図３に例示する通り、退避レコード情報１４０は、「主キー」と「ユーザデータ」という項目が関連付けされたレコードを１以上含むデータである。
【００２３】
退避レコード情報１４０に含まれるレコードは、テストアプリケーション３０が動作を開始したのち、運用ＡＰ用更新部１１によって更新された、運用ＡＰ用データベース１３０におけるレコードの更新前の状態を表している。格納部１２は、運用ＡＰ用更新部１１によって更新された、運用ＡＰ用データベース１３０におけるレコードと、「主キー」が等しいレコードが退避レコード情報１４０に存在するかどうかを確認する。
【００２４】
格納部１２は、そのレコードが退避レコード情報１４０に存在しない場合に、運用ＡＰ用更新部１１によって更新される前の状態にあるそのレコードを、退避レコード情報１４０に追加する。格納部１２は、そのレコードが退避レコード情報１４０に存在する場合は、運用ＡＰ用データベース１３０におけるレコードを、退避レコード情報１４０に追加する動作を行わない。
【００２５】
尚、退避レコード記憶部１４は、上述した通り、テストアプリケーション３０が動作を開始したのちに動作を開始する。したがって、格納部１２は、運用ＡＰ用更新部１１が、テストアプリケーション３０が動作を開始したのちに、最初に運用ＡＰ用データベース１３０における特定のレコードを更新するときに、更新前のその特定のレコードを、退避レコード情報１４０に追加する。図２及び３に示す例では、「主キー」が、「Ｋｅｙ２」、「Ｋｅｙ３」、「Ｋｅｙ５」であるレコードが、テストアプリケーション３０が動作を開始したのちに、運用ＡＰ用更新部１１によって更新されている。そして、退避レコード情報１４０には、それらの更新されたレコードについて、更新前の「ユーザデータ」の値として、「Ｄａｔａ２ａ」、「Ｄａｔａ３ａ」、「Ｄａｔａ５ａ」が、順に、「Ｋｅｙ２」、「Ｋｅｙ３」、「Ｋｅｙ５」と関連付けされて格納されている。尚、図２に示す「Ｄａｔａ２ｂ」、「Ｄａｔａ３ｂ」、「Ｄａｔａ５ｂ」は、順に、「主キー」が「Ｋｅｙ２」、「Ｋｅｙ３」、「Ｋｅｙ５」であるレコードに関して、更新後の「ユーザデータ」の値を示す。
【００２６】
テストＡＰ用更新部１５は、テストアプリケーション３０による指示に従って、運用ＡＰ用データベース１３０に対する更新処理を、シミュレートすることなどによってテストする。テストＡＰ用更新部１５は、テストアプリケーション３０が動作を開始したときに、運用ＡＰ用更新部１１に記憶されている世代情報１１０が示す値を読み込んで、読み込んだ値を、開始世代情報１５０として、例えば内蔵するメモリなどに記憶する。すなわち、開始世代情報１５０は、テストアプリケーション３０が動作を開始したときの、世代情報１１０の値を表す。
【００２７】
テストＡＰ用更新部１５は、テストアプリケーション３０による指示に従って、テスト対象とする運用ＡＰ用データベース１３０における何れかのレコードを更新する場合、当該レコードと「主キー」が等しいレコードが、テストＡＰ用記憶部１６に記憶されたテストＡＰ用データベース１６０に存在するかどうかを確認する。
【００２８】
テストＡＰ用データベース１６０は、テストアプリケーション３０が動作を開始したのち、テストＡＰ用更新部１５が、テストアプリケーション３０による指示に従って、運用ＡＰ用データベース１３０における何れかのレコードを更新した結果を格納している。テストＡＰ用データベース１６０の構成は、図３に示す退避レコード情報１４０の構成と同様である。
【００２９】
テストＡＰ用更新部１５は、テスト対象とする運用ＡＰ用データベース１３０におけるレコードと同じ「主キー」を有するレコードが、テストＡＰ用データベース１６０に存在する場合、当該レコードに対して更新処理を行う。テストＡＰ用更新部１５は、テスト対象とするレコードと同じ「主キー」を有するレコードが、テストＡＰ用データベース１６０に存在しない場合、当該レコードと同じ「主キー」を有するレコードが、運用ＡＰ用データベース１３０に存在するか確認する。この場合、テスト対象とする当該レコードは、テストアプリケーション３０が動作を開始したのち、テストアプリケーション３０による更新がまだ一度も行われていないレコードである。
【００３０】
ここで、当該レコードが運用ＡＰ用データベース１３０に存在しないことは、当該レコードが、運用ＡＰ用更新部１１によって、運用ＡＰ用データベース１３０から削除されたことを意味する。この場合、テストＡＰ用更新部１５は、当該レコードと同じ「主キー」を有するレコードが、退避レコード情報１４０に存在するか否かを確認する。テストＡＰ用更新部１５は、そのレコードが存在する場合、そのレコードを退避レコード情報１４０から読み出したのち、読み出したレコードを更新し、その更新結果をテストＡＰ用データベース１６０に追加する。
【００３１】
テストＡＰ用更新部１５は、テスト対象とするレコードと同じ「主キー」を有するレコードが、テストＡＰ用データベース１６０に存在せずに、運用ＡＰ用データベース１３０に存在する場合、当該レコードの「レコード世代」の値と、開始世代情報１５０が示す値とを比較する。ここで、開始世代情報１５０が示す値が当該レコードの「レコード世代」の値より大きいことは、運用ＡＰ用更新部１１による当該レコードに対する更新が行われたタイミングが、テストアプリケーション３０が動作を開始したタイミングに先行することを意味する。
【００３２】
テストＡＰ用更新部１５は、開始世代情報１５０が示す値が当該レコードの「レコード世代」の値以上である場合、運用ＡＰ用データベース１３０から当該レコードを読み出す。テストＡＰ用更新部１５は、開始世代情報１５０が示す値が当該レコードの「レコード世代」の値未満である場合、当該レコードが退避レコード情報１４０に存在することを確認したのち、当該レコードを退避レコード情報１４０から読み出す。テストＡＰ用更新部１５は、運用ＡＰ用データベース１３０あるいは退避レコード情報１４０から読み出した当該レコードを更新し、その更新結果をテストＡＰ用データベース１６０に追加する。
【００３３】
次に図４乃至６のフローチャートを参照して、本実施形態に係るデータ更新制御装置１０の動作（処理）について詳細に説明する。
【００３４】
図４は、本実施形態に係るデータ更新制御装置１０が、運用アプリケーション２０の指示により運用ＡＰ用データベース１３０を更新する動作を示すフローチャートである。
【００３５】
運用ＡＰ用更新部１１は、運用アプリケーション２０から、運用ＡＰ用データベース１３０を更新する指示を受け取る（ステップＳ１０１）。運用ＡＰ用更新部１１は、当該指示の内容が、レコードの更新または削除であるのかレコード追加であるのかを確認する（ステップＳ１０２）。
【００３６】
当該指示の内容がレコードの更新または削除でない（すなわちレコードの追加である）場合（ステップＳ１０３でＮｏ）、運用ＡＰ用更新部１１は、世代情報１１０に１を加算した値を「レコード世代」として設定した追加対象レコードを、運用ＡＰ用データベース１３０に追加する（ステップＳ１０４）。運用ＡＰ用更新部１１は、世代情報１１０を「１」加算して（ステップＳ１１１）、全体の処理は終了する。
【００３７】
当該指示の内容がレコードの更新または削除である場合（ステップＳ１０３でＹｅｓ）、格納部１２は、対象レコードと同じ「主キー」を有するレコードが退避レコード情報１４０に存在するか確認する（ステップＳ１０５）。当該レコードが、退避レコード情報１４０に存在しない場合（ステップＳ１０６でＮｏ）、格納部１２は、運用ＡＰ用データベース１３０における、更新または削除の対象レコードと同じ「主キー」を有するレコードを、退避レコード情報１４０に追加する（ステップＳ１０７）。
【００３８】
当該指示の内容がレコードの更新である場合（ステップＳ１０８でＹｅｓ）、運用ＡＰ用更新部１１は、運用ＡＰ用データベース１３０における更新対象レコードを更新し、その「レコード世代」の値を、世代情報１１０に１を加算した値に設定して（ステップＳ１０９）、処理はステップＳ１１１へ進む。当該指示の内容がレコードの更新でない（すなわちレコードの削除である）場合（ステップＳ１０８でＮｏ）、運用ＡＰ用更新部１１は、運用ＡＰ用データベース１３０から、削除対象レコードを削除して（ステップＳ１１１）、処理はステップＳ１１１へ進む。
【００３９】
図５は、本実施形態に係るデータ更新制御装置１０が、テストアプリケーション３０の指示によりテストＡＰ用データベース１６０にレコードを追加する動作を示すフローチャートである。
【００４０】
テストＡＰ用更新部１５は、テストアプリケーション３０から、運用ＡＰ用データベース１３０にレコードを追加する指示を受け取る（ステップＳ２０１）。テストＡＰ用更新部１５は、追加対象レコードと同じ「主キー」を有するレコードがテストＡＰ用データベース１６０に存在するか確認する（ステップＳ２０２）。
【００４１】
当該レコードがテストＡＰ用データベース１６０に存在する場合（ステップＳ２０３でＹｅｓ）、テストＡＰ用更新部１５は、レコードの追加が失敗したことを、テストアプリケーション３０に報告し（ステップＳ２０４）、全体の処理は終了する。
【００４２】
当該レコードがテストＡＰ用データベース１６０に存在しない場合（ステップＳ２０３でＮｏ）、テストＡＰ用更新部１５は、追加対象レコードと同じ「主キー」を有するレコードが運用ＡＰ用データベース１３０に存在するか確認する（ステップＳ２０５）。当該レコードが運用ＡＰ用データベース１３０に存在する場合（ステップＳ２０６でＹｅｓ）、検索された当該レコードの「レコード世代」の値と、開始世代情報１５０の値とを比較する（ステップＳ２０７）。
【００４３】
開始世代情報１５０の値が「レコード世代」の値以上である場合（ステップＳ２０８でＹｅｓ）、処理はステップＳ２０４へ進む。開始世代情報１５０の値が「レコード世代」の値未満である場合（ステップＳ２０８でＮｏ）、テストＡＰ用更新部１５は、追加対象レコードと同じ「主キー」を有するレコードが退避レコード情報１４０に存在するか確認する（ステップＳ２０９）。
【００４４】
当該レコードが退避レコード情報１４０に存在する場合（ステップＳ２１０でＹｅｓ）、処理はステップＳ２０４へ進む。当該レコードが退避レコード情報１４０に存在しない場合（ステップＳ２１０でＮｏ）、テストＡＰ用更新部１５は、追加対象レコードを、テストＡＰ用データベース１６０に追加して（ステップＳ２１１）、全体の処理は終了する。
【００４５】
図６は、本実施形態に係るデータ更新制御装置１０が、テストアプリケーション３０の指示によりテストＡＰ用データベース１６０のレコードを更新あるいは削除する動作を示すフローチャートである。
【００４６】
テストＡＰ用更新部１５は、テストアプリケーション３０から、運用ＡＰ用データベース１３０のレコードを更新あるいは削除する指示を受け取る（ステップＳ３０１）。テストＡＰ用更新部１５は、対象レコードと同じ「主キー」を有するレコードがテストＡＰ用データベース１６０に存在するか確認する（ステップＳ３０２）。
【００４７】
当該レコードがテストＡＰ用データベース１６０に存在する場合（ステップＳ３０３でＹｅｓ）、テストＡＰ用更新部１５は、テストＡＰ用データベース１６０における対象レコードを更新、あるいは、対象レコードを削除して（ステップＳ３０４）、全体の処理は終了する。
【００４８】
当該レコードがテストＡＰ用データベース１６０に存在しない場合（ステップＳ３０３でＮｏ）、テストＡＰ用更新部１５は、対象レコードと同じ「主キー」を有するレコードが運用ＡＰ用データベース１３０に存在するか確認する（ステップＳ３０５）。当該レコードが運用ＡＰ用データベース１３０に存在する場合（ステップＳ３０６でＹｅｓ）、テストＡＰ用更新部１５は、検索されたレコードの「レコード世代」の値と、開始世代情報１５０の値とを比較する（ステップＳ３０７）。
【００４９】
開始世代情報１５０の値が「レコード世代」の値以上である場合（ステップＳ３０８でＹｅｓ）、テストＡＰ用更新部１５は、運用ＡＰ用データベース１３０から当該レコードを読み出す（ステップＳ３０９）。テストＡＰ用更新部１５は、読み出した当該レコードを更新し、その更新結果をテストＡＰ用データベース１６０に追加して（ステップＳ３１３）、全体の処理は終了する。
【００５０】
開始世代情報１５０の値が「レコード世代」の値未満である場合（ステップＳ３０８でＮｏ）、テストＡＰ用更新部１５は、対象レコードと同じ「主キー」を有するレコードが退避レコード情報１４０に存在するか確認する（ステップＳ３１０）。当該レコードが退避レコード情報１４０に存在する場合（ステップＳ３１１でＹｅｓ）、テストＡＰ用更新部１５は、退避レコード情報１４０から当該レコードを読み出し（ステップＳ３１２）、処理はステップＳ３１３へ進む。当該レコードが退避レコード情報１４０に存在しない場合（ステップＳ３１１でＮｏ）、テストＡＰ用更新部１５は、対象レコードが存在しないことを、テストアプリケーション３０に報告し（ステップＳ３１４）、全体の処理は終了する。
【００５１】
テストＡＰ用更新部１５は、対象レコードと同じ「主キー」を有するレコードが運用ＡＰ用データベース１３０に存在しない場合（ステップＳ３０６でＮｏ）、処理はステップＳ３１０へ進む。
【００５２】
本実施形態に係るデータ更新制御装置１０は、運用中のデータベースシステム等が使用するデータを使用して、当該データの更新処理をテストすることを、運用に影響を与えずに、実際の運用状況に近い状態で効率的に行うことができる。その理由は、データ更新制御装置１０が以下の通り動作するからである。すなわち、
・運用ＡＰ用更新部１１は、運用ＡＰ用データベース１３０のレコードを、更新時の世代情報１１０と関連付けて更新する。
・格納部１２は、運用ＡＰ用データベース１３０のレコードがテストアプリケーション３０の動作開始後最初に更新された際に、当該レコードの更新前の値を、退避レコード情報１４０として格納する。
・テストＡＰ用更新部１５は、運用ＡＰ用データベース１３０における更新対象のレコードに関する世代情報の値と開始世代情報１５０の値とを比較した結果に基づいて、更新対象のレコードを、運用ＡＰ用データベース１３０あるいは退避レコード情報１４０から読み出して更新し、その更新結果をテストＡＰ用データベース１６０として格納する。
【００５３】
以下に、本実施形態に係るデータ更新制御装置１０によって実現される効果について、詳細に説明する。
【００５４】
運用中のデータベースシステム等が使用するデータを使用して、当該データの更新処理をテストすることを、運用に影響を与えずに、実際の運用状況に近い状態で効率的に行う技術への期待が高まっている。このような技術においては、任意の時点のデータベースを対象としてテストを行うことができるようにレコードを読み込むことができるようにすることが課題である。
【００５５】
このような課題に対して、本実施形態に係るデータ更新制御装置１０では、運用ＡＰ用更新部１１は、運用アプリケーション２０による指示に従って、運用ＡＰ用記憶部１３に格納された運用ＡＰ用データベース１３０を更新する。この際、運用ＡＰ用更新部１１は、運用ＡＰ用データベース１３０に含まれる対象レコードを、世代情報１１０と関連付けることにより更新する。世代情報１１０は、その更新タイミングと運用ＡＰ用データベース１３０を使用したテストを行うテストアプリケーション３０が動作を開始するタイミングとの順序関係を示す情報である。格納部１２は、運用ＡＰ用更新部１１が、テストアプリケーション３０が動作を開始したのちに、最初に対象レコードを更新するときに、更新前の当該対象レコードを退避レコード記憶部１４に格納する。テストＡＰ用更新部１５は、テストアプリケーション３０による指示に従って、運用ＡＰ用データベース１３０に含まれる当該対象レコードに関する更新を行う。この際、テストＡＰ用更新部１５は、当該対象レコードと関連付けされた世代情報が更新タイミングの方が先であることを示す第１の場合は、運用ＡＰ用データベース１３０に含まれる当該対象レコードを読み出す。テストＡＰ用更新部１５は、当該対象レコードと関連付けされた世代情報が更新タイミングの方が後であることを示す第２の場合は、退避レコード記憶部１４に格納された更新前の当該対象レコードを読み出す。テストＡＰ用更新部１５は、これら第１及び第２の場合において、読み出した当該対象レコードを更新し、その更新結果をテストＡＰ用記憶部１６に格納する。
【００５６】
すなわち、本実施形態に係るデータ更新制御装置１０は、テストアプリケーション３０が動作を開始したのち、運用アプリケーション２０によって更新されたレコードについて、更新前の値を退避レコード記憶部１４に退避する。データ更新制御装置１０は、レコードごとに、運用アプリケーション２０によって更新されたタイミングと、テストアプリケーション３０が動作を開始したタイミングとの順序関係を管理する。そして、データ更新制御装置１０は、この順序関係に基づいて、運用ＡＰ用記憶部１３あるいは退避レコード記憶部１４から対象レコードを読み出して更新し、その更新結果をテストＡＰ用記憶部１６に格納する。これにより、本実施形態に係るデータ更新制御装置１０は、運用中のデータベースシステム等が使用するデータを使用して、当該データの更新処理をテストすることを、運用に影響を与えずに、実際の運用状況に近い状態で効率的に行うことができる。
【００５７】
また、本実施形態に係るデータ更新制御装置１０は、レコードを更新する際に値を加算する世代情報１１０と、テストアプリケーション３０が動作を開始したときの世代情報１１０の値を示す開始世代情報１５０とによって、上述した順序関係を管理するが、これとは別の方法によって当該順序関係を管理してもよい。データ更新制御装置１０は、例えば、レコードを更新する際の時刻とテストアプリケーション３０が動作を開始したときの時刻によって、当該順序関係を管理してもよい。
【００５８】
また、本実施形態に係るデータ更新制御装置１０は、例えば、開始時刻が異なる複数のテストアプリケーション３０が、互いに影響を与えずに運用ＡＰ用データベース１３０に対する更新処理をテストできるように、テスト制御機能１００を複数備えるようにしてもよい。この場合、個々のテスト制御機能１００は、互いに影響を与えることなく独立して動作する。例えば、テスト制御機能１００がコンピュータプログラムによって実現される場合、データ更新制御装置１０は、テストアプリケーション３０が動作を開始するたびに、テスト制御機能１００を実現するプロセスを立ち上げる。すなわち、本実施形態に係るデータ更新制御装置１０は、複数のテスト（シミュレーション）を並行して行うことにより、運用中のデータベースシステム等に対する更新処理のテストを、より効率的に行うことができる。
【００５９】
＜第２の実施形態＞
図７は、第２の実施形態に係るデータ更新制御装置４０の構成を概念的に示すブロック図である。
【００６０】
本実施形態に係るデータ更新制御装置４０は、第１の更新部４１、格納部４２、及び、第２の更新部４５を備えている。
【００６１】
第１の更新部４１は、第１の記憶部４３に格納されているレコード４３０を、運用アプリケーション５０による指示に従って、更新する際に、その更新タイミングと、レコード４３０を使用したテストを行うテストアプリケーション６０が動作を開始するタイミングとの順序関係を示す順序情報４１０と関連付けて更新する。
【００６２】
格納部４２は、第１の更新部４１が、テストアプリケーション６０が動作を開始したのちに、最初にレコード４３０を更新するときに、更新前のレコード４４０を第２の記憶部４４に格納する。
【００６３】
第２の更新部４５は、第１の記憶部４３に格納されているレコード４３０に関する更新を、テストアプリケーション６０による指示に従って下記の通り行う。すなわち、第２の更新部４５は、レコード４３０と関連付けされた順序情報４１０が当該更新タイミングの方が先であることを示す第１の場合は、第１の記憶部４３に格納されたレコード４３０を読み出す。第２の更新部４５は、レコード４３０と関連付けされた順序情報４１０が当該更新タイミングの方が後であることを示す第２の場合は、第２の記憶部４４に格納された更新前のレコード４４０を読み出す。第２の更新部４５は、これら第１及び第２の場合において、読み出したレコードを更新した結果４６０を、第３の記憶部４６に格納する。
【００６４】
本実施形態に係るデータ更新制御装置４０は、運用中のデータベースシステム等が使用するデータを使用して、当該データの更新処理をテストすることを、運用に影響を与えずに、実際の運用状況に近い状態で効率的に行うことができる。その理由は、データ更新制御装置４０が以下の通り動作するからである。すなわち、
・第１の更新部４１は、レコード４３０を、順序情報４１０と関連付けて更新する。
・格納部４２は、レコード４３０がテストアプリケーション６０の動作開始後最初に更新された際に、レコード４３０の更新前の値を、更新前のレコード４４０として格納する。
・第２の更新部４５は、更新対象のレコード４３０に関する順序情報の値に基づいて、レコード４３０あるいは更新前のレコード４４０を読み出して更新し、その更新結果をレコードを更新した結果４６０として格納する。
【００６５】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図７に示したデータ更新制御装置における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１及び図７において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・運用ＡＰ用更新部１１、及び、第１の更新部４１、
・格納部１２及び４２、
・テストＡＰ用更新部１５、及び、第２の更新部４５。
【００６６】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図８を参照して説明する。
【００６７】
図８は、本願発明の各実施形態に係るデータ更新制御装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図８は、図１及び図７に示したデータ更新制御装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００６８】
図８に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・外部装置との通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９。
【００６９】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。
【００７０】
そして、上述した実施形態を例に説明した本願発明は、図８に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１及び図７）における上述した構成、或いはフローチャート（図４乃至６）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００７１】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００７２】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００７３】
１０    データ更新制御装置
１００    テスト制御機能
１１    運用ＡＰ用更新部
１１０    世代情報
１２    格納部
１３    運用ＡＰ用記憶部
１３０    運用ＡＰ用データベース
１４    退避レコード記憶部
１４０    退避レコード情報
１５    テストＡＰ用更新部
１５０    開始世代情報
１６    テストＡＰ用記憶部
１６０    テストＡＰ用データベース
２０    運用アプリケーション
３０    テストアプリケーション
４０    データ更新制御装置
４１    第１の更新部
４１０    順序情報
４２    格納部
４３    第１の記憶部
４３０    レコード
４４    第２の記憶部
４４０    更新前のレコード
４５    第２の更新部
４６    第３の記憶部
４６０    レコードを更新した結果
５０    運用アプリケーション
６０    テストアプリケーション
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
0006648567.tif 000002
【図２】
0006648567.tif 000003
【図３】
0006648567.tif 000004
【図４】
0006648567.tif 000005
【図５】
0006648567.tif 000006
【図６】
0006648567.tif 000007
【図７】
0006648567.tif 000008
【図８】
0006648567.tif 000009