(57)【特許請求の範囲】
【請求項１】
複数のノードを有するデータベースシステムであって、
前記複数のノードのうち、第一のノードは、
該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、
前記複数のノードのうち、前記第一のノードと異なる第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信手段と、
前記送信要求に応じて、前記ログ保持手段によって保持されている前記識別情報のうち、要求されたデータに係る、所定の時点におけるトランザクションログを示す特定識別情報を、前記第二のノードに送信する特定識別情報送信手段と、
少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、
前記送信要求に応じて、前記データベースによって管理されているデータのうち要求されたデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、
を備え、
前記第二のノードは、
ユーザー端末からの検索要求を受け付ける検索要求受付手段と、
前記検索要求に応じて、前記第一のノードに対して、前記データベース中の少なくとも前記検索要求に係るデータの前記送信要求を送信する要求送信手段と、
前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、
受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、前記検索応答手段による応答に用いた後、所定の条件に従って自動的に該第二のノードから削除する削除手段と、
を備える、
データベースシステム。
【請求項２】
前記削除手段は、前記データに関する処理に関する時点から所定時間経過した場合に、前記データを削除する、
請求項１に記載のデータベースシステム。
【請求項３】
前記第二のノードは、前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、該第二のノードにおける保持対象とするか否かを判定する判定手段を更に備え、
前記削除手段は、前記判定手段によって前記保持対象と判定されなかったデータを、前記所定の条件に従って自動的に削除する、
請求項１または２に記載のデータベースシステム。
【請求項４】
前記第二のノードは、前記判定手段によって前記保持対象と判定されたデータを、不揮発性の記憶装置に記録する記録手段を更に備える、
請求項３に記載のデータベースシステム。
【請求項５】
前記データ送信手段は、前記データを、前記トランザクションログに係る命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位毎に送信する、
請求項１から４の何れか一項に記載のデータベースシステム。
【請求項６】
受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータが収容された前記所定の管理単位と命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、
前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行する、
請求項５に記載のデータベースシステム。
【請求項７】
受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータと命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、
前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、命令の対象となるデータに対して実行する、
請求項１に記載のデータベースシステム。
【請求項８】
前記データ送信手段は、前記第一のノードのメモリに展開されてデータの検索または処理に供されている状態のデータを、前記第二のノードに送信する、
請求項１から７の何れか一項に記載のデータベースシステム。
【請求項９】
前記データ送信手段は、前記データベースの管理情報を、前記第二のノードに送信し、
前記要求送信手段は、前記管理情報を参照して、前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信する、
請求項１から８の何れか一項に記載のデータベースシステム。
【請求項１０】
前記第二のノードは、
前記第一のノードから受信したデータを直接メモリに展開して、データの検索または処理に供する展開手段を更に備え、
前記実行手段は、受信したデータが前記展開手段によってメモリに展開されたことを受けて、前記トランザクションログに係る命令を前記データに対して実行する、
請求項１から９の何れか一項に記載のデータベースシステム。
【請求項１１】
前記特定識別情報送信手段は、前記特定識別情報として、ログ保持手段によって保持されている前記識別情報のうち、最新のトランザクションログを示す識別情報を送信する、
請求項１から１０の何れか一項に記載のデータベースシステム。
【請求項１２】
前記データは、テーブル単位またはページ単位で送受信される、
請求項１から１１の何れか一項に記載のデータベースシステム。
【請求項１３】
前記実行手段は、前記トランザクションログに係る命令を、前記識別情報によって把握される命令の順序に応じて、受信された前記データに対して実行する、
請求項１から１２の何れか一項に記載のデータベースシステム。
【請求項１４】
ユーザー端末からの検索要求を受け付ける検索要求受付手段と、
前記検索要求に応じて、データベースを管理する他の情報処理装置に対して、前記データベース中の少なくとも前記検索要求に係るデータの前記送信要求を送信する要求送信手段と、
前記他の情報処理装置から、該データベースのトランザクションログ、該トランザクションログに係る命令の順序を把握可能な識別情報、前記識別情報のうち所定の時点におけるトランザクションログを示す特定識別情報、および前記データベースによって管理されているデータを受信する受信手段と、
受信された前記データがメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
前記検索要求の結果前記他の情報処理装置から得られ、前記トランザクションに基づく命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、
前記検索要求の結果前記他の情報処理装置から得られ、前記トランザクションに基づく命令が実行されたデータを、前記検索応答手段による応答に用いた後、所定の条件に従って自動的に該情報処理装置から削除する削除手段と、
を備える情報処理装置。
【請求項１５】
複数のノードを有するデータベースシステムにおいて、
前記複数のノードのうち、第一のノードが、
該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持ステップと、
前記複数のノードのうち、前記第一のノードと異なる第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信ステップと、
前記送信要求に応じて、前記ログ保持ステップで保持されている前記識別情報のうち、要求されたデータに係る、所定の時点におけるトランザクションログを示す特定識別情報を、前記第二のノードに送信する特定識別情報送信ステップと、
少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信ステップと、
前記送信要求に応じて、前記データベースによって管理されているデータのうち要求されたデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信ステップと、
を実行し、
前記第二のノードが、
ユーザー端末からの検索要求を受け付ける検索要求受付ステップと、
前記検索要求に応じて、前記第一のノードに対して、前記データベース中の少なくとも前記検索要求に係るデータの前記送信要求を送信する要求送信ステップと、
前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信ステップと、
受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行ステップと、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す検索応答ステップと、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、前記検索応答ステップにおける応答に用いた後、所定の条件に従って自動的に該第二のノードから削除する削除ステップと、
を実行する、
方法。
【請求項１６】
複数のノードを有するデータベースシステムにおいて、
前記複数のノードのうち、第一のノードを、
該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、
前記複数のノードのうち、前記第一のノードと異なる第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信手段と、
前記送信要求に応じて、前記ログ保持手段によって保持されている前記識別情報のうち、要求されたデータに係る、所定の時点におけるトランザクションログを示す特定識別情報を、前記第二のノードに送信する特定識別情報送信手段と、
少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、
前記送信要求に応じて、前記データベースによって管理されているデータのうち要求されたデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、
として機能させ、
前記第二のノードを、
ユーザー端末からの検索要求を受け付ける検索要求受付手段と、
前記検索要求に応じて、前記第一のノードに対して、前記データベース中の少なくとも前記検索要求に係るデータの前記送信要求を送信する要求送信手段と、
前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、
受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、
前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、前記検索応答手段による応答に用いた後、所定の条件に従って自動的に該第二のノードから削除する削除手段と、
として機能させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを管理するための技術に関する。
【背景技術】
【０００２】
従来、自己の障害に備えて他のサーバノードから送信されるトランザクションログを受信し、受信されたトランザクションログをデータベースに反映するデータベース管理システムが提案されている（特許文献１を参照）。【０００３】
また、マスタが、複数のトランザクションログを並列に作成し、並列に作成した複数のトランザクションログを他のマスタ又はスレーブに送信し、他のマスタまたはスレーブが、当該複数のトランザクションログをデータベースに並列に適用する技術が提案されている（特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１２−５３２３７６号公報
【特許文献２】特開２０１２−１３３４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、複数のノードを有するデータベースシステムにおいて、ユーザー端末からのクエリを処理するための負荷を複数のノードで分担するための方法が種々提案されている。例えば、（１）ログベースのレプリケーションを全てのノードに対して行うことによって全ノード間でデータを同期し、何れのノードでもクエリへの応答を可能とする方法や、（２）各ノードがデータの一部分のみを複製し、複製した部分に対するリクエストを処理する方法、方法、等が提案されている。【０００６】
しかし、（１）全ノード間でデータを同期する方法では、全てのノードが大きなストレージまたはメモリを有する必要があり、また、同期のために用いるネットワークリソースも大きくなる。また、（２）各ノードがデータの一部分のみを複製し、複製した部分に対するリクエストを処理する方法では、クエリの処理に必要なデータが複数のノードに分かれて保持されている場合に、データを統合するためのリソースが必要となるという問題があった。【０００７】
本発明は、上記した問題に鑑み、データベースシステムにおいて、ストレージやメモリを節約しながら、複数のノードにおいてユーザー端末からのクエリを受け付けることを課題とする。
【課題を解決するための手段】
【０００８】
本発明は、上記した課題を解決するために、以下の手段を採用した。即ち、本発明は、複数のノードを有するデータベースシステムであって、前記複数のノードのうち、第一のノードは、該第一のノードによって管理されているデータベースのトランザクションログを、該トランザクションログに係る命令の順序を把握可能な識別情報とともに保持するログ保持手段と、前記複数のノードのうち、前記第一のノードと異なる第二のノードから、該第一のノードによって管理されているデータの送信要求を受信する要求受信手段と、前記送信要求に応じて、前記ログ保持手段によって保持されている前記識別情報のうち、要求されたデータに係る、所定の時点におけるトランザクションログを示す特定識別情報を、前記第二のノードに送信する特定識別情報送信手段と、少なくとも前記所定の時点より後の前記トランザクションログおよび前記識別情報を、互いに関連づけて前記第二のノードに送信するログ送信手段と、前記送信要求に応じて、前記データベースによって管理されているデータのうち要求されたデータを、前記所定の時点以降に、前記第二のノードに送信するデータ送信手段と、を備え、前記第二のノードは、ユーザー端末からの検索要求を受け付ける検索要求受付手段と、前記検索要求に応じて、前記第一のノードに対して、前記データベース中の少なくとも前記検索要求に係るデータの前記送信要求を送信する要求送信手段と、前記第一のノードから、前記トランザクションログ、該トランザクションログの識別情報、前記特定識別情報および前記データを受信する受信手段と、受信された前記データが該第二のノードのメモリに展開されてデータの検索または処理に供される状態となった場合に、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに係る命令を、メモリに展開された前記データに対して実行する実行手段と、前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータに基づいて、前記検索要求への応答を前記ユーザー端末に対して返す検索応答手段と、前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、前記検索応答手段による応答に用いた後、所定の条件に従って自動的に該第二のノードから削除する削除手段と、を備える、データベースシステムである。【０００９】
本発明に係るデータベースシステムでは、第一のノードは、検索要求を受けた第二のノードからの要求に応じて、所定の時点におけるトランザクションログを示す特定識別情報、所定の時点以降のトランザクションログ、および所定の時点以降のデータを第二のノードに送信する。そして、第二のノードは、受信されたデータをメモリに展開して検索等に供される状態とし（例えば、データを含むページを所謂キャッシュとし）、所定の時点以降のトランザクションログに係る命令を、メモリに展開されたデータ（キャッシュ）に対して実行する。即ち、本発明では、検索要求に応じてデータを取得し、検索等の用に供されるためにメモリに展開された時点でトランザクションログに係る命令を実行（トランザクションログを反映）することで、レプリケーションに用いるストレージやメモリを節約しながら、ユーザー端末からのクエリを受け付けることとしている。【００１０】
また、前記削除手段は、前記データに関する処理に関する時点から所定時間経過した場合に、前記データを削除してもよい。【００１１】
また、前記第二のノードは、前記検索要求の結果前記第一のノードから得られ、前記トランザクションに基づく命令が実行されたデータを、該第二のノードにおける保持対象とするか否かを判定する判定手段を更に備え、前記削除手段は、前記判定手段によって前記保持対象と判定されなかったデータを、前記所定の条件に従って自動的に削除してもよい。【００１２】
また、前記第二のノードは、前記判定手段によって前記保持対象と判定されたデータを、不揮発性の記憶装置に記録する記録手段を更に備えてもよい。【００１３】
また、前記データ送信手段は、前記データを、前記トランザクションログに係る命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位毎に送信してもよい。【００１４】
また、前記データベースシステムは、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータが収容された前記所定の管理単位と命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、前記所定の管理単位毎に実行してもよい。また、前記データベースシステムは、受信された前記トランザクションログのうち、少なくとも前記特定識別情報が示すトランザクションログよりも新しい前記トランザクションログに基づいて、命令の対象となるデータと命令の内容との関係を示すマップを生成するマップ生成手段を更に備え、前記実行手段は、前記マップを参照して、前記トランザクションログに係る命令を、命令の対象となるデータに対して実行してもよい。【００１５】
また、前記データ送信手段は、前記第一のノードのメモリに展開されてデータの検索または処理に供されている状態のデータを、前記第二のノードに送信してもよい。【００１６】
また、前記データ送信手段は、前記データベースの管理情報を、前記第二のノードに送信し、前記要求送信手段は、前記管理情報を参照して、前記第一のノードに対して、前記データベース中のデータを指定して送信要求を送信してもよい。【００１７】
また、前記第二のノードは、前記第一のノードから受信したデータを直接メモリに展開して、データの検索または処理に供する展開手段を更に備え、前記実行手段は、受信したデータが前記展開手段によってメモリに展開されたことを受けて、前記トランザクションログに係る命令を前記データに対して実行してもよい。【００１８】
また、前記特定識別情報送信手段は、前記特定識別情報として、ログ保持手段によって保持されている前記識別情報のうち、最新のトランザクションログを示す識別情報を送信してもよい。【００１９】
また、前記データは、テーブル単位またはページ単位で送受信されてもよい。【００２０】
また、前記実行手段は、前記トランザクションログに係る命令を、前記識別情報によって把握される命令の順序に応じて、受信された前記データに対して実行してもよい。【００２１】
なお、本発明は、コンピューターシステム、情報処理装置、コンピューターによって実行される方法、またはコンピューターに実行させるプログラムとして把握することが可能である。また、本発明は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
【発明の効果】
【００２２】
本発明によれば、データベースシステムにおいて、ストレージやメモリを節約しながら、複数のノードにおいてユーザー端末からのクエリを受け付けることが可能となる。
【図面の簡単な説明】
【００２３】
【図１】実施形態に係るシステムのハードウェア構成の概略を示す図である。
【図２】実施形態に係るシステムの機能構成の概略を示す図である。
【図３】実施形態において、第一のノードおよび第二のノードによって実行される管理情報送受信処理の流れを示すフローチャートである。
【図４】実施形態において、第一のノードおよび第二のノードによって実行されるデータベース送受信処理の流れを示すフローチャートである。
【図５】実施形態において、第二のノードによって実行されるマップ生成処理の流れを示すフローチャートである。
【図６】実施形態において、第二のノードによって実行される更新実行処理の流れを示すフローチャートである。
【図７】実施形態において、第二のノードによって実行される検索要求対応処理の流れを示すフローチャート（１）である。
【図８】実施形態において、第二のノードによって実行される検索要求対応処理の流れを示すフローチャート（２）である。
【図９】実施形態に係る第一のノードおよび第二のノードの機能構成の概略を示す図である。
【図１０】実施形態において、第一のノードおよび第二のノードによって実行されるトランザクションログ送受信開始処理の流れを示すフローチャートである。
【図１１】実施形態において、第二のノードによって実行されるオンデマンド処理の流れを示すフローチャートである。
【図１２】実施形態において、第二のノードによって実行される削除処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
【００２５】
本実施形態では、本開示に係るシステム、情報処理装置、方法およびプログラムを、追記型のデータベースシステムにおいて実施した場合の実施の形態について説明する。追記型のデータベースシステムとは、データの更新の際に、古いデータを新しいデータで上書きすることなく、新しいデータを追記することでデータの更新を行うタイプのデータベースシステムである。但し、本開示に係るシステム、情報処理装置、方法およびプログラムは、複数のノードを有するシステムにおいて、あるノードが管理するデータを他のノードにおいて用いるための技術について広く用いることが可能であり、本開示の適用対象は、本実施形態において示した例に限定されない。
【００２６】
＜第一の実施形態＞
はじめに、第一の実施形態について説明する。
【００２７】
＜＜システムの構成＞＞
図１は、本実施形態に係るシステムのハードウェア構成の概略を示す図である。本実施形態に係るシステムは、ユーザー端末９からの検索要求（クエリ）に応答するための複数のノード（情報処理装置）１を備える。複数のノード１は、ネットワークを介して互いに通信可能に接続される。複数のノード１のうち、データベースが既に構築されているノード１の何れかを、本実施形態におけるオリジナルのデータベースを有する第一のノード１Ａとすることが出来る。また、本実施形態において第一のノード１Ａからデータを受信する第二のノード１Ｂは、データベース用のソフトウェアがインストールされているが、データベースのコンテンツが未構築のノードである。本実施形態では、このようなシステムにおいて、第一のノード１Ａが管理するデータベースのコンテンツ（データ）を、第二のノード１Ｂにおける検索の用に供するための技術を説明する。本実施形態では、ノードを区別することなくノード一般について述べる場合には「ノード１」と記載し、ノードを区別して述べる場合には「第一のノード１Ａ」、「第二のノード１Ｂ」のように添字を付して記載する。
【００２８】
なお、本開示に係るシステムは、階層構造を有するデータベースシステムや、マルチマスターのデータベースシステムに適用可能であるが、この際、データベースシステムにおけるマスターノードおよびスレーブノードの何れであっても、第一のノード１Ａまたは第二のノード１Ｂとすることが出来る。
【００２９】
第一のノード１Ａおよび第二のノード１Ｂは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１Ａ、１１Ｂ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２Ａ、１２ＢおよびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３Ａ、１３Ｂ等からなる制御部１０Ａ、１０Ｂと、補助記憶装置１４Ａ、１４Ｂと、通信インターフェース１５Ａ、１５Ｂと、を備えるコンピューターである。但し、ノード１の具体的なハードウェア構成に関しては、実施の形態に応じて適宜省略や置換、追加が可能である。また、ノード１は、単一の装置に限定されない。ノード１は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。
【００３０】
なお、本実施形態では、データベースの各レコードは、ページ単位で管理されており、ストレージ（例えば、補助記憶装置１４Ａ、１４Ｂ）とメモリ等（例えば、ＲＡＭ１２Ａ、１２Ｂ）との間のデータのやり取りは、ページ単位で行われる。ここで、メモリ等に展開されてデータの検索または処理に供されている状態のデータは、キャッシュと称される。一方、ストレージ上のデータは、データの検索または処理に供されていない状態にある。即ち、データベースの内容を検索や更新等の処理の対象とする場合、各ノードは、対象のレコードを含むページをストレージから読み出してキャッシュとし、対象のレコードに係る処理を行う。また、各ノードは、対象のレコードの更新を行った後に、当該レコードを含むキャッシュのページをストレージに書き込むことで、データベースの更新を保存する。なお、ページがストレージに書き込まれるタイミングは、実施の形態に応じて適宜決定される。ページには、１または複数のレコードが格納される。また、ページは、ブロックと称されてもよく、本発明の「所定の管理単位」に相当する。
【００３１】
本実施形態では、後述するノード間の送受信処理においても、ページ単位でデータが要求され、ページ単位でデータが送受信される。但し、データの読出／書込および送受信をページ単位で行うのは、本開示を実施する際に採用可能な具体的構成の一例であり、本開示の技術的範囲は、ページ単位での読出／書込および送受信に限定されない。データの読出／書込および送受信は、例えばテーブル単位で行われてもよいし、その他の管理単位で行われてもよい。
【００３２】
図２は、本実施形態に係る第一のノード１Ａおよび第二のノード１Ｂの機能構成の概略を示す図である。本実施形態に係る第一のノード１Ａは、ＣＰＵ１１Ａが、ＲＡＭ１２Ａに展開された各種プログラムを解釈および実行して、ノード１Ａに備えられた各種ハードウェアを制御することで、ログ保持部２１、要求受信部２２、特定識別情報送信部２３、ログ送信部２４およびデータ送信部２５を備えるコンピューターとして機能する。本実施形態では、第一のノード１Ａの機能が汎用のＣＰＵ１１Ａによって実行される例について説明しているが、これらの機能は、その一部または全部が、１または複数の専用のプロセッサによって実現されてもよい。
【００３３】
ログ保持部２１は、第一のノード１Ａによって管理されているデータベースにおけるトランザクションのログ（以下、「トランザクションログ」）を、トランザクションに含まれる命令の時系列上の順序を把握可能な識別情報であるＬＳＮ（Ｌｏｇ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ）とともに保持する。命令には、データベースの更新に係る更新命令と、トランザクションの管理に係る管理命令とが含まれる。また、トランザクションログは、ノードにおいてトランザクションが発生する毎に生成され、ＬＳＮが付されてログ保持部２１によって保持される。
【００３４】
要求受信部２２は、第二のノード１Ｂによって送信された、第一のノード１Ａによって管理されているデータの送信要求を受信する。
【００３５】
特定識別情報送信部２３は、ログ保持部２１によって保持されているＬＳＮのうち、所定の時点におけるトランザクションログを示す特定識別情報（特定ＬＳＮ）を、要求受信部２２によって受信されたデータ送信要求に応じて第二のノード１Ｂに送信する。ここで送信される特定ＬＳＮは、要求されたページ毎に決定されてよい。なお、本実施形態において、特定識別情報送信部２３は、特定ＬＳＮとして、最新のトランザクションログを示すＬＳＮを送信する。特定ＬＳＮを最新のトランザクションログを示すＬＳＮとすることで、ログ送信部２４によって送信すべきトランザクションログの量を低減させ、また、第二のノード１Ｂにおいて反映すべきトランザクションログの量を低減出来る。但し、送信される特定ＬＳＮは、第二のノード１Ｂにおいて反映すべきトランザクションログを判別するための、所定の時点におけるトランザクションログを示すものであればよく、最新のトランザクションログを示すＬＳＮに限定されない。
【００３６】
ログ送信部２４は、少なくとも、特定ＬＳＮが示す所定の時点より後のトランザクションログおよびＬＳＮを、互いに関連づけて第二のノード１Ｂに送信する。トランザクションログの送信開始後、ログ送信部２４は、新たに発生したトランザクションログについても、順次第二のノード１Ｂに対して送信する。
【００３７】
データ送信部２５は、要求受信部２２によって受信されたデータ送信要求に応じて、データベースによって管理されているページのうち、要求に係るページであって、少なくとも特定ＬＳＮに係る所定の時点までの内容が反映されたページを、第二のノード１Ｂ宛に送信する。本実施形態では、データ送信部２５は、データを、トランザクションログに基づく更新命令の順序が互いに依存関係にあるレコードが同一の管理単位に入るように区切られた所定の管理単位（本実施形態では、ページ）毎に送信する。
【００３８】
なお、本実施形態では、データ送信部２５は、第一のノード１Ａのメモリに展開されてデータの検索または処理に供されている状態のデータ、即ちキャッシュを、第二のノード１Ｂ宛に送信する。送信の際、送信対象のページのキャッシュが無い場合には、第一のノード１Ａは、対象ページをストレージから読み出してキャッシュとする。これは、本実施形態に係るデータベースシステムでは、各ノード１において発生したデータの更新は即座にキャッシュに反映され、キャッシュがデータの最新の状態を表しているために、第二のノード１Ｂ宛に送信されるデータとしてキャッシュを採用することで、送信されるデータを、最新のトランザクションログを示すＬＳＮである特定ＬＳＮに係る所定の時点までの内容が反映されたページとすることが出来るからである。
【００３９】
但し、送信されるデータは、少なくとも特定ＬＳＮに係る所定の時点までの内容が反映されたものであればよく、本実施形態において採用されたキャッシュに限定されない。本開示が適用されるデータベースシステムが、ストレージにあるデータに、少なくとも特定ＬＳＮに係る所定の時点までの内容が反映されていることが保証できるものである場合には、ストレージから読み出されたデータがそのまま送信されてもよい。
【００４０】
また、本実施形態に係る第二のノード１Ｂは、ＣＰＵ１１Ｂが、ＲＡＭ１２Ｂに展開された各種プログラムを解釈および実行して、ノード１Ｂに備えられた各種ハードウェアを制御することで、要求送信部３１、データ受信部３２、実行部３３、マップ生成部３４、検索要求受付部３５、検索応答部３６および展開部３７を備えるコンピューターとして機能する。本実施形態では、第二のノード１Ｂの機能が汎用のＣＰＵ１１Ｂによって実行される例について説明しているが、これらの機能は、その一部または全部が、１または複数の専用のプロセッサによって実現されてもよい。
【００４１】
要求送信部３１は、第一のノード１Ａに対して、データベース中のデータを指定してデータの送信要求を送信する。本実施形態では、データの指定は、ページ単位で行われる。
【００４２】
データ受信部３２は、第一のノード１Ａから、トランザクションログ、該トランザクションログのＬＳＮ、ページ毎の特定ＬＳＮおよびデータを受信する。なお、先述の通り、本実施形態では、データの送受信は、ページ単位で行われる。
【００４３】
実行部３３は、データの送信要求に応じて第一のノード１Ａから送信され、データ受信部３２によって受信されたデータが、該第二のノード１Ｂのメモリに展開されてデータの検索または処理に供される状態（キャッシュ）となった場合に、受信されたトランザクションログのうち、少なくとも特定ＬＳＮに係るトランザクションログよりも新しいトランザクションログに含まれる更新命令を、メモリに展開されたデータに対して実行する。ここで、トランザクションログに含まれる更新命令は、ＬＳＮによって把握される順序に従って実行される。
【００４４】
マップ生成部３４は、受信されたトランザクションログのうち、少なくとも特定ＬＳＮが示すトランザクションログよりも新しいトランザクションログに基づいて、トランザクションログに含まれる更新命令の対象となるデータが収容されているページと当該更新命令との関係を示すマップを生成する。
【００４５】
なお、上述の通り本実施形態では、データはページをもって管理されるため、マップ生成部３４は、更新命令の対象となるデータが収容されたページと更新命令との関係を示すマップを生成するが、マップ生成手段は、その他の管理単位（例えば、テーブル等）と更新命令との関係を示すマップを生成してもよい。また、マップ生成手段は、このような管理単位を用いること無く、更新命令の対象となるレコードと更新命令との関係を示すマップを生成してもよい。
【００４６】
検索要求受付部３５は、ユーザー端末９からの検索要求（クエリ）を受け付ける。
【００４７】
検索応答部３６は、第一のノード１Ａから得られ、トランザクションログに基づく更新命令が反映されたデータに基づいて、検索要求（クエリ）への応答をユーザー端末９に対して返す。
【００４８】
展開部３７は、第一のノード１Ａから受信したデータをメモリに展開して、データの検索または処理に供する。本実施形態において、展開部３７は、クエリや、後述する更新実行処理における求めに応じて、第一のノード１Ａから受信されたデータをメモリに読み出すことでキャッシュとする。
【００４９】
＜＜処理の流れ＞＞
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の形態に応じて適宜選択されてよい。
【００５０】
図３は、本実施形態において、第一のノード１Ａおよび第二のノード１Ｂによって実行される管理情報送受信処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード１Ｂにおいて、データベースの構築開始の指示が受け付けられたことを契機として開始される。
【００５１】
ステップＳ１０１およびステップＳ１０２では、管理情報要求が送受信される。要求送信部３１は、第一のノード１Ａに対して、データベースの管理情報（システムカタログ等）を指定してデータの送信要求を送信する（ステップＳ１０１）。ここで、管理情報は、データベース中のテーブルやレコードの位置を特定可能な情報を含んでいる。本実施形態に係るデータベースはページ単位で管理されているため、管理情報は、データベースのテーブルとページとの関係を特定可能な情報を含む。また、本実施形態では、管理情報の読出／書込および送受信についても、他のテーブルと同様ページ単位で行われる。但し、管理情報がテーブル単位等その他の単位に従って要求されてもよいことは、先述したデータの読出／書込および送受信と同様である。要求受信部２２は、第二のノード１Ｂによって送信された要求を受信する（ステップＳ１０２）。その後、処理はステップＳ１０３へ進む。
【００５２】
ステップＳ１０３およびステップＳ１０４では、データの送信要求に対する応答（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ。以下、「ＡＣＫ」と称する）が送受信される。このＡＣＫは、管理情報の特定ＬＳＮを含む。先述の通り、ＬＳＮとは、トランザクションログに含まれる命令（更新命令）の順序を把握可能な識別情報であり、特定ＬＳＮとは、ログ保持部２１によって保持されているＬＳＮのうち、所定の時点におけるトランザクションログ（本実施形態では、最新のトランザクションログ）を示すＬＳＮである。即ち、特定識別情報送信部２３は、ログ保持部２１によって保持されているＬＳＮのうち、要求された管理情報に係る特定ＬＳＮを含むＡＣＫを、第二のノード１Ｂに対して送信する（ステップＳ１０３）。データ受信部３２は、第一のノード１Ａから、特定ＬＳＮを含むＡＣＫを受信する（ステップＳ１０４）。その後、処理はステップＳ１０５へ進む。
【００５３】
ステップＳ１０５およびステップＳ１０６では、トランザクションログの送受信が開始される。ログ送信部２４は、所定の時点より後のトランザクションログおよびＬＳＮを、互いに関連づけて第二のノード１Ｂに送信する（ステップＳ１０５）。以降、第一のノード１Ａにおいて生成されたトランザクションログは、順次、継続的に第二のノード１Ｂに対して送信される。ここで、「所定の時点」とは、ステップＳ１０３で送信された特定ＬＳＮが示すトランザクションログが生成された時点である。データ受信部３２は、第一のノード１Ａによって送信された、トランザクションログおよび該トランザクションログに係るＬＳＮの受信を開始する（ステップＳ１０６）。
【００５４】
ログの送受信開始後、第一のノード１Ａにおいて新たに発生したトランザクションログは、発生次第、第二のノード１Ｂに対して送信され、第二のノード１Ｂによって受信される。即ち、第二のノード１Ｂは、ログの送信開始後、所定の時点以降のトランザクションログを全て受信することとなる。その後、処理はステップＳ１０７へ進む。
【００５５】
なお、先述の通り、処理順序は本フローチャートに示した例に限定されない。管理情報送受信処理では、対象のページに関係するトランザクションログのうち、特定ＬＳＮが示す時点以降のトランザクションログが全て第二のノード１Ｂによって受信されればよい。このため、例えば、ステップＳ１０３およびステップＳ１０４の送受信処理と、ステップＳ１０５およびステップＳ１０６の送受信処理との処理順序は、入れ替わってもよい。
【００５６】
ステップＳ１０７では、管理情報について、マップ生成処理が開始される。マップ生成部３４は、管理情報に関するページを、マップ生成処理の対象とする。即ち、本ステップ以降、管理情報に対して実行される更新命令と、当該更新命令の実行対象（対象ページ、対象テーブルまたは対象レコード等）との組合せがマッピングされたマップの生成が開始される。マップ生成処理は、本フローチャートに示された処理と並行して実行される。マップ生成処理の詳細は、図５を用いて説明する。その後、処理はステップＳ１０８へ進む。
【００５７】
ステップＳ１０８およびステップＳ１０９では、データベースの管理情報が送受信される。データ送信部２５は、ステップＳ１０２で受信された要求を受けて、データベースの管理情報（システムカタログ等）を、第二のノード１Ｂに対して送信する（ステップＳ１０８）。この際、データ送信部２５は、送信対象のデータのキャッシュを、第二のノード１Ｂ宛に送信する。送信の際、送信対象のデータのキャッシュが無い場合には、第一のノード１Ａは、対象データをストレージから読み出してキャッシュとし、少なくとも特定ＬＳＮに係る所定の時点までの内容が反映されたデータとしてから、第二のノード１Ｂ宛に送信する。第二のノード１Ｂのデータ受信部３２は、第一のノード１Ａから、管理情報を受信する（ステップＳ１０９）。その後、処理はステップＳ１１０へ進む。
【００５８】
なお、本フローチャートでは、管理情報の送信（ステップＳ１０８）が、マップの生成開始（ステップＳ１０７）よりも後に記載されているが、管理情報は、特定ＬＳＮに係る所定の時点以降のものが送信されればよく、送信のタイミングは本フローチャートに示された例に限定されない。
【００５９】
ステップＳ１１０では、更新実行処理が開始される。実行部３３は、管理情報に関するページを、更新実行処理の対象とする。即ち、本ステップ以降、マップ生成処理においてマップに記録された、管理情報に未反映の更新命令が実行される。更新実行処理は、本フローチャートに示された処理と並行して実行される。更新実行処理の詳細は、図６を用いて説明する。その後、処理はステップＳ１１１へ進む。
【００６０】
ステップＳ１１１では、検索要求（クエリ）の受付が開始される。第二のノード１Ｂは、検索要求対応処理を開始させることで、ユーザー端末９から送信されるクエリの受付を開始する。以降、検索要求受付部３５は、ユーザー端末９からのクエリを受け付け、クエリが受け付けられると、クエリに応じるために必要なページが、管理情報を参照することで取得される。検索要求対応処理は、本フローチャートに示された処理と並行して実行される。検索要求対応処理の詳細は、図７および図８を用いて説明する。その後、本フローチャートに示された処理は終了する。
【００６１】
なお、本実施形態では、管理情報の複製についても、データベースの他のテーブル同様、マップ生成処理、更新実行処理および検索要求対応処理を用いて複製する例について説明したが、管理情報の複製には、その他の方法が採用されてもよい。管理情報の複製には、例えば、チェックポイントを作成してチェックポイントのスナップショットを複製する従来の方法等を採用することが出来る。
【００６２】
図４は、本実施形態において、第一のノード１Ａおよび第二のノード１Ｂによって実行されるデータベース送受信処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード１Ｂが、第一のノード１Ａからデータベースの管理情報を受信することで、第一のノード１Ａによって管理されているデータベースのページ構成を把握可能となったことを契機として開始される。
【００６３】
ステップＳ２０１およびステップＳ２０２では、データの送信要求が送受信される。要求送信部３１は、管理情報のキャッシュを参照して、第一のノード１Ａに対して、データベース中のページを指定してデータの送信要求を送信する（ステップＳ２０１）。ページの指定には、例えば、ページ番号が用いられてよい。データの送信要求は、管理情報から目的のデータを含むページが分かる場合には、ページを指定したものであってもよいし、データベース中の具体的なレコードを指定したものであってもよい。本実施形態において、データはページ単位で要求されるが、テーブル単位等その他の単位に従って要求されてもよいことは先述した通りである。要求受信部２２は、第二のノード１Ｂから、第一のノード１Ａによって管理されているデータの送信要求を受信する（ステップＳ２０２）。その後、処理はステップＳ２０３へ進む。
【００６４】
ステップＳ２０３およびステップＳ２０４では、データの送信要求に対するＡＣＫが送受信される。このＡＣＫは、ページ番号および当該ページの特定ＬＳＮを含む。即ち、特定識別情報送信部２３は、ログ保持部２１によって保持されているＬＳＮのうち、要求されたページに係る特定ＬＳＮを含むＡＣＫを、第二のノード１Ｂに対して送信する（ステップＳ２０３）。データ受信部３２は、第一のノード１Ａから、特定ＬＳＮを含むＡＣＫを受信する（ステップＳ２０４）。その後、処理はステップＳ２０５へ進む。
【００６５】
ステップＳ２０５では、要求に係るページ等について、マップ生成処理が開始される。マップ生成部３４は、ステップＳ２０１において要求したページを、マップ生成処理の対象とする。即ち、本ステップ以降、要求されたページに対して実行される更新命令と、当該更新命令の実行対象（対象ページ、対象テーブルまたは対象レコード等）との組合せがマッピングされたマップの生成が開始される。ここで開始されるマップ生成処理の内容は、ステップＳ１０７において管理情報に対して開始されたものと概略同様であり（図５を参照）、本フローチャートに示された処理と並行して処理される。その後、処理はステップＳ２０６へ進む。
【００６６】
なお、本実施形態では、管理情報やページ毎にマップの生成開始タイミングが異なる例について説明しているが（ステップＳ１０７やステップＳ２０５を参照）、マップの生成開始タイミングは、データベース全体において同時であってもよい。
【００６７】
ステップＳ２０６およびステップＳ２０７では、要求に係るページが送受信される。データ送信部２５は、ステップＳ２０１で受信された要求に応じて、データベースによって管理されているページのうち要求されたものを、第二のノード１Ｂに送信する（ステップＳ２０６）。この際、データ送信部２５は、送信対象のデータのキャッシュを、第二のノード１Ｂ宛に送信する。送信の際、送信対象のページのキャッシュが無い場合には、第一のノード１Ａは、対象ページをストレージから読み出してキャッシュとし、少なくとも特定ＬＳＮに係る所定の時点までの内容が反映されたページとしてから、第二のノード１Ｂ宛に送信する。第二のノード１Ｂのデータ受信部３２は、第一のノード１Ａから、データを受信する（ステップＳ２０７）。データの送受信単位は、要求に応じたものであればよく、ページ単位、テーブル単位およびレコード単位の何れでもよい。その後、処理はステップＳ２０８へ進む。
【００６８】
なお、本フローチャートでは、データの送信（ステップＳ２０６）が、マップの生成開始（ステップＳ２０５）よりも後に記載されているが、データは、特定ＬＳＮに係る所定の時点以降のものが送信されればよく、送信のタイミングは本フローチャートに示された例に限定されない。
【００６９】
ステップＳ２０８では、更新実行処理が開始される。実行部３３は、ステップＳ２０７で受信されたデータを、更新実行処理の対象とする。即ち、本ステップ以降、マップ生成処理でマップに記録された、未実行の更新命令が実行される。その後、本フローチャートに示された処理は終了する。
【００７０】
なお、本実施形態において、第二のノード１Ｂは、第一のノード１Ａのデータベースにある全てのデータを取得するため、図４に示されたデータベース送受信処理は、管理情報に示された全てのページについて取得が完了するまで、要求するページを順次変更しながら繰り返し実行される。即ち、要求送信部３１は、ステップＳ２０１からステップＳ２０８の処理を繰り返すことで、管理情報を参照して把握される全てのページまたはテーブルについて、データの送信要求を送信する。但し、第二のノード１Ｂが、第一のノード１Ａのデータベースにある全てのデータを取得する必要がない場合には、要求送信部３１は、必要な一部のページやテーブルについてのみ、データの送信要求を行ってもよい。また、本実施形態では、複数のページを取得する場合に、ステップＳ２０１からステップＳ２０８の処理を繰り返す例について説明したが、複数のページを取得する場合に、ステップＳ２０１において複数ページ分まとめて要求することとしてもよい。
【００７１】
本フローチャートに示された処理において第一のノード１Ａから受信されたページには、未反映のトランザクションログが存在する可能性がある。このため、マップ生成処理、更新実行処理および検索要求対応処理（詳細については後述する）が本フローチャートに示された処理と並行して行われることで、未反映のトランザクションログが反映される。これらの処理が開始されるタイミングは、上記説明した通りである。なお、要求に係るページやテーブルに関するトランザクションログは、ステップＳ１０５以降順次受信されているトランザクションログに含まれている。
【００７２】
なお、本実施形態では、第一のノード１Ａから受信されたデータは、一旦ストレージに保存される。但し、このような処理に代えて、展開部３７は、第一のノード１Ａから受信したデータを、ストレージ（本実施形態では、補助記憶装置１４Ｂ）を介さずに直接メモリに展開して、データの検索または処理に供してもよい。受信データが直接メモリに展開された場合、当該受信データに係る更新命令は、後述するマップ生成処理に従って、即座に反映される。
【００７３】
次に、第二のノード１Ｂにおいて実行されるデータベースの管理処理の流れを説明する。本実施形態において、第二のノード１Ｂのデータベースは、マップ生成処理、更新実行処理および検索要求対応処理によって管理される。第二のノード１Ｂは、これらの処理を実行するためのインスタンスを適宜複数立ち上げて並列実行することによって、マップの生成、マッピングされた更新命令の反映、および検索要求（クエリ）の処理の夫々について、並列処理することを可能としている。
【００７４】
図５は、本実施形態において、第二のノード１Ｂによって実行されるマップ生成処理の流れを示すフローチャートである。本フローチャートに示された処理は、マップ生成処理の対象となったデータ（ステップＳ１０７およびステップＳ２０５を参照）に対して、繰り返し実行される。
【００７５】
ステップＳ３０１では、トランザクションログに含まれる命令が、ＬＳＮを参照して時系列順に参照される。第二のノード１Ｂは、未反映のトランザクションログに含まれる命令を、時系列において最も古い時点のもの（ＬＳＮが最も小さいもの）から順に参照する。ここで参照されるトランザクションログは、ステップＳ１０５およびステップＳ１０６の処理において送受信が開始され、第二のノード１Ｂによって受信されたものである。その後、処理はステップＳ３０２へ進む。
【００７６】
ステップＳ３０２およびステップＳ３０３では、命令が更新命令であるか否かが判定され、更新命令以外の命令が実行される。第二のノード１Ｂは、ステップＳ３０１で参照された命令が、更新命令であるか否かを判定する（ステップＳ３０２）。参照された命令が更新命令以外の命令（例えば、コミット等の管理命令）であった場合、命令はそのまま実行される（ステップＳ３０３）。一方、参照された命令が更新命令であった場合、処理はステップＳ３０４へ進む。
【００７７】
ステップＳ３０４では、参照された命令が示すページが、マップ生成処理の対象であるか否かが判定される。第二のノード１Ｂは、対象となっているデータが、ステップＳ１０７やステップＳ２０５等において、マップ生成処理の対象に設定されているか否かを判定する。ここで、対象データが、マップ生成処理の対象に設定されていないと判定された場合、本フローチャートに示された処理は終了する。一方、対象データが、マップ生成処理の対象に設定されていると判定された場合、処理はステップＳ３０５へ進む。
【００７８】
ステップＳ３０５では、対象データ（ページ）のキャッシュが存在するか否かが判定される。第二のノード１Ｂは、参照した命令が更新命令である場合、当該命令を参照した時点でその対象がデータベース内に存在するような更新命令（例えば、ＤＥＬＥＴＥ命令）については、当該更新命令の対象のキャッシュが存在するか否かを判定する。一方、当該命令を参照した時点でその対象がデータベース内に存在しないような更新命令（例えば、ＩＮＳＥＲＴ命令）については、当該更新命令の対象が挿入される領域のデータのキャッシュが存在するか否かを判定することで、当該更新命令の対象のキャッシュが存在するか否かを判定する。なお、レコードがページ単位で管理されている場合、第二のノード１Ｂは、更新命令の対象を含むページのキャッシュが存在するか否かを判定する。対象のページのキャッシュが存在する場合、処理はステップＳ３０６へ進む。一方、対象のページのキャッシュが存在しない場合、処理はステップＳ３０７へ進む。
【００７９】
ステップＳ３０６では、トランザクションログに係る更新命令が実行される。実行部３３は、受信されたデータのうち、展開部３７によってメモリに展開されてキャッシュとなったデータに対して、トランザクションログに係る更新命令を実行する。その後、処理はステップＳ３０８へ進む。
【００８０】
ステップＳ３０７では、マップが生成される。トランザクションログに含まれる更新命令の対象となっているページのキャッシュが存在しない場合（ステップＳ３０５で「ＮＯ」に進んだ場合）、マップ生成部３４は、トランザクションログに含まれる更新命令の対象となるデータが収容されたページと更新命令との関係を示す情報を、マップに記録することで、更新命令の実行を待機させる。換言すれば、マップ生成部３４は、更新命令の実行を待機させる際に、当該更新命令をマッピング（マップ生成）の対象とし、待機させた更新命令の内容を当該レコードに関連付けて記録するマップを生成する。但し、全ての更新命令をマップ生成の対象としてもよい。本実施形態では、マップには、待機させた更新命令の内容およびＬＳＮのうちの少なくとも一方が、更新命令の対象であるレコードを含むページ（具体的にはページ番号）に関連付けられて記録される。その後、処理はステップＳ３０８へ進む。
【００８１】
ステップＳ３０８では、マップ生成処理を終了するか否かが判定される。マップ生成処理が終了されない場合、処理はステップＳ３０１へ戻り、トランザクションログにおける時系列順（ＬＳＮの順）で次の命令が参照され、ステップＳ３０４からステップＳ３０７に示された処理の対象となる。通常、第一のノード１Ａにおいて新たに発生したトランザクションログを第二のノード１Ｂに反映するために、マップ生成処理は、第二のノード１Ｂが運用されている間、繰り返し実行される。即ち、本実施形態において、第二のノード１Ｂは、受信されたトランザクションログを、古いものから順に検査し、トランザクションログに含まれる更新命令の対象となっているページがオンメモリ（キャッシュ）である場合に、キャッシュに対してトランザクションログに応じた更新命令を実行する。一方、第二のノード１Ｂが停止される等の理由でマップ生成処理が終了される場合、本フローチャートに示された処理は終了する。
【００８２】
マップ生成処理で生成されたマップは、対象ページがキャッシュとなった場合に、更新実行処理または検索要求対応処理において参照され、更新実行処理または検索要求対応処理において、当該マップに待機させられた更新命令が実行される。即ち、本実施形態に係るシステムによれば、第一のノードから受信されたデータに対するトランザクションログの反映を、対象データが実際に用いられる時点（換言すれば、キャッシュとなる時点）まで遅延させることが出来る。
【００８３】
ここで、更新命令の内容を記録したトランザクションログは、ノード１ＢのＲＡＭ１２Ｂまたは補助記憶装置１４Ｂに保持されている。更新実行処理または検索要求対応処理では、当該マップに記録されるＬＳＮに基づいてＲＡＭ１２または記憶装置１４に保持されているトランザクションログへのアクセスが行われ、実行する更新命令の内容が特定される。
【００８４】
なお、マップ生成処理では、参照した順番に応じて、更新命令の内容またはＬＳＮがマップに記録される。これにより、後述する更新実行処理または検索要求対応処理では、待機させられた更新命令の実行順序を認識することができる。但し、仮に、更新命令の内容またはＬＳＮが参照された順番に応じてマップに記録されなかったとしても、更新実行処理または検索要求対応処理では、待機させられた更新命令のＬＳＮにより、当該更新命令の実行順序を認識することができる。
【００８５】
図６は、本実施形態において、第二のノード１Ｂによって実行される更新実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、マップに待機している更新命令が存在する間、繰り返し実行される。
【００８６】
ステップＳ４０１では、待機している更新命令の有無が判定される。第二のノード１Ｂは、マップを参照し、待機している更新命令があるか否かを判定する。待機している更新命令がマップに記録されていない場合、本フローチャートに示された処理は終了する。一方、待機している更新命令がマップに記録されている場合、第二のノード１Ｂは、更新命令の対象となるデータが含まれる管理単位を、処理の対象として選択して、処理をステップＳ４０２へ進める。
【００８７】
ステップＳ４０２では、更新対象が存在するか否かが判定される。第二のノード１Ｂは、ステップＳ４０１において選択された処理の対象が、第二のノード１Ｂに存在するか否か、換言すれば、処理の対象となるページが、既に第一のノード１Ａから受信されているか否か、を判定する。更新対象のページが存在しない場合、処理はステップＳ４０１へ戻る。即ち、第二のノード１Ｂは、マップを参照して、第二のノード１Ｂに存在するページについて待機している更新命令を待ち受ける。更新対象のページが存在する場合、処理はステップＳ４０４へ進む。
【００８８】
ステップＳ４０３では、更新対象ページに関する更新命令がマップから抽出される。第二のノード１Ｂは、ステップＳ４０２において存在すると判定された更新対象のページに対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップＳ４０４へ進む。
【００８９】
ステップＳ４０４では、展開部３７は、自身が処理する対象を、補助記憶装置１４ＢからＲＡＭ１２Ｂに読み出すことで、キャッシュとする。その後、処理はステップＳ４０５へ進む。
【００９０】
ステップＳ４０５およびステップＳ４０６では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部３３は、マップを参照して、自身が選択した処理対象に関連付けられている更新命令を実行する（ステップＳ４０５）。即ち、実行部３３は、ステップＳ４０１で発見された更新命令、およびステップＳ４０３で抽出された更新命令を、所定の管理単位であるページ毎に、マップに記録されている順に実行する。例えば、更新命令が削除命令である場合、実行部３３は、対象のレコードに削除ポインタを付与する。そして、第二のノード１Ｂは、自身が選択した処理対象について待機している更新命令を実行した後に、実行した更新命令に関する記録をマップから削除する（ステップＳ４０６）。その後、処理はステップＳ４０７へ進む。
【００９１】
ステップＳ４０７では、更新実行処理を終了するか否かが判定される。更新実行処理が終了されない場合、処理はステップＳ４０１へ戻る。即ち、更新実行処理では、処理対象として選択したページに複数の更新命令が待機している場合、マップに記録されている順（ＬＳＮ順）に、当該待機している更新命令が実行される。これにより、そのページに関して、ノード１とレプリケーション元のコンピューターとの間で、レプリケーションが実行されている最中におけるデータベースの整合性を保つことができる。一方、第二のノード１Ｂが停止される等の理由で更新実行処理が終了される場合、本フローチャートに示された処理は終了する。
【００９２】
なお、第二のノード１Ｂは、更新実行処理を実行するためのインスタンスを複数立ち上げてもよく、このようなインスタンスを生成若しくは削除または起動若しくは停止することで、更新実行処理を実行するインスタンスの数を増減させてもよい。例えば、第二のノード１Ｂは、マップで記録されている待機させられている更新命令の管理単位の数（本実施形態では、ページ数）に応じて、起動するインスタンスの数を増減させてもよい。この場合は、更新実行処理の処理能力を要求に応じて可変にでき、無駄なインスタンスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
【００９３】
また、例えば、更新実行処理を実行するためのインスタンスを、予め一定数起動させておいてもよい。この場合、処理の要求が生じた場合に改めてインスタンスを起動しなくてもよいため、生じた要求に迅速に対応することが可能になる。
【００９４】
図７および図８は、本実施形態において、第二のノード１Ｂによって実行される検索要求対応処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード１Ｂが、ユーザー端末９等からクエリを受信したことを契機として開始される。
【００９５】
ステップＳ５０１では、クエリが受け付けられる。検索要求受付部３５は、ユーザー端末９からのクエリを受け付ける。その後、処理はステップＳ５０２へ進む。
【００９６】
ステップＳ５０２では、管理情報のキャッシュが存在するか否かが判定される。検索応答部３６は、メモリ上に、管理情報のキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部３６は、検索対象での管理情報を含むページのキャッシュが存在するか否かを判定する。
【００９７】
本実施形態では、管理情報を含むページがＲＡＭ１２Ｂに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される（図６および後述するステップＳ５０４からステップＳ５０７に示す処理を参照）。また、キャッシュが存在するページに対する更新命令は即座に実行される（図５を用いて説明したマップ生成処理を参照）。このため、本実施形態において、管理情報を含むページのキャッシュが既に存在する場合（ステップＳ５０２における判定結果が「ＹＥＳ」の場合）、当該ページに対する更新命令の実行が待機されていることはない。従って、管理情報を含むページのキャッシュが存在する場合、検索応答部３６は、記憶領域からの読み出しを行わず、既にキャッシュが存在する管理情報を参照の対象とし、処理はステップＳ５０８へ進む。一方、管理情報のキャッシュが存在しない場合、処理はステップＳ５０３へ進む。
【００９８】
ステップＳ５０３では、管理情報がストレージから読み出される。本実施形態では、データベースの構築開始の時点で管理情報送受信処理が行われるため（図３を参照）、クエリを受けた時点で管理情報がキャッシュに存在しない場合にも、第二のノード１Ｂは、ストレージに管理情報を有している。展開部３７は、管理情報のキャッシュが存在しない場合、管理情報をストレージ（補助記憶装置１４Ｂ）からＲＡＭ１２Ｂに読み出す。その後、処理はステップＳ５０４へ進む。
【００９９】
ステップＳ５０４では、待機している更新命令の有無が判定される。第二のノード１Ｂは、マップを参照し、ＲＡＭ１２Ｂに読み出された管理情報のページについて待機している更新命令があるか否かを判定する。ＲＡＭ１２Ｂに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップＳ５０８へ進む。一方、ＲＡＭ１２Ｂに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップＳ５０５に進む。
【０１００】
ステップＳ５０５では、更新対象ページに関する更新命令がマップから抽出される。第二のノード１Ｂは、ステップＳ５０３において存在すると判定された更新対象のページ（ここでは、管理情報を含むページ）に対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップＳ５０６へ進む。
【０１０１】
ステップＳ５０６およびステップＳ５０７では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部３３は、マップを参照して、ＲＡＭ１２Ｂに読み出した管理情報に関連づけられている更新命令を実行する（ステップＳ５０６）。即ち、本実施形態において、第二のノード１Ｂは、クエリに応じて（ステップＳ５０１）、データ受信部３２によって受信された管理情報（ステップＳ２０７）をメモリに展開し（ステップＳ５０３）、マップに基づいて更新命令を管理情報に対して実行する。
【０１０２】
ここで、実行部３３は、マップに記録されている順に、待機している更新命令を実行する。そして、第二のノード１Ｂは、ＲＡＭ１２Ｂに読み出した管理情報について待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する（ステップＳ５０７）。その後、処理はステップＳ５０８へ進む。
【０１０３】
ステップＳ５０８では、管理情報が参照されてページが特定される。検索応答部３６は、受信されたクエリにより検索範囲に指定された記憶領域を特定するために、管理情報を参照する。本実施形態では、管理情報を参照することで、クエリを処理するために必要なデータを含むページが特定される。その後、処理はステップＳ５１１へ進む。
【０１０４】
ステップＳ５１１では、検索対象のデータ（ページ）のキャッシュが存在するか否かが判定される。検索応答部３６は、受信したクエリの内容に適合するレコードを抽出するために、当該クエリにより検索範囲に指定された記憶領域にアクセスする。そして、検索応答部３６は、メモリ上に、クエリに係るレコードのキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部３６は、検索対象でのレコードを含むページのキャッシュが存在するか否かを判定する。
【０１０５】
本実施形態では、ページがＲＡＭ１２Ｂに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される（図６および後述する図８のステップＳ５１５からステップＳ５１８に示す処理を参照）。また、キャッシュが存在するページに対する更新命令は即座に実行される（図５を用いて説明したマップ生成処理を参照）。このため、本実施形態において、検索範囲に含まれるページのキャッシュが既に存在する場合（ステップＳ５１１における判定結果が「ＹＥＳ」の場合）、当該ページに対する更新命令の実行が待機されていることはない。従って、対象のページのキャッシュが存在する場合、検索応答部３６は、記憶領域からの読み出しを行わず、既にキャッシュが存在するページを検索処理の対象とし、処理はステップＳ５１９へ進む。一方、対象のページのキャッシュが存在しない場合、処理はステップＳ５１２へ進む。
【０１０６】
ステップＳ５１２では、検索対象のページが第二のノード１Ｂのストレージ（データベース）に存在するか否かが判定される。上述の通り、本実施形態では、ページの送信要求は逐次的に行われるため（ステップＳ２０１を参照）、クエリを受けた時点で、第二のノード１Ｂがクエリに係るページを有していない場合がある。ページがストレージに存在しないと判定された場合、該当するページを第一のノード１Ａから取得するために、処理はステップＳ５１４へ進む。一方、ページがストレージに存在すると判定された場合、処理はステップＳ５１３へ進む。
【０１０７】
ステップＳ５１４では、図４に示されたデータベース送受信処理が実行される。ステップＳ５１２においてページがストレージに存在しないと判定された場合、要求送信部３１は、第一のノード１Ａに対して、データベース中の少なくともクエリに係るデータを指定してデータの送信要求を送信する。本実施形態では、図４に示されたデータベース送受信処理が繰り返されることで管理情報に示されたページが順番に取得されるが、ステップＳ５０１で検索要求を受けて検索対象となったページについては、この順番を無視して、優先的にデータ送信要求される。即ち、本実施形態によれば、検索要求を受けて検索対象となったページを、優先的にリクエスト（データ送信要求）の対象とすることが出来る。その後、処理はステップＳ５１１へ戻る。
【０１０８】
そして、第一のノード１Ａから対象ページが取得されるまで、ステップＳ５１１からステップＳ５１４に示された処理が繰り返され、ステップＳ５０１で受け付けられたクエリへの対応は、対象ページが第一のノード１Ａから取得されるまで待機される。
【０１０９】
ステップＳ５１３では、検索対象のページがストレージから読み出される。展開部３７は、検索対象のデータ（ページ）のキャッシュが存在しないが、第二のノード１Ｂのストレージに存在する場合、そのページをストレージ（補助記憶装置１４Ｂ）からＲＡＭ１２Ｂに読み出し、検索処理の対象とする。その後、処理はステップＳ５１５へ進む。
【０１１０】
なお、展開部３７は、検索範囲に含まれるページを補助記憶装置１４ＢからＲＡＭ１２Ｂに読み出す場合に、例えば、１つ１つ対象のページを読み出してもよいし、複数のページを一度に読み出してもよい。この場合に、実行部３３は、１または複数のページを読み出す毎に、読み出した１または複数のページに対して、後述するステップＳ５１５以降の処理を実行する。
【０１１１】
ステップＳ５１５では、待機している更新命令の有無が判定される。第二のノード１Ｂは、マップを参照し、ＲＡＭ１２Ｂに読み出されたページについて待機している更新命令があるか否かを判定する。ＲＡＭ１２Ｂに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップＳ５１９へ進む。一方、ＲＡＭ１２Ｂに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップＳ５１６に進む。
【０１１２】
ステップＳ５１６では、更新対象ページに関する更新命令がマップから抽出される。第二のノード１Ｂは、ステップＳ５１５において存在すると判定された更新対象のページに対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップＳ５１７へ進む。
【０１１３】
ステップＳ５１７およびステップＳ５１８では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部３３は、マップを参照して、ＲＡＭ１２Ｂに読み出したページに係る更新命令を実行する（ステップＳ５１７）。即ち、本実施形態において、第二のノード１Ｂは、クエリに応じて（ステップＳ５０１）、データ受信部３２によって受信されたデータ（ステップＳ２０７）をメモリに展開し（ステップＳ５１３）、マップに基づいて更新命令を該データに対して実行する。
【０１１４】
ここで、実行部３３は、マップに記録されている順（ＬＳＮ順）に、待機している更新命令を実行する。そして、第二のノード１Ｂは、ＲＡＭ１２Ｂに読み出したページについて待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する（ステップＳ５１８）。その後、処理はステップＳ５１９へ進む。
【０１１５】
このように、検索要求対応処理では、更新実行処理と同様、処理対象として選択したページに複数の更新命令が待機している場合、マップに記録されている順（ＬＳＮ順）に、当該待機している更新命令が実行される。これにより、そのページに関して、第一のノード１Ａと第二のノード１Ｂとの間で、データベースの整合性を保つことができる。
【０１１６】
ステップＳ５１９では、検索応答部３６は、第一のノード１Ａから得られ、更新命令が反映されたページに対して、受信したクエリに応じた検索処理を実行する。その後、処理はステップＳ５２０へ進む。
【０１１７】
ステップＳ５２０では、検索要求（クエリ）に対する応答が送信される。検索応答部３６は、クエリに対する応答として、検索処理の結果をユーザー端末９に送信する。その後、本フローチャートに示された処理は終了する。
【０１１８】
なお、第二のノード１Ｂは、検索要求対応処理を実行するためのインスタンスを複数立ち上げてもよく、このようなインスタンスを生成若しくは削除または起動若しくは停止することで、検索要求対応処理を実行するインスタンスの数を増減させてもよい。例えば、第二のノード１Ｂは、ユーザー端末９から受け付けたクエリの数に応じて起動するインスタンスの数を増減させてもよい。この場合、検索要求対応処理の処理能力を要求に応じて可変にでき、無駄なインスタンスが存在することを避けることができるため、リソースを効率よく活用することが可能になる。
【０１１９】
また、検索要求対応処理は、複数のインスタンスに分けて実行されてもよい。例えば、検索要求対応処理のうち、ステップＳ５１５からステップＳ５１８の処理を、他の処理とは異なるインスタンスで実行することとしてもよい。この場合、例えば、ステップＳ５１５からステップＳ５１８以外の処理を実行するための第一のインスタンスにおいてページ読み出し（ステップＳ５１３）が行われた後に、ページ更新のため、処理がステップＳ５１５からステップＳ５１８の処理を実行するための第二のインスタンスに引き継がれる。そして、第二のインスタンスにおけるステップＳ５１８の処理が完了すると、処理は第一のインスタンスに戻り、ステップＳ５１９の検索処理が実行される。
【０１２０】
＜＜第一の実施形態に係るシステムの効果＞＞
本実施形態に係るシステムによれば、データベース全体を一括コピーすること無く、また、チェックポイントを作成すること無く、データベースの部分（ページ等の所定の管理単位）毎にデータを第一のノード１Ａから第二のノード１Ｂに送信出来る。また、第二のノード１Ｂは、トランザクションログに基づく更新命令同士の依存関係を気にすること無く、データベースの部分毎に並列にトランザクションログを反映することが出来る。また、マップを生成することで、トランザクションログに基づく更新命令の実行を遅延させることが出来、受信されたデータがメモリに展開された場合に、マップに基づいて、トランザクションログに基づく更新命令を、所定の管理単位毎に並列に実行することが出来る。
【０１２１】
結果として、本実施形態に係るシステムによれば、データベース全体の複製完了を待つこと無く、受信したデータを第二のノード１Ｂにおけるクエリに供することが出来る。
【０１２２】
また、本実施形態に係るシステムでは、第一のノード１Ａから第二のノード１Ｂへのデータ送信を、データの送信要求に応じたものとすることで、データ取得を逐次的にする等、データ取得のタイミングを調整することが出来る。更に、第二のノード１Ｂにおいて受け付けられた検索要求に応じてデータの送信要求を行ったり、トランザクションログの反映を行ったりすることで、検索対象となったデータを優先的に取得したり、優先的にトランザクションログを反映したりすることが可能となる。即ち、本実施形態に係るシステムによれば、第二のノード１Ｂが全てのデータを受信していない状態で、ユーザー端末からの検索要求を受け付けることが可能となる。
【０１２３】
＜第二の実施形態＞
次に、第二の実施形態について説明する。第二の実施形態に係るシステムは、第二のノードにデータベース全体を保持することなく、第二のノードがクエリに応答可能とするために、第一の実施形態に係るシステムに構成を追加したものである。第一の実施形態では、全てのページについてのデータベース送受信処理が完了した場合、第二のノードにデータベース全体が保持されることとなるが、第二の実施形態では、データベース中のデータは、保持対象と判定されたものを除いて、第二のノードに恒久的には保持されない。第二の実施形態に係るシステムのうち、上述した第一の実施形態のシステムと共通する構成には、同一の符号を付し、説明を省略する。
【０１２４】
＜＜システムの構成＞＞
第二の実施形態に係るシステムのハードウェア構成は、第一の実施形態に係るシステムのハードウェア構成と概略同様であるため、説明を省略する（図１を参照）。但し、第二の実施形態では、第二のノードの機能構成が第一の実施形態とは異なるため、第二のノードに符号「１Ｂ’」を付して説明する。
【０１２５】
図９は、本実施形態に係る第一のノード１Ａおよび第二のノード１Ｂ’の機能構成の概略を示す図である。本実施形態に係る第一のノード１Ａの機能構成は、第一の実施形態と概略同様であるため説明を省略する。本実施形態に係る第二のノード１Ｂ’は、ＣＰＵ１１Ｂが、ＲＡＭ１２Ｂに展開された各種プログラムを解釈および実行して、ノード１Ｂ’に備えられた各種ハードウェアを制御することで、要求送信部３１、データ受信部３２、実行部３３、マップ生成部３４、検索要求受付部３５、検索応答部３６、展開部３７、判定部３８、記録部３９および削除部４０を備えるコンピューターとして機能する。本実施形態では、第二のノード１Ｂ’の機能が汎用のＣＰＵ１１Ｂによって実行される例について説明しているが、これらの機能は、その一部または全部が、１または複数の専用のプロセッサによって実現されてもよい。
【０１２６】
要求送信部３１、データ受信部３２、実行部３３、マップ生成部３４、検索要求受付部３５、検索応答部３６および展開部３７については、第一の実施形態と概略同様であるため、説明を省略する。
【０１２７】
判定部３８は、検索要求に応じて第一のノード１Ａから得られ、トランザクションに基づく命令が実行されたデータを、第二のノード１Ｂ’における保持対象とするか否かを判定する。
【０１２８】
記録部３９は、判定部３８によって保持対象と判定されたデータを、不揮発性の記憶装置である補助記憶装置１４Ｂに記録する。
【０１２９】
削除部４０は、検索要求に応じて第一のノード１Ａから得られ、トランザクションに基づく命令が実行されたデータを、検索応答部３６による応答に用いた後、所定の条件に従って自動的に第二のノードから削除する。
【０１３０】
＜＜処理の流れ＞＞
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の形態に応じて適宜選択されてよい。
【０１３１】
なお、第一の実施形態において説明したデータベース送受信処理（図４を参照）、マップ生成処理（図５を参照）および更新実行処理（図６を参照）は、第二の実施形態でも実行される。これらの処理の詳細は、第一の実施形態において説明した通りであるため、説明を省略する。
【０１３２】
図１０は、本実施形態において、第一のノード１Ａおよび第二のノード１Ｂ’によって実行されるトランザクションログ送受信開始処理の流れを示すフローチャートである。本フローチャートに示された処理は、第一の実施形態において説明した管理情報送受信処理（図３を参照）に代えて実行される処理であり、データベースの構築開始の指示が受け付けられたことを契機として開始される。
【０１３３】
ステップＳ８０１およびステップＳ８０２では、トランザクションログ要求が送受信される。要求送信部３１は、第一のノード１Ａに対して、トランザクションログの送信要求を送信する（ステップＳ８０１）。要求受信部２２は、第二のノード１Ｂ’によって送信された要求を受信する（ステップＳ８０２）。その後、処理はステップＳ８０３へ進む。
【０１３４】
ステップＳ８０３およびステップＳ８０４では、トランザクションログの送受信が開始される。ログ送信部２４は、以降、第一のノード１Ａにおいて新たに発生したトランザクションログおよびＬＳＮを、発生次第、互いに関連づけて第二のノード１Ｂ’に順次送信する（ステップＳ８０３）。第二のノード１Ｂ’のデータ受信部３２は、第一のノード１Ａによって送信された、トランザクションログおよび該トランザクションログに係るＬＳＮの受信を開始する（ステップＳ８０４）。即ち、第二のノード１Ｂ’は、ログの送信開始後、所定の時点以降のトランザクションログを全て受信することとなる。その後、処理はステップＳ８０５へ進む。
【０１３５】
ステップＳ８０５では、検索要求（クエリ）の受付が開始される。第二のノード１Ｂ’は、後述するオンデマンド処理を開始させることで、ユーザー端末９から送信されるクエリの受付を開始する。以降、検索要求受付部３５は、ユーザー端末９からのクエリを受け付け、クエリが受け付けられると、クエリに応じるために必要なページ（管理情報を含む）が取得される。その後、本フローチャートに示された処理は終了する。
【０１３６】
即ち、第二の実施形態では、第一の実施形態と異なり、データベースの構築開始の時点で管理情報送受信処理が行われない。
【０１３７】
また、図４に示すデータベース送受信処理については、第一の実施形態において「第一のノード１Ａによって管理されているデータベースのページ構成を把握可能となったことを契機として開始される」と説明したが、第二の実施形態では、第一の実施形態とは異なり、後述するオンデマンド処理の中で呼び出されるタイミングで実行される（後述するステップＳ６０５およびステップＳ５１４を参照）。
【０１３８】
図１１は、本実施形態において、第二のノード１Ｂ’によって実行されるオンデマンド処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード１Ｂ’が、ユーザー端末９等からクエリを受信したことを契機として開始される。即ち、本実施形態では、第一の実施形態において説明した検索要求対応処理（図７および図８を参照）に代えて、オンデマンド処理が実行される。
【０１３９】
但し、第二の実施形態では、上述の通り、データベースの構築開始の時点で管理情報送受信処理が行われていない。このため、検索要求が受け付けられた時点で、第二のノード１Ｂ’が管理情報を有していない可能性がある。そして、第二のノード１Ｂ’が管理情報を有していない場合、データの送信要求においてクエリに係るページを指定することが出来ない。このため、本実施形態に係るオンデマンド処理では、検索要求が受け付けられると、はじめに、第二のノード１Ｂ’が管理情報を有しているか否かが確認される。そして、第二のノード１Ｂ’が管理情報を有していない場合、これを第一のノード１Ａから取得してから、データベース送受信処理が実行される。以下、本実施形態に係るオンデマンド処理の詳細を、図１１を参照しながら説明する。
【０１４０】
ステップＳ６０１では、クエリが受け付けられる。検索要求受付部３５は、ユーザー端末９からのクエリを受け付ける。その後、処理はステップＳ６０２へ進む。
【０１４１】
ステップＳ６０２では、管理情報のキャッシュが存在するか否かが判定される。検索応答部３６は、メモリ上に、管理情報のキャッシュが存在するか否かを判定する。なお、本実施形態では、レコードはページ単位で管理されているため、検索応答部３６は、検索対象での管理情報を含むページのキャッシュが存在するか否かを判定する。
【０１４２】
本実施形態では、管理情報を含むページがＲＡＭ１２Ｂに読み出された段階で、当該ページに対して、待機させられた更新命令が実行される（図６および後述するステップＳ６０６からステップＳ６０９に示す処理を参照）。また、キャッシュが存在するページに対する更新命令は即座に実行される（図５を用いて説明したマップ生成処理を参照）。このため、本実施形態において、管理情報を含むページのキャッシュが既に存在する場合（ステップＳ６０２における判定結果が「ＹＥＳ」の場合）、当該ページに対する更新命令の実行が待機されていることはない。従って、管理情報を含むページのキャッシュが存在する場合、検索応答部３６は、記憶領域からの読み出しを行わず、既にキャッシュが存在する管理情報を参照の対象とし、処理はステップＳ６１０へ進む。一方、管理情報のキャッシュが存在しない場合、処理はステップＳ６０３へ進む。
【０１４３】
ステップＳ６０３では、管理情報を含むページが第二のノード１Ｂ’のストレージ（データベース）に存在するか否かが判定される。上述の通り、本実施形態では、データベースの構築開始の時点で管理情報送受信処理が行われていない可能性があるため、クエリを受けた時点で、第二のノード１Ｂ’がクエリに係るページを特定するための管理情報を有していない場合がある。管理情報がストレージに存在しないと判定された場合、管理情報を第一のノード１Ａから取得するために、処理はステップＳ６０５へ進む。一方、ページがストレージに存在すると判定された場合、処理はステップＳ６０４へ進む。
【０１４４】
ステップＳ６０５では、図４に示されたデータベース送受信処理が実行される。ステップＳ６０３において管理情報がストレージに存在しないと判定された場合、要求送信部３１は、クエリに応じて、第一のノード１Ａに対して、管理情報に係るデータを指定してデータの送信要求を送信する。上述の通り、本実施形態では、管理情報の送受信についても、他のテーブルと同様ページ単位で行われるため、図４に示されたデータベース送受信処理によって管理情報を取得することが出来る。その後、処理はステップＳ６０２へ戻る。そして、第一のノード１Ａから管理情報が取得されるまで、ステップＳ６０２からステップＳ６０５に示された処理が繰り返される。
【０１４５】
ステップＳ６０４では、管理情報がストレージから読み出される。展開部３７は、管理情報のキャッシュが存在しないが、第二のノード１Ｂ’のストレージに存在する場合、管理情報をストレージ（補助記憶装置１４Ｂ）からＲＡＭ１２Ｂに読み出す。その後、処理はステップＳ６０６へ進む。
【０１４６】
ステップＳ６０６では、待機している更新命令の有無が判定される。第二のノード１Ｂ’は、マップを参照し、ＲＡＭ１２Ｂに読み出された管理情報のページについて待機している更新命令があるか否かを判定する。ＲＡＭ１２Ｂに読み出されたページについて待機している更新命令がマップに記録されていない場合、処理はステップＳ６１０へ進む。一方、ＲＡＭ１２Ｂに読み出したページについて待機している更新命令がマップに記録されている場合、処理はステップＳ６０７に進む。
【０１４７】
ステップＳ６０７では、更新対象ページに関する更新命令がマップから抽出される。第二のノード１Ｂ’は、ステップＳ６０３において存在すると判定された更新対象のページ（ここでは、管理情報を含むページ）に対する更新命令を、マップから全て抽出する。このようにすることで、更新対象ページに関するマップ上の更新命令を全て実行し、更新命令が実行されたページをそのままキャッシュとして、データの検索または処理に供することが出来る。その後、処理はステップＳ６０８へ進む。
【０１４８】
ステップＳ６０８およびステップＳ６０９では、マップに待機している更新命令および抽出された更新命令が実行され、実行済みの更新命令がマップから削除される。実行部３３は、マップを参照して、ＲＡＭ１２Ｂに読み出した管理情報に係る更新命令を実行する（ステップＳ６０８）。即ち、本実施形態において、第二のノード１Ｂ’は、クエリに応じて（ステップＳ６０１）、データ受信部３２によって受信された管理情報（ステップＳ２０７）をメモリに展開し（ステップＳ６０４）、マップに基づいて更新命令を管理情報に対して実行する。
【０１４９】
ここで、実行部３３は、マップに記録されている順に、待機している更新命令を実行する。そして、第二のノード１Ｂ’は、ＲＡＭ１２Ｂに読み出した管理情報について待機している更新命令を全て実行した後に、実行した更新命令に関する記録をマップから削除する（ステップＳ６０９）。その後、処理はステップＳ６１０へ進む。
【０１５０】
ステップＳ６１０では、管理情報が参照されてページが特定される。検索応答部３６は、受信されたクエリにより検索範囲に指定された記憶領域を特定するために、管理情報を参照する。本実施形態では、管理情報を参照することで、クエリを処理するために必要なデータを含むページが特定される。その後、処理は図８を用いて説明した検索要求対応処理のステップＳ５１１からステップＳ５２０に示す処理の内容と概略同様の処理へ進む。
【０１５１】
即ち、第一のノード１Ａから対象ページが取得されるまで、ステップＳ５１１からステップＳ５１４に示された処理が繰り返され、ステップＳ６０１で受け付けられたクエリへの対応は、対象ページが第一のノード１Ａから取得されるまで待機される。本実施形態では、検索要求を受けて検索対象となることで、はじめてリクエスト（データ送信要求）の対象となる。その後、ステップＳ５１９およびステップＳ５２０に示された処理が実行され、クエリに対する応答が完了すると、本フローチャートに示された処理は終了する。
【０１５２】
図１２は、本実施形態において、第二のノード１Ｂ’によって実行される削除処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノード１Ｂ’において、メモリに展開されてキャッシュとなっているデータの単位（本実施形態では、ページ単位）毎に、定期的に実行される。
【０１５３】
ステップＳ７０１では、データが削除条件を満たしたか否かが判定される。削除部４０は、第二のノード１Ｂ’上にあるキャッシュのうち、判定対象のページに係るキャッシュついて、所定の削除条件を満たしたか否かを判定する。ここで用いられる削除条件は、例えば、データ処理に関する時点（第一のノード１Ａから取得された時点や、クエリ応答や更新等のために最後に参照された時点等）から所定の時間が経過したこと、等である。但し、削除条件は、本実施形態における例示に限定されない。削除条件を満たさないと判定された場合、判定対象のページに係るキャッシュは削除されず、本フローチャートに示された処理は終了する。一方、削除条件を満たしたと判定された場合、処理はステップＳ７０２へ進む。
【０１５４】
ステップＳ７０２では、データが保持の対象であるか否かが判定される。判定部３８は、第二のノード１Ｂ’によって保持されているデータのうち、判定対象のページについて、第二のノード１Ｂ’における保持対象とするか否かを判定する。ここで、判定のための条件は、例えば、当該データがクエリにおいて参照される頻度等に基づいて決定されてよい。例えば、参照される頻度の高いデータを保持の対象とし、頻度の低いデータを保持の対象としないことで、クエリへの応答速度を犠牲にすること無く、第二のノード１Ｂ’のストレージやメモリを節約することが出来る。また、例えば、予め管理者等によって指定されたテーブルやページを保持の対象として設定しておくことも可能である。但し、保持対象とするか否かの判定条件は、本実施形態における例示に限定されない。判定条件は、実施の形態に応じて適宜採用することが出来る。判定対象のページが、保持の対象となるための条件を満たさない場合、処理はステップＳ７０４へ進む。一方、判定対象のページが、保持の対象となるための条件を満たしている場合、処理はステップＳ７０３へ進む。
【０１５５】
ステップＳ７０３では、データがストレージに記録される。記録部３９は、判定部３８によって保持対象と判定されたデータ（本実施形態では、ページ単位で判定される）を、ストレージ（本実施形態では、補助記憶装置１４Ｂ）に記録する。その後、処理はステップＳ７０５へ進む。
【０１５６】
ステップＳ７０４では、削除条件を満たしたデータがストレージから削除される。削除部４０は、判定部３８によって保持対象ではないと判定されたデータ（本実施形態では、ページ単位で判定される）が、第二のノード１Ｂ’のストレージに記録されている場合に、これをストレージ（本実施形態では、補助記憶装置１４Ｂ）から削除する。このようにすることで、受信されてキャッシュとなる前に一旦ストレージに記録されたデータについても、ストレージから削除することが出来る。その後、処理はステップＳ７０５へ進む。
【０１５７】
ステップＳ７０５では、削除条件を満たしたデータのキャッシュが削除される。削除部４０は、削除条件を満たしたページのキャッシュを、第二のノード１Ｂ’のメモリから削除する。その後、本フローチャートに示された処理は終了する。
【０１５８】
なお、図１２に示したフローチャートでは、キャッシュとなっているデータについて削除の対象とするか否かを判定している。但し、ストレージに保持されているがキャッシュとなっていないデータについても、定期的に保持対象であるか否かを判定し、保持対象となるための条件（ステップＳ７０２を参照）を満たさなくなった場合にはストレージから削除することとしてもよい。このようにすることで、ストレージにのみ保持されているようなデータについても、時間の経過に従ってストレージから削除し、ストレージの容量を節約することが出来る。
【０１５９】
＜＜第二の実施形態に係るシステムの効果＞＞
第二の実施形態に係るシステムによっても、第一の実施形態に係るシステムと同様の効果を得ることが出来る。また、第二の実施形態では、更に判定部３８、記録部３９および削除部４０を備えることで、第二のノード１Ｂ’のストレージやメモリを節約しながら、ユーザー端末９に対して、あたかも第二のノード１Ｂ’がデータベース全体に係るデータを有しているかのようにサービスを提供することが出来る。
【０１６０】
また、判定部３８や削除部４０によって用いられる条件を実施の形態に応じて適宜設定することで、ストレージリソースとネットワークリソースのバランスに応じて、リソースの無駄が少ないシステムを構築することが可能となる。
【図１】
0006461101.tif 000002
【図２】
0006461101.tif 000003
【図３】
0006461101.tif 000004
【図４】
0006461101.tif 000005
【図５】
0006461101.tif 000006
【図６】
0006461101.tif 000007
【図７】
0006461101.tif 000008
【図８】
0006461101.tif 000009
【図９】
0006461101.tif 000010
【図１０】
0006461101.tif 000011
【図１１】
0006461101.tif 000012
【図１２】
0006461101.tif 000013