(57)【要約】【課題】データベースに反映する操作の特定を行うプロセッサの処理負担を軽減することを可能とするレコード反映プログラム、レコード反映装置およびレコード反映方法を提供する。【解決手段】データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、最初に探索されたプライマリーキーごとの削除レコードと追加レコードとに基づき、データベースに対する複数のレコードの反映を行う。【選択図】図４
2018181042.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませ、
前記特定のプロセッサにおいて、データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
処理を実行させるレコード反映プログラム。
【請求項２】
請求項１において、
前記特定のプロセッサは、パイプライン処理を行うプロセッサである、
レコード反映プログラム。
【請求項３】
請求項１において、
前記探索する処理では、前記複数のレコードから生成された前記プライマリーキー、データに対する操作の内容およびレコードの生成順を含む複数の部分レコードから、前記削除レコードおよび前記追加レコードの探索を行う、
レコード反映プログラム。
【請求項４】
請求項３において、
前記操作の内容は、前記データの削除、前記データの追加および前記データの更新を含み、
前記探索する処理では、
前記操作の内容が前記データの削除または前記データの更新である前記部分レコードが存在する場合、前記削除レコードが存在するものと判定し、
前記操作の内容が前記データの追加または前記データの更新である前記部分レコードが存在する場合、前記追加レコードが存在するものと判定する、
レコード反映プログラム。
【請求項５】
請求項４において、
前記探索する処理では、特定のプライマリーキーについての前記追加レコードを探索する際に、前記操作の内容が前記データの追加または前記データの更新である前記部分レコードよりも先に、前記操作の内容が前記データの削除である前記部分レコードが探索された場合、前記特定のプライマリーキーについての前記追加レコードが存在しないものと判定する、
レコード反映プログラム。
【請求項６】
請求項４において、
前記反映を行う処理では、
前記データベースに格納されたデータから、最初に探索された前記プライマリーキーごとの前記削除レコードが示すデータを削除し、
前記データベースに、最初に探索された前記プライマリーキーごとの前記追加レコードが示すデータを追加する、
レコード反映プログラム。
【請求項７】
請求項６において、
前記探索する処理では、
前記削除レコードが存在するものと判定した場合、存在した前記削除レコードに対応する前記生成順を第１生成順として特定し、
前記追加レコードが存在するものと判定した場合、存在した前記追加レコードに対応する前記生成順を第２生成順として特定し、
前記反映を行う処理では、
前記複数のレコードのうち、特定した前記第１生成順に対応するレコードが示すデータを、前記データベースに格納されたデータから削除し、
前記複数のレコードのうち、特定した前記第２生成順に対応するレコードが示すデータを、前記データベースに追加する、
レコード反映プログラム。
【請求項８】
コンピュータに、
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
処理を実行させるレコード反映プログラム。
【請求項９】
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませるレコード格納部と、
前記特定のプロセッサにおいて、前記データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索するレコード探索部と、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行うレコード反映部と、を有する、
レコード反映装置。
【請求項１０】
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索するレコード探索部と、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行うレコード反映部と、を有する、
レコード反映装置。
【請求項１１】
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませ、
前記特定のプロセッサにおいて、前記データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
レコード反映方法。
【請求項１２】
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
レコード反映方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レコード反映プログラム、レコード反映装置およびレコード反映方法に関する。
【背景技術】
【０００２】
データベースが利用される業務システム（以下、情報処理システムよも呼ぶ）において、例えば、利用者にサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、例えば、サービスの提供に用いられるデータを格納するデータベースを構成として含む業務システムの構築を行う。
【０００３】
上記のようなデータベースには、一般的に、行指向データベース（以下、行形式データベースとも呼ぶ）と、列指向データベース（以下、列形式データベースとも呼ぶ）とが含まれる。行指向データベースは、データベースに含まれるレコードごとに管理を行うデータベースであって、レコードごとのデータに対する操作を列指向データベースよりも高速に行うことが可能なデータベースである。一方、列指向データベースは、データベースに含まれる各項目に対応するデータごとに管理を行うデータベースであって、データベースに含まれる項目ごとのデータの参照を行指向データベースよりも高速に行うことが可能なデータベースである。
【０００４】
そのため、事業者は、例えば、サービスの提供に伴ってレコードごとのデータに対する操作が頻繁に行われることが予測される場合、行指向データベースを構成として含む業務システムの構築を行う。また、事業者は、例えば、サービスの提供に伴ってデータベースに含まれる項目ごとのデータの参照が頻繁に行われることが予測される場合、列指向データベースを構成として含む業務システムの構築を行う（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−０６４８５０号公報
【特許文献２】特開２０１２−１５５４９８号公報
【特許文献３】特開平９−１０１９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のようなサービスの提供に伴って取り扱われるデータ量は、年々増加傾向にある。そのため、業務システムでは、サービスの提供に伴って取り扱われるデータ量の増加によって、各処理の実行時間が制約時間を超過する可能性が高まっている。したがって、近年では、例えば、列指向データベースを用いた業務システムを稼働させる場合であっても、データに対する操作に要する時間を短縮する必要性が高まっている。
【０００７】
そこで、業務システムでは、例えば、データベースに格納されたデータに対する複数の操作が纏めて行われる場合、複数の操作のうち、データの整合性を確保するためにデータベースに対して最低限行う必要がある操作の特定を行う。これにより、業務システムは、複数の操作の全てをデータベースに対して行う必要がなくなり、データに対する操作に要する時間を短縮することが可能になる。
【０００８】
しかしながら、データベースに対して最低限行う必要がある操作の特定は、複数の操作の全てを参照する必要があるため、業務システムにおける処理負担を大きくする場合がある。そのため、業務システムでは、データベースに対して最低限行う必要がある操作の特定に伴う処理負担が大きい場合、業務システムにおいて並行して行われる他の処理に遅延等の影響が及ぶ可能性がある。
【０００９】
これに対し、業務システムでは、例えば、データベースに対して最低限行う必要がある操作を特定する処理を、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）とは異なる他のプロセッサ（例えば、アクセラレータ）に分担させる場合がある。
【００１０】
しかしながら、他のプロセッサに処理の分担を行う場合であっても、他のプロセッサにおける処理負担が大きい場合、業務システムでは、各処理の実行を制約時間内に行うことができない可能性がある。
【００１１】
そこで、一つの側面では、本発明は、データベースに反映する操作の特定を行うプロセッサの処理負担を軽減することを可能とするレコード反映プログラム、レコード反映装置およびレコード反映方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
実施の形態の一態様では、コンピュータに、差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませ、前記特定のプロセッサにおいて、前記データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、処理を実行させる。
【発明の効果】
【００１３】
一つの側面によれば、データベースに反映する操作の特定を行うプロセッサの処理負担を軽減することを可能とする。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、情報処理装置１のハードウエア構成を示す図である。
【図３】図３は、情報処理装置１の機能ブロック図である。
【図４】図４は、第１の実施の形態におけるＤＢ反映処理の概略を説明するフローチャート図である。
【図５】図５は、第１の実施の形態におけるＤＢ反映処理の概略を説明する図である。
【図６】図６は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図７】図７は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図８】図８は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図９】図９は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図１０】図１０は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図１１】図１１は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。
【図１２】図１２は、差分ログ１３１の具体例を説明する図である。
【図１３】図１３は、生成順が付加された差分ログ１３１の具体例を説明する図である。
【図１４】図１４は、部分レコードの具体例を説明する図である。
【図１５】図１５は、ＦＰＧＡによるＳ２３およびＳ２４の処理の具体例を説明する図である。
【図１６】図１６は、ＦＰＧＡによるＳ２３およびＳ２４の処理の具体例を説明する図である。
【図１７】図１７は、ＦＰＧＡによるＳ２３およびＳ２４の処理の具体例を説明する図である。
【図１８】図１８は、第２の実施の形態における情報処理装置１のハードウエア構成を示す図である。
【図１９】図１９は、第２の実施の形態における情報処理装置１の機能ブロック図である。
【図２０】図２０は、第２の実施の形態におけるＤＢ反映処理を説明するフローチャート図である。
【図２１】図２１は、第２の実施の形態におけるＤＢ反映処理を説明するフローチャート図である。
【発明を実施するための形態】
【００１５】
［情報処理システムの構成］
初めに、情報処理システム１０の構成について説明を行う。図１は、情報処理システム１０の構成を示す図である。図１に示す情報処理システム１０は、例えば、情報処理装置１（以下、反映装置１とも呼ぶ）と、複写元処理装置２と、複写元記憶装置２ａ（以下、複写元データベース２ａとも呼ぶ）と、複写先処理装置３と、複写先記憶装置３ａ（以下、複写先データベース３ａ）とを有する。
【００１６】
複写元処理装置２は、例えば、事業者が利用者に対してサービスを提供するための処理を行う。そして、複写元処理装置２は、例えば、利用者に対するサービスの提供に用いられるデータ（レコード）を必要に応じて複写元データベース２ａに格納する。また、複写元処理装置２は、例えば、複写元データベース２ａに格納されたデータを必要に応じて参照する。
【００１７】
複写先処理装置３は、例えば、複写先データベース３ａに格納されたデータを参照し、複写先データベース３ａに格納されたデータの解析を行う。以下、複写先データベース３ａが列指向データベースであるものとして説明を行う。
【００１８】
情報処理装置１は、例えば、複写先データベース３ａに格納されたデータの解析が行われる前に、複写元データベース２ａに格納されたデータの内容と複写先データベース３ａに格納されたデータの内容との同期を行う。具体的に、情報処理装置１は、複写元データベース２ａを参照し、前回同期が行われてから現在までの間に複写元データベース２ａに対して行われたデータに対する操作の内容を示すログ（以下、差分ログとも呼ぶ）を取得する。そして、情報処理装置１は、取得した差分ログに含まれる複数のレコードが示す操作のそれぞれを、複写先データベース３ａに格納されたデータに対して行う。なお、以下、データに対する操作の内容には、データの追加、データの削除およびデータの更新が含まれるものとする。
【００１９】
ここで、情報処理装置１は、複写元データベース２ａに格納されたデータの内容と複写先データベース３ａに格納されたデータの内容との同期を、予め定められた時間内に行う必要がある場合がある。そのため、情報処理装置１は、例えば、複写先データベース３ａが列指向データベースである場合であっても、複写先データベース３ａに対する差分ログの内容（レコードの内容）の反映を短時間で行う必要がある場合がある。
【００２０】
これに対し、情報処理装置１では、例えば、複写先データベース３ａに格納されたデータの更新を行うための複数の操作が纏めて行われる場合、複数の操作のうち、データの整合性を確保するために複写先データベース３ａに対して最低限行う必要がある操作の特定を行う。これにより、情報処理装置１は、複数の操作の全てを複写先データベース３ａに対して行う必要がなくなり、データの更新に要する時間を短縮することが可能になる。
【００２１】
しかしながら、複写先データベース３ａに対して最低限行う必要がある操作を特定するための処理負担（例えば、情報処理装置１において動作するＣＰＵの処理負担）が大きい場合、情報処理装置１において並行して行われる他の処理に遅延等の影響が及ぶ可能性がある。
【００２２】
そこで、本実施の形態における情報処理装置１のＣＰＵは、差分ログに含まれる複数のレコードをＣＰＵ（情報処理装置１のプロセッサ）と異なるプロセッサである特定のプロセッサに読み込ませる。
【００２３】
そして、情報処理装置１の特定のプロセッサは、複写先データベース３ａのプライマリーキーごとに、差分ログに含まれる複数のレコードから、複写先データベース３ａに格納されたデータの削除を行う操作を示すレコード（以下、削除レコードとも呼ぶ）をレコードの生成が早い順に探索する。また、情報処理装置１の特定のプロセッサは、複写先データベース３ａのプライマリーキーごとに、差分ログに含まれる複数のレコードから、複写先データベース３ａに格納されたデータの追加を行う操作を示すレコード（以下、追加レコードとも呼ぶ）をレコードの生成が遅い順に探索する。
【００２４】
具体的に、特定のプロセッサは、データの更新に対応するレコードが、データの削除に対応するレコード（更新前のデータの削除に対応するレコード）とデータの追加に対応するレコード（更新後のデータの追加に対応するレコード）とをそれぞれ含むものとして取り扱う。そのため、特定のプロセッサでは、削除レコードおよび追加レコードのそれぞれに、データの更新に対応するレコードを含める。したがって、特定のプロセッサは、データの削除およびデータの更新に対応するレコードを削除レコードとして複数のレコードの探索を行う。また、特定のプロセッサは、データの追加およびデータの更新に対応するレコードを追加レコードとして複数のレコードの探索を行う。
【００２５】
その後、情報処理装置１のＣＰＵは、最初に探索されたプライマリーキーごとの削除レコードと追加レコードとに基づき、複写先データベース３ａに対する複数のレコードの反映を行う。
【００２６】
すなわち、情報処理装置１では、差分ログに含まれる複数のレコードを複写先データベース３ａに反映する際に行われる処理のうち、削除レコードおよび追加レコードの探索をＣＰＵと異なる特定のプロセッサに行わせる。
【００２７】
これにより、情報処理装置１は、ＣＰＵが実行する他の処理に対する影響を抑えながら、差分ログに含まれる複数のレコードが示す内容を複写先データベース３ａに反映することが可能になる。
【００２８】
また、情報処理装置１（特定のプロセッサ）は、特定のプライマリーキーに対応する削除レコードが複数存在する場合、特定のプライマリーキーに対応する削除レコードの１つのみを複写先データベース３ａに反映させることによって、複写先データベース３ａから、特定のプライマリーキーに対応する最初の状態のデータを削除することが可能になる。そのため、情報処理装置１は、例えば、特定のプライマリーキーに対応する削除レコードのうち、生成順が最も早い削除レコードのみを複写先データベース３ａに反映することで、生成順が最も早い削除レコード以外の削除レコードの反映を行う必要がなくなる。
【００２９】
さらに、情報処理装置１は、特定のプライマリーキーに対応する追加レコードが複数存在する場合、特定のプライマリーキーに対応する追加レコードのうち、最後の追加レコードのみを複写先データベース３ａに反映させることによって、複写先データベース３ａの状態を、特定のプライマリーキーに対応する追加レコードの全てを反映させた場合と同じ状態にすることが可能になる。そのため、情報処理装置１は、生成順が最も遅い追加レコードのみを複写先データベース３ａに反映することで、生成順が最も遅い追加レコード以外の追加レコードの反映を行う必要がなくなる。
【００３０】
これにより、情報処理装置１は、差分ログの内容を複写先データベース３ａに反映させる際に、差分ログに含まれる複数のレコードの全てを複写先データベース３ａに対して反映する必要がなくなる。そのため、情報処理装置１は、差分ログの内容の複写先データベース３ａに対する反映に要する処理負担（特定のプロセッサの処理負担）を軽減させることが可能になる。
【００３１】
なお、特定のプロセッサがパイプライン処理を高速に行うことが可能なプロセッサ（例えば、アクセラレータの一種であるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ））である場合、特定のプロセッサは、削除レコードおよび追加レコードの探索を、プライマリーキーごとのパイプライン処理によってそれぞれ高速に行うことが可能になる。
【００３２】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図２は、情報処理装置１のハードウエア構成を示す図である。
【００３３】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２（以下、第１メモリ１０２とも呼ぶ）と、外部インターフェース（以下、Ｉ／Ｏユニットとも呼ぶ）１０３と、記憶媒体１０４と、アクセラレータ１０５と、メモリ１０６（以下、第２メモリ１０６とも呼ぶ）を有する。各部は、バス１０７を介して互いに接続される。なお、以下、特定のプロセッサがアクセラレータ１０５であるものとして説明を行う。
【００３４】
記憶媒体１０４は、例えば、記憶媒体１０４内のプログラム格納領域（図示しない）に、差分ログに含まれる複数のレコードを複写先データベース３ａに反映する処理（以下、ＤＢ反映処理とも呼ぶ）を行うためのプログラム１１０を記憶する。また、記憶媒体１０４は、例えば、ＤＢ反映処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。
【００３５】
ＣＰＵ１０１は、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働してＤＢ反映処理を行う。
【００３６】
アクセラレータ１０５は、ＣＰＵ１０１が実行する処理の一部を分担して担うプロセッサであり、プログラム１１０の実行時に、プログラム１１０（例えば、プログラム１１０の一部）を記憶媒体１０４からメモリ１０６にロードし、プログラム１１０と協働してＤＢ反映処理（例えば、ＤＢ反映処理の一部）を行う。具体的に、アクセラレータ１０５は、例えば、ＦＰＧＡやＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等であってよい。
【００３７】
また、外部インターフェース１０３は、例えば、複写元データベース２ａおよび複写先データベース３ａと通信を行う。
【００３８】
［情報処理システムの機能］
次に、情報処理システム１０の機能について説明する。図３は、情報処理装置１の機能ブロック図である。
【００３９】
情報処理装置１のＣＰＵ１０１は、プログラム１１０と協働することにより、例えば、差分ログ取得部１１１と、ログ管理部１１２と、レコード格納部１１３と、レコード反映部１１４として動作する。また、情報処理装置１のアクセラレータ１０５は、プログラム１１０と協働することにより、例えば、レコード探索部１２１として動作する。さらに、情報格納領域１３０には、例えば、差分ログ１３１と、第１生成順情報１３２と、第２生成順情報１３３とが記憶される。
【００４０】
ＣＰＵ１０１の差分ログ取得部１１１は、例えば、定期的なタイミングで複写元データベース２ａから差分ログ１３１を取得する。具体的に、複写先データベース３ａに格納されたデータの解析が１日１回行われる場合、差分ログ取得部１１１は、複写元データベース２ａからの差分ログ１３１の取得を１日１回行うものであってよい。そして、ＣＰＵ１０１のログ管理部１１２は、例えば、差分ログ取得部１１１が取得した差分ログ１３１を情報格納領域１３０に記憶する。
【００４１】
ＣＰＵ１０１のレコード格納部１１３は、差分ログ１３１をＣＰＵ１０１と異なるプロセッサであるアクセラレータ１０５に読み込ませる。具体的に、レコード格納部１１３は、例えば、アクセラレータ１０５がアクセス可能なメモリ１０６に差分ログ１３１を記憶する。
【００４２】
アクセラレータ１０５のレコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、メモリ１０６に記憶された差分ログ１３１に含まれる複数のレコードから、レコードの生成が早い順に削除レコードの探索を行う。そして、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、差分ログ１３１に含まれる複数のレコードにおいて最初に探索された削除レコードをそれぞれ特定する。
【００４３】
また、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、例えば、メモリ１０６に記憶された差分ログ１３１に含まれる複数のレコードから、レコードの生成が遅い順に追加レコードの探索を行う。そして、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、差分ログ１３１に含まれる複数のレコードにおいて最初に探索された追加レコードをそれぞれ特定する。
【００４４】
さらに、レコード探索部１２１は、例えば、特定した削除レコードと追加レコードを示す情報を第１メモリ１０２に記憶する。具体的に、レコード探索部１２１は、特定した削除レコードを示す情報である第１生成順情報１３２と、特定した追加レコードを示す情報である第２生成順情報１３３とを第１メモリ１０２に記憶する。なお、レコード探索部１２１は、例えば、第１生成順情報１３２と第２生成順情報１３３とを情報格納領域１３０に記憶するものであってもよい。
【００４５】
その後、ＣＰＵ１０１のレコード反映部１１４は、レコード探索部１２１によって第１メモリ１０２に記憶された情報が示す削除レコードと追加レコードとに基づき、複写先データベース３ａに対する複数のレコードの反映を行う。
【００４６】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明を行う。図４は、第１の実施の形態におけるＤＢ反映処理の概略を説明するフローチャート図である。図５は、第１の実施の形態におけるＤＢ反映処理の概略を説明する図である。図５を参照しながら、図４に示す第１の実施の形態におけるＤＢ反映処理の概略について説明を行う。
【００４７】
情報処理装置１は、図４に示すように、差分反映タイミングまで待機する（Ｓ１のＮＯ）。差分反映タイミングは、例えば、複写元データベース２ａに格納されたデータの内容と複写先データベース３ａに格納されたデータの内容との同期を行うタイミングである。そして、差分反映タイミングになった場合（Ｓ１のＹＥＳ）、情報処理装置１は、図５に示すように、差分ログ１３１に含まれる複数のレコードをＣＰＵ１０１と異なるプロセッサであるアクセラレータ１０５に読み込ませる（Ｓ２）。
【００４８】
すなわち、情報処理装置１では、差分ログに含まれる複数のレコードを複写先データベース３ａに反映する際に行われる処理のうち、処理負担の大きい削除レコードおよび追加レコードの探索をアクセラレータ１０５に行わせる。
【００４９】
これにより、情報処理装置１は、ＣＰＵ１０１が実行する他の処理に対する影響を抑えながら、差分ログ１３１に含まれる複数のレコードが示す内容を複写先データベース３ａに反映することが可能になる。
【００５０】
続いて、情報処理装置１は、図５に示すように、アクセラレータ１０５において、複写先データベース３ａのプライマリーキーごとに、差分ログ１３１に含まれる複数のレコードから、レコードの生成順が早い順に削除レコードの探索を行う（Ｓ３）。また、情報処理装置１は、図５に示すように、アクセラレータ１０５において、複写先データベース３ａのプライマリーキーごとに、差分ログ１３１に含まれる複数のレコードから、レコードの生成順が遅い順に追加レコードの探索を行う（Ｓ４）。
【００５１】
その後、情報処理装置１は、図５に示すように、Ｓ３およびＳ４の処理で最初に探索されたプライマリーキーごとの削除レコードと追加レコードとに基づき、複写先データベース３ａに対する複数のレコードの反映を行う（Ｓ５）。
【００５２】
すなわち、情報処理装置１（アクセラレータ１０５）は、特定のプライマリーキーに対応する削除レコードが複数存在する場合、特定のプライマリーキーに対応する削除レコードの１つのみを複写先データベース３ａに反映させることによって、複写先データベース３ａから、特定のプライマリーキーに対応する最初の状態のデータを削除することが可能になる。そのため、情報処理装置１は、例えば、特定のプライマリーキーに対応する削除レコードのうち、生成順が最も早い削除レコードのみを複写先データベース３ａに反映することで、生成順が最も早い削除レコード以外の削除レコードの反映を行う必要がなくなる。
【００５３】
また、情報処理装置１は、特定のプライマリーキーに対応する追加レコードが複数存在する場合、特定のプライマリーキーに対応する追加レコードのうち、最後の追加レコードのみを複写先データベース３ａに反映させることによって、複写先データベース３ａの状態を、特定のプライマリーキーに対応する追加レコードの全てを反映させた場合と同じ状態にすることが可能になる。そのため、情報処理装置１は、生成順が最も遅い追加レコードのみを複写先データベース３ａに反映することで、生成順が最も遅い追加レコード以外の追加レコードの反映を行う必要がなくなる。
【００５４】
これにより、情報処理装置１は、差分ログの内容を複写先データベース３ａに反映させる際に、差分ログに含まれる複数のレコードの全てを複写先データベース３ａに対して反映する必要がなくなる。そのため、情報処理装置１は、差分ログの内容の複写先データベース３ａに対する反映に要する処理負担を軽減させることが可能になる。
【００５５】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図６から図１１は、第１の実施の形態におけるＤＢ反映処理の詳細を説明するフローチャート図である。また、図１２から図１７は、第１の実施の形態におけるＤＢ反映処理の詳細を説明する図である。図１２から図１７を参照しながら、図６から図１１に示すＤＢ反映処理の詳細を説明する。
【００５６】
［差分ログ取得処理］
初めに、複写元データベース２ａから差分ログ１３１を取得する処理（以下、差分ログ取得処理）について説明を行う。図６は、差分ログ取得処理を説明するフローチャート図である。
【００５７】
ＣＰＵ１０１の差分ログ取得部１１１は、差分ログ取得タイミングになるまで待機する（Ｓ１０１のＮＯ）。差分ログ取得タイミングは、例えば、複写元データベース２ａに格納されたデータの内容と複写先データベース３ａに格納されたデータの内容との同期が行われるタイミングよりも前のタイミングである。具体的に、差分ログ取得タイミングは、例えば、事業者が予め定めたタイミングであってよい。
【００５８】
そして、差分ログ取得タイミングになった場合（Ｓ１０１のＹＥＳ）、差分ログ取得部１１１は、複写元データベース２ａから差分ログ１３１を取得する（Ｓ１０２）。そして、ＣＰＵ１０１のログ管理部１１２は、Ｓ１２の処理で取得した差分ログ１３１を情報格納領域１３０に記憶する（Ｓ１０３）。以下、差分ログ１３１の具体例について説明を行う。
【００５９】
［差分ログの具体例］
図１２は、差分ログ１３１の具体例を説明する図である。図１２に示す差分ログ１３１は、複写先データベース３ａに記憶されたレコードのうち、操作を行うデータが含まれるレコードを特定するためのプライマリーキーとなる項目を示す「項目Ｐ」と、データに対する操作の内容を示す「操作の内容」とを項目として有する。「操作の内容」には、データ（レコード）の追加を示す「ＩＮＳＥＲＴ」、データの更新を示す「ＵＰＤＡＴＥ」、または、データ（レコード）の削除を示す「ＤＥＬＥＴＥ」が設定される。
【００６０】
さらに、図１２に示す差分ログ１３１は、各レコードに含まれる各データに対応する項目を示す「項目Ｘ」および「項目Ｙ」を項目として有する。「項目Ｘ」および「項目Ｙ」には、「操作の内容」に「ＤＥＬＥＴＥ」が設定されている場合、削除が行われるレコードの内容が設定され、「操作の内容」に「ＩＮＳＥＲＴ」が設定されている場合、追加が行われるレコードの内容が設定される。また、「項目Ｘ」および「項目Ｙ」には、「操作の内容」に「ＵＰＤＡＴＥ」が設定されている場合、更新後のデータを含むレコードの内容が設定される。
【００６１】
具体的に、図１２に示す差分ログ１３１には、例えば、「項目Ｐ」が「Ａ１」であり、「操作の内容」が「ＩＮＳＥＲＴ」であり、「項目Ｘ」が「１００」であり、「項目Ｙ」が「１０」であるレコードが含まれている。また、図１２に示す差分ログ１３１には、例えば、「項目Ｐ」が「Ａ１」であり、「操作の内容」が「ＵＰＤＡＴＥ」であり、「項目Ｘ」が「１０」であり、「項目Ｙ」が「１０」であるレコードが含まれている。図１２に含まれる他のレコードについては説明を省略する。
【００６２】
なお、複写先データベース３ａに格納されるレコードのプライマリーキーが複数存在する場合、図１２に示す差分ログ１３１には、存在するプライマリーキーの組合せに対応する数の「項目Ｐ」が含まれるものであってよい。
【００６３】
［ＣＰＵにおけるＤＢ反映処理（１）］
次に、ＤＢ反映処理のうちのＣＰＵ１０１が行う処理について説明を行う。図７は、ＤＢ反映処理のうちのＣＰＵ１０１が行う処理を説明するフローチャート図である。
【００６４】
ＣＰＵ１０１のレコード格納部１１３は、図７に示すように、差分反映タイミングまで待機する（Ｓ１１のＮＯ）。そして、差分反映タイミングになった場合（Ｓ１１のＹＥＳ）、レコード格納部１１３は、情報格納領域１３０に記憶された差分ログ１３１を取得する（Ｓ１２）。
【００６５】
続いて、レコード格納部１１３は、Ｓ１２の処理で取得した差分ログ１３１に含まれる複数のレコードのそれぞれに、各レコードの生成順を付加する（Ｓ１３）。具体的に、レコード格納部１１３は、例えば、Ｓ１０２の処理で取得された差分ログ１３１に含まれる各レコードが生成順に整列している場合、各レコードの整列順に従って生成順を付加するものであってよい。また、レコード格納部１１３は、例えば、差分ログ１３１に各レコードの生成時刻が含まれている場合、その生成時刻に従って生成順を付加するものであってよい。以下、生成順が付加された差分ログ１３１の具体例について説明を行う。
【００６６】
［生成順が付加された差分ログの具体例］
図１３は、生成順が付加された差分ログ１３１の具体例を説明する図である。図１３に示す差分ログ１３１は、図１２で説明した各項目に加え、差分ログ１３１に含まれる各レコードの生成順を示す「生成順」を項目として有する。
【００６７】
具体的に、図１３に示す差分ログ１３１において、例えば、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＩＮＳＥＲＴ」であるレコードには、「生成順」として「１」が付加されている。また、図１３に示す差分ログ１３１において、例えば、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＵＰＤＡＴＥ」であるレコードには、「生成順」として「２」が付加されている。図１３に含まれる他のレコードについては説明を省略する。
【００６８】
図７に戻り、レコード格納部１１３は、Ｓ１３の処理で生成順を付加した複数のレコードを、アクセラレータ１０５がアクセス可能な第２メモリ１０６に格納する。また、レコード格納部１１３は、この場合、差分ログ１３１のプライマリーキーを示す情報（例えば、図１３に示す差分ログ１３１の「項目Ｐ」に設定された情報）を合わせて第２メモリ１０６に格納する（Ｓ１４）。
【００６９】
これにより、情報処理装置１は、アクセラレータ１０５にＤＢ反映処理の一部を行わせることが可能になる。以下、アクセラレータ１０５におけるＤＢ反映処理について説明を行う。なお、図７におけるＳ１５およびＳ１６の処理については後述する。
【００７０】
［アクセラレータにおけるＤＢ反映処理］
図８から図１１は、ＤＢ反映処理のうちのアクセラレータ１０５が行う処理を説明するフローチャート図である。
【００７１】
アクセラレータ１０５のレコード探索部１２１は、差分ログ１３１に含まれる複数のレコードおよび差分ログ１３１のプライマリーキーを示す情報が第２メモリ１０６に格納されるまで待機する（Ｓ２１のＮＯ）。
【００７２】
そして、複数のレコード等が第２メモリ１０６に格納された場合（Ｓ２１のＹＥＳ）、レコード探索部１２１は、第２メモリ１０６に格納された差分ログ１３１に含まれる複数のレコードから、プライマリーキー、データに対する操作の内容およびレコードの生成順を含む複数の部分レコードを抽出する（Ｓ２２）。すなわち、レコード探索部１２１は、削除レコードおよび追加レコードの探索を行うための最低限必要な情報のみからなる部分レコードの抽出を行う。
【００７３】
これにより、レコード探索部１２１は、削除レコードおよび追加レコードの探索に要する処理負担を抑制することが可能になる。以下、部分レコードの具体例について説明を行う。
【００７４】
［部分レコードの具体例］
図１４は、部分レコードの具体例を説明する図である。図１４に示す部分レコードは、図１３で説明した差分ログ１３１に含まれる項目のうち、「生成順」と「項目Ｐ」と「操作の内容」とを項目として有する。
【００７５】
具体的に、図１４に示す部分レコードにおいて、例えば、「生成順」が「１」である情報には、「項目Ｐ」として「Ａ１」が設定され、「操作の内容」として「ＩＮＳＥＲＴ」が設定されている。また、図１４に示す部分レコードにおいて、例えば、「生成順」が「４」である情報には、「項目Ｐ」として「Ｂ１」が設定され、「操作の内容」として「ＤＥＬＥＴＥ」が設定されている。図１４に含まれる他のレコードについては説明を省略する。
【００７６】
なお、部分レコードの抽出を行う処理（Ｓ２２）は、ＣＰＵ１０１によって行われるものであってもよい。この場合、ＣＰＵ１０１は、抽出した部分レコードを第２メモリ１０６に格納し、アクセラレータ１０５は、第２メモリ１０６に格納された部分レコードを取得して後続処理を行うものであってよい。
【００７７】
図８に戻り、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、Ｓ２２の処理で抽出した複数の部分レコードから、レコードの生成が早い順に削除レコードを探索し、第１生成順情報１３２を特定する（Ｓ２３）。第１生成順情報１３２は、探索された削除レコードのそれぞれに含まれる生成順を示す情報である。
【００７８】
また、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、Ｓ２２の処理で抽出した複数の部分レコードから、レコードの生成が遅い順に追加レコードを探索し、第２生成順情報１３３を特定する（Ｓ２４）。第２生成順情報１３３は、探索された追加レコードのそれぞれに含まれる生成順を示す情報である。以下、Ｓ２３およびＳ２４の処理の詳細について説明を行う。
【００７９】
［Ｓ２３の処理の詳細］
初めに、Ｓ２３の処理の詳細について説明を行う。図９は、Ｓ２３の処理の詳細を説明するフローチャート図である。
【００８０】
レコード探索部１２１は、図９に示すように、ＣＰＵ１０１によって第２メモリ１０６に格納されたプライマリーキーを示す情報を参照し、差分ログ１３１のプライマリーキーを１つ特定する（Ｓ３１）。
【００８１】
そして、レコード探索部１２１は、プライマリーキーがＳ３１の処理で特定したプライマリーキーであって、操作の内容がＵＰＤＡＴＥまたはＤＥＬＥＴＥである部分レコードが最初に特定されるまで、Ｓ２２の処理で抽出した複数の部分レコードを生成順に探索する（Ｓ３２）。
【００８２】
具体的に、図１４で説明した部分レコードにおいて、「項目Ｐ」が「Ａ１」であるレコードであって「操作の内容」が「ＵＰＤＡＴＥ」または「ＤＥＬＥＴＥ」であるレコードのうち、「生成順」に設定された値が最も小さいレコードは、「生成順」が「２」であるレコードである。そのため、レコード探索部１２１は、Ｓ３１の処理において「Ａ１」を特定した場合、「生成順」が「２」であるレコードを特定する。すなわち、レコード探索部１２１は、この場合、「生成順」が「１」および「２」であるレコードのみについて参照を行い、「生成順」に「３」よりも大きい値が設定されているレコードの参照を行わない。
【００８３】
その後、レコード探索部１２１は、Ｓ３２の処理において部分レコードの特定が行われた場合（Ｓ３３のＹＥＳ）、Ｓ３２の処理で特定された部分レコードの生成順を第１生成順情報１３２として特定する（Ｓ３４）。一方、レコード探索部１２１は、Ｓ３２の処理において部分レコードの特定が行われなかった場合（Ｓ３３のＮＯ）、Ｓ３４の処理を行わない。
【００８４】
具体的に、例えば、Ｓ３２の処理において「生成順」が「２」であるレコードが特定された場合、レコード探索部１２１は、第１生成順情報１３２として「２」を特定する。
【００８５】
そして、レコード探索部１２１は、Ｓ３１の処理において複数の部分レコードに含まれるプライマリーキーを全てが特定済である場合（Ｓ３５のＹＥＳ）、Ｓ２３の処理を終了する。一方、レコード探索部１２１は、Ｓ３１の処理において複数の部分レコードに含まれるプライマリーキーを全てが特定済でない場合（Ｓ３５のＮＯ）、Ｓ３１以降の処理を再度行う。
【００８６】
［Ｓ２４の処理の詳細］
次に、Ｓ２４の処理の詳細について説明を行う。図１０は、Ｓ２４の処理の詳細を説明するフローチャート図である。
【００８７】
レコード探索部１２１は、図１０に示すように、Ｓ３１の処理と同様に、ＣＰＵ１０１によって第２メモリ１０６に格納されたプライマリーキーを示す情報を参照し、差分ログ１３１のプライマリーキーを１つ特定する（Ｓ４１）。
【００８８】
そして、レコード探索部１２１は、プライマリーキーがＳ４１の処理で特定したプライマリーキーである部分レコードが最初に特定されるまで、Ｓ２２の処理で抽出した複数の部分レコードを生成順と反対の順に探索する（Ｓ４２）。すなわち、レコード探索部１２１は、追加レコードの探索を行う場合、削除レコードの探索を行う場合と異なり、「操作の内容」に設定された情報に依らず、プライマリーキーがＳ４１の処理で特定したプライマリーキーである最初の部分レコードの特定を行う。
【００８９】
具体的に、図１４で説明した部分レコードにおいて、「項目Ｐ」が「Ｂ１」であるレコードのうち、「生成順」に設定された値が最も大きいレコードは、「生成順」が「６」であるレコードである。そのため、レコード探索部１２１は、Ｓ４１の処理で特定した「項目Ｐ」が「Ｂ１」である場合、「生成順」が「６」であるレコードを特定する。すなわち、レコード探索部１２１は、この場合、「生成順」が「８」から「６」であるレコードのみについて参照を行い、「生成順」に「５」よりも小さい値が設定されているレコードの参照を行わない。
【００９０】
その後、レコード探索部１２１は、Ｓ４２の処理において部分レコードの特定が行われた場合（Ｓ４３のＹＥＳ）、特定された部分レコードの「操作の内容」に設定された情報が「ＤＥＬＥＴＥ」であるか否かの判定を行う（Ｓ４４）。そして、特定された部分レコードの「操作の内容」に設定された情報が「ＤＥＬＥＴＥ」でない場合（Ｓ４４のＮＯ）、レコード探索部１２１は、Ｓ４１の処理で特定された部分レコードの生成順を第２生成順情報１３３として特定する（Ｓ４５）。一方、レコード探索部１２１は、Ｓ４２の処理において部分レコードの特定が行われなかった場合（Ｓ４３のＮＯ）、Ｓ４４およびＳ４５の処理を行わない。
【００９１】
さらに、レコード探索部１２１は、Ｓ４２の処理において特定された部分レコードの「操作の内容」に設定された情報が「ＤＥＬＥＴＥ」である場合（Ｓ４４のＹＥＳ）、Ｓ４４およびＳ４５の処理を行わない。
【００９２】
すなわち、「操作の内容」が「ＵＰＤＡＴＥ」または「ＩＮＳＥＲＴ」であるレコードが存在する場合であっても、存在したレコードよりも後に「項目Ｐ」に設定されたプライマリーキーが同じであって「操作の内容」が「ＤＥＬＥＴＥ」であるレコードが存在する場合、レコード探索部１２１は、「操作の内容」が「ＵＰＤＡＴＥ」または「ＩＮＳＥＲＴ」であるレコードを複写先データベース３ａに反映させる必要がない。
【００９３】
具体的に、図１４で説明した部分レコードには、例えば、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」であるレコード（「生成順」が「１」および「２」であるレコード）が存在する。しかしながら、図１４で説明した部分レコードには、これらのレコードの後に、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＤＥＬＥＴＥ」であるレコード（「生成順」が「７」であるレコード）が存在する。そのため、レコード探索部１２１は、この場合、「項目Ｐ」が「Ａ１」であるレコードが最終的に削除されるため、「項目Ｐ」が「Ａ１」であるレコードのそれぞれ（「生成順」が「１」、「２」および「７」）であるレコードを複写先データベース３ａに反映させる必要がないと判定する。
【００９４】
一方、図１４で説明した部分レコードには、例えば、「項目Ｐ」が「Ｂ１」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」であるレコード（「生成順」が「６」であるレコード）が存在する。そして、図１４で説明した部分レコードには、これらのレコードの後に、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＤＥＬＥＴＥ」であるレコードが存在しない。そのため、レコード探索部１２１は、この場合、「６」を第２生成順情報１３３として特定する。
【００９５】
図１０に戻り、レコード探索部１２１は、Ｓ４１の処理において複数の部分レコードに含まれるプライマリーキーを全てが特定済である場合（Ｓ４６のＹＥＳ）、Ｓ２４の処理を終了する。一方、レコード探索部１２１は、Ｓ４１の処理において複数の部分レコードに含まれるプライマリーキーを全てが特定済でない場合（Ｓ４６のＮＯ）、Ｓ４１以降の処理を再度行う。
【００９６】
これにより、アクセラレータ１０５は、Ｓ１２の処理で取得された差分ログ１３１の内容を複写先データベース３ａに反映させる際に、差分ログ１３１に含まれる複数のレコードが示す操作の全てを行う必要がなくなる。そのため、アクセラレータ１０５は、差分ログ１３１の内容の複写先データベース３ａに反映する際に要する処理負担を軽減させることが可能になる。
【００９７】
［ＦＧＰＡによるＳ２３およびＳ２４の処理の具体例］
次に、アクセラレータ１０５がＦＰＧＡである場合のＤＢ反映処理の具体例について説明を行う。図１５から図１７は、ＦＰＧＡによるＳ２３およびＳ２４の処理の具体例を説明する図である。
【００９８】
図１５に示すＦＰＧＡは、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードを探索するフィルタ１０５ａと、「項目Ｐ」が「Ａ２」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードを探索するフィルタ１０５ｂとを有する。また、図１５に示すＦＰＧＡは、「項目Ｐ」が「Ｂ１」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードを探索するフィルタ１０５ｃと、「項目Ｐ」が「Ｂ２」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードを探索するフィルタ１０５ｄとを有する。
【００９９】
さらに、図１５に示すＦＰＧＡは、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」である追加レコードを探索するフィルタ１０５ｅと、「項目Ｐ」が「Ａ２」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」である追加レコードを探索するフィルタ１０５ｆとを有する。また、図１５に示すＦＰＧＡは、「項目Ｐ」が「Ｂ１」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」である追加レコードを探索するフィルタ１０５ｇと、「項目Ｐ」が「Ｂ２」であって「操作の内容」が「ＩＮＳＥＲＴ」または「ＵＰＤＡＴＥ」である追加レコードを探索するフィルタ１０５ｈとを有する。
【０１００】
すなわち、図１５に示すＦＰＧＡは、図１４で説明した部分レコードのプライマリーキーごとに、削除レコードをパイプライン処理によって探索するためのフィルタと追加レコードをパイプライン処理によって探索するためのフィルタとをそれぞれ有する。また、図１５に示すＦＰＧＡは、削除レコードの探索と追加レコードの探索とを並行して行う。
【０１０１】
具体的に、図１５に示すＦＰＧＡは、削除レコードの探索を行う場合、図１４で説明した部分レコードを生成順にフィルタ１０５ａに入力し、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードの探索を行わせる。そして、フィルタ１０５ａは、図１６に示すように、条件に合致する最初の削除レコードの「生成順」に設定された値である「２」を第１生成順情報１３２として出力する。
【０１０２】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｂに入力し、「項目Ｐ」が「Ａ２」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードの探索を行わせる。そして、フィルタ１０５ｂは、図１６に示すように、条件に合致する最初の削除レコードの「生成順」に設定された値である「３」を第１生成順情報１３２として出力する。
【０１０３】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｃに入力し、「項目Ｐ」が「Ｂ１」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードの探索を行わせる。そして、フィルタ１０５ｃは、図１６に示すように、条件に合致する最初の削除レコードの「生成順」に設定された値である「４」を第１生成順情報１３２として出力する。
【０１０４】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｄに入力し、「項目Ｐ」が「Ｂ２」であって「操作の内容」が「ＤＥＬＥＴＥ」または「ＵＰＤＡＴＥ」である削除レコードの探索を行わせる。そして、フィルタ１０５ｄは、条件に合致する削除レコードが存在しないため、第１生成順情報１３２の出力を行わない。
【０１０５】
また、図１５に示すＦＰＧＡは、追加レコードの探索を行う場合、図１４で説明した部分レコードを生成順にフィルタ１０５ｅに入力し、「項目Ｐ」が「Ａ１」であるレコードの探索を行わせる。そして、フィルタ１０５ｅは、「項目Ｐ」が「Ａ１」であって「操作の内容」が「ＤＥＬＥＴＥ」であるレコードを最初に特定し、第２生成順情報１３３の出力を行わない。
【０１０６】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｆに入力し、「項目Ｐ」が「Ａ２」であるレコードの探索を行わせる。そして、フィルタ１０５ｆは、図１７に示すように、「項目Ｐ」が「Ａ２」であって「操作の内容」が「ＵＰＤＡＴＥ」であるレコードを最初に特定し、特定したレコードの「生成順」に設定された値である「８」を第２生成順情報１３３として出力する。
【０１０７】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｇに入力し、「項目Ｐ」が「Ｂ１」であるレコードの探索を行わせる。そして、フィルタ１０５ｇは、図１７に示すように、「項目Ｐ」が「Ｂ１」であって「操作の内容」が「ＩＮＳＥＲＴ」であるレコードを最初に特定し、特定したレコードの「生成順」に設定された値である「６」を第２生成順情報１３３として出力する。
【０１０８】
続いて、図１５に示すＦＰＧＡは、図１４で説明した部分レコードを生成順にフィルタ１０５ｈに入力し、「項目Ｐ」が「Ｂ２」であるレコードの探索を行わせる。そして、フィルタ１０５ｈは、図１７に示すように、「項目Ｐ」が「Ｂ２」であって「操作の内容」が「ＩＮＳＥＲＴ」であるレコードを最初に特定し、特定したレコードの「生成順」に設定された値である「５」を第２生成順情報１３３として出力する。
【０１０９】
これにより、アクセラレータ１０５は、差分ログ１３１の内容の複写先データベース３ａに反映する際に要する処理負担をより軽減させることが可能になる。
【０１１０】
図８に戻り、レコード探索部１２１は、例えば、Ｓ２３の処理で特定した第１生成順情報１３２と、Ｓ２４で特定した第２生成順情報１３３とを第１メモリ１０２に格納する（Ｓ２５）。
【０１１１】
具体的に、図１４で説明した部分レコードに対してＳ２３およびＳ２４の処理が行われた場合、レコード探索部１２１は、第１生成順情報１３２として「２」、「３」および「４」を第１メモリ１０２に格納する。また、レコード探索部１２１は、この場合、第２生成順情報１３３として「８」、「６」および「５」を第１メモリ１０２に格納する。以下、ＣＰＵ１０１におけるＤＢ反映処理のうち、Ｓ１５およびＳ１６の処理について説明を行う。
【０１１２】
［ＣＰＵにおけるＤＢ反映処理（２）］
ＣＰＵ１０１のレコード反映部１１４は、図７に示すように、アクセラレータ１０５が行ったＤＢ反映処理によって出力された第１生成順情報１３２と第２生成順情報１３３が第１メモリ１０２に格納されるまで待機する（Ｓ１５のＮＯ）。
【０１１３】
そして、第１生成順情報１３２と第２生成順情報１３３が第１メモリ１０２に格納された場合（Ｓ１５のＹＥＳ）、レコード反映部１１４は、第１メモリ１０２に格納された第１生成順情報１３２と第２生成順情報１３３とに基づき、複写先データベース３ａに対する複数のレコードの反映を行う（Ｓ１６）。以下、Ｓ１６の処理の詳細について説明を行う。
【０１１４】
［Ｓ１６の処理の詳細］
図１１は、Ｓ１６の処理の詳細を説明するフローチャート図である。
【０１１５】
レコード反映部１１４は、Ｓ１２の処理で取得した差分ログ１３１に含まれる複数のレコードのうち、Ｓ３４の処理で特定した第１生成順情報１３２に対応するレコードを、複写先データベース３ａから削除する（Ｓ５１）。
【０１１６】
また、レコード反映部１１４は、Ｓ１２の処理で取得した差分ログ１３１に含まれる複数のレコードのうち、Ｓ４４の処理で特定した第２生成順情報１３３に対応するレコードを、複写先データベース３ａに追加する（Ｓ５２）。
【０１１７】
これにより、情報処理装置１は、ＣＰＵ１０１が実行する他の処理への影響を抑えながら、差分ログ１３１に含まれる複数のレコードの複写先データベース３ａへの反映を行うことが可能になる。
【０１１８】
［第２の実施の形態］
次に、第２の実施の形態について説明する。第２の実施の形態におけるＤＢ反映処理において、情報処理装置１は、ＤＢ反映処理の一部をアクセラレータ１０５に行わせることなく、ＤＢ反映処理の全てをＣＰＵ１０１に行わせる。
【０１１９】
［第２の実施の形態における情報処理システムのハードウエア構成］
初めに、第２の実施の形態における情報処理システム１０のハードウエア構成について説明する。図１８は、第２の実施の形態における情報処理装置１のハードウエア構成を示す図である。
【０１２０】
第２の実施の形態における情報処理装置１は、ＣＰＵ１０１と、メモリ１０２と、外部インターフェース１０３と、記憶媒体１０４とを有する。各部は、バス１０７を介して互いに接続される。なお、第２の実施の形態における情報処理装置１は、第１の実施の形態における情報処理装置１と同様に、アクセラレータ１０５とメモリ１０６とを有するものであってもよい。
【０１２１】
［第２の実施の形態における情報処理システムの機能］
次に、第２の実施の形態における情報処理システム１０の機能について説明する。図１９は、第２の実施の形態における情報処理装置１の機能ブロック図である。
【０１２２】
第２の実施の形態における情報処理装置１のＣＰＵ１０１は、第１の実施の形態におけるＣＰＵ１０１と同様に、差分ログ取得部１１１と、ログ管理部１１２と、レコード格納部１１３と、レコード反映部１１４として動作する。また、第２の実施の形態における情報処理装置１のＣＰＵ１０１は、第１の実施の形態におけるＣＰＵ１０１と異なり、レコード探索部１１５としても動作する。レコード探索部１１５は、図３等で説明したレコード探索部１２１と同じ処理を行う。
【０１２３】
［第２の実施の形態におけるＤＢ反映処理］
次に、第２の実施の形態におけるＤＢ反映処理について説明を行う。図２０および図２１は、第２の実施の形態におけるＤＢ反映処理を説明するフローチャート図である。なお、第２の実施の形態における差分ログ取得処理は、第１の実施の形態における差分ログ取得処理と同じ処理であるため説明を省略する。
【０１２４】
レコード格納部１１３は、図２０に示すように、差分反映タイミングまで待機する（Ｓ２０１のＮＯ）。そして、差分反映タイミングになった場合（Ｓ２０１のＹＥＳ）、レコード格納部１１３は、情報格納領域１３０に記憶された差分ログ１３１を取得する（Ｓ２０２）。
【０１２５】
続いて、レコード格納部１１３は、Ｓ２０２の処理で取得した差分ログ１３１に含まれる複数のレコードのそれぞれに、各レコードの生成順を付加する（Ｓ２０３）。そして、レコード探索部１２１は、Ｓ２０３の処理で生成順を付加された各レコードから、プライマリーキー、データに対する操作の内容およびレコードの生成順を含む複数の部分レコードを抽出する（Ｓ２０４）。
【０１２６】
その後、レコード探索部１１５は、図２１に示すように、複写先データベース３ａのプライマリーキーごとに、Ｓ２０４の処理で抽出した複数の部分レコードから、レコードの生成が早い順に削除レコードを探索し、第１生成順情報１３２を特定する（Ｓ２１１）。また、レコード探索部１２１は、複写先データベース３ａのプライマリーキーごとに、Ｓ２０４の処理で抽出した複数の部分レコードから、レコードの生成が遅い順に追加レコードを探索し、第２生成順情報１３３を特定する（Ｓ２１２）。
【０１２７】
すなわち、第２の実施の形態におけるＤＢ反映処理において、情報処理装置１は、削除レコードの探索と追加レコードの探索とをＣＰＵ１０１に行わせる。
【０１２８】
そして、レコード反映部１１４は、Ｓ２１１およびＳ２１２の処理で特定された第１生成順情報１３２と第２生成順情報１３３とに基づき、複写先データベース３ａに対する複数のレコードの反映を行う（Ｓ２１３）。
【０１２９】
これにより、情報処理装置１は、例えば、アクセラレータ１０５を有しない場合であっても、差分ログ１３１の内容の複写先データベース３ａに対する反映に要する処理負担を軽減させることが可能になる。
【０１３０】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１３１】
（付記１）
コンピュータに、
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませ、
前記特定のプロセッサにおいて、データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
処理を実行させるレコード反映プログラム。
【０１３２】
（付記２）
付記１において、
前記特定のプロセッサは、パイプライン処理を行うプロセッサである、
レコード反映プログラム。
【０１３３】
（付記３）
付記１において、
前記特定のプロセッサは、アクセラレータである、
レコード反映プログラム。
【０１３４】
（付記４）
付記１において、
前記探索する処理では、前記複数のレコードから生成された前記プライマリーキー、データに対する操作の内容およびレコードの生成順を含む複数の部分レコードから、前記削除レコードおよび前記追加レコードの探索を行う、
レコード反映プログラム。
【０１３５】
（付記５） 
付記４において、
前記操作の内容は、前記データの削除、前記データの追加および前記データの更新を含み、
前記探索する処理では、
前記操作の内容が前記データの削除または前記データの更新である前記部分レコードが存在する場合、前記削除レコードが存在するものと判定し、
前記操作の内容が前記データの追加または前記データの更新である前記部分レコードが存在する場合、前記追加レコードが存在するものと判定する、
レコード反映プログラム。
【０１３６】
（付記６）
付記５において、
前記探索する処理では、特定のプライマリーキーについての前記追加レコードを探索する際に、前記操作の内容が前記データの追加または前記データの更新である前記部分レコードよりも先に、前記操作の内容が前記データの削除である前記部分レコードが探索された場合、前記特定のプライマリーキーについての前記追加レコードが存在しないものと判定する、
レコード反映プログラム。
【０１３７】
（付記７）
付記５において、
前記反映を行う処理では、
前記データベースに格納されたデータから、最初に探索された前記プライマリーキーごとの前記削除レコードが示すデータを削除し、
前記データベースに、最初に探索された前記プライマリーキーごとの前記追加レコードが示すデータを追加する、
レコード反映プログラム。
【０１３８】
（付記８）
付記７において、
前記探索する処理では、
前記削除レコードが存在するものと判定した場合、存在した前記削除レコードに対応する前記生成順を第１生成順として特定し、
前記追加レコードが存在するものと判定した場合、存在した前記追加レコードに対応する前記生成順を第２生成順として特定し、
前記反映を行う処理では、
前記複数のレコードのうち、特定した前記第１生成順に対応するレコードが示すデータを、前記データベースに格納されたデータから削除し、
前記複数のレコードのうち、特定した前記第２生成順に対応するレコードが示すデータを、前記データベースに追加する、
レコード反映プログラム。
【０１３９】
（付記９）
コンピュータに、
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
処理を実行させるレコード反映プログラム。
【０１４０】
（付記１０）
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませるレコード格納部と、
前記特定のプロセッサにおいて、前記データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索するレコード探索部と、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行うレコード反映部と、を有する、
レコード反映装置。
【０１４１】
（付記１１）
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索するレコード探索部と、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行うレコード反映部と、を有する、
レコード反映装置。
【０１４２】
（付記１２）
差分ログに含まれる複数のレコードを前記コンピュータのプロセッサと異なるプロセッサである特定のプロセッサに読み込ませ、
前記特定のプロセッサにおいて、前記データベースのプライマリーキーごとに、前記複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
レコード反映方法。
【０１４３】
（付記１３）
データベースのプライマリーキーごとに、差分ログに含まれる複数のレコードから、前記データベースに格納されたデータの削除を行う操作を示す削除レコードをレコードの生成が早い順に探索し、前記データの追加を行う操作を示す追加レコードをレコードの生成が遅い順に探索し、
最初に探索された前記プライマリーキーごとの前記削除レコードと前記追加レコードとに基づき、前記データベースに対する前記複数のレコードの反映を行う、
レコード反映方法。
【符号の説明】
【０１４４】
１：情報処理装置              ２：複写元処理装置
２ａ：複写元データベース      ３：複写先処理装置
３ａ：複写先データベース
【図１】
2018181042.tif 000003
【図２】
2018181042.tif 000004
【図３】
2018181042.tif 000005
【図４】
2018181042.tif 000006
【図５】
2018181042.tif 000007
【図６】
2018181042.tif 000008
【図７】
2018181042.tif 000009
【図８】
2018181042.tif 000010
【図９】
2018181042.tif 000011
【図１０】
2018181042.tif 000012
【図１１】
2018181042.tif 000013
【図１２】
2018181042.tif 000014
【図１３】
2018181042.tif 000015
【図１４】
2018181042.tif 000016
【図１５】
2018181042.tif 000017
【図１６】
2018181042.tif 000018
【図１７】
2018181042.tif 000019
【図１８】
2018181042.tif 000020
【図１９】
2018181042.tif 000021
【図２０】
2018181042.tif 000022
【図２１】
2018181042.tif 000023