(57)【要約】データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することを課題とし、データベースシステムにおいて、トランザクション管理ノードに、セッション管理ノードから削除対象識別情報を取得する情報取得部と、変更されたデータ単位を示す情報と、削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定部と、競合が無い場合に、データセットに対してトランザクション識別子を設定する識別子設定部と、トランザクション識別子をデータストア管理ノードに送信する識別子送信部と、競合が無い場合に、削除対象識別情報を、変更されたデータ単位を示す情報として蓄積する変更データ単位情報蓄積部と、を備えた。
2017077616.tif 000002
【特許請求の範囲】
【請求項１】
複数のセッション管理ノードと、複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムであって、
前記複数のセッション管理ノードの夫々は、
処理用データを、前記複数のデータストア管理ノードの少なくとも何れかから取得する処理用データ取得手段と、
取得されたデータに対する処理においてデータベースの内容が変更される場合に、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を含むデータセットを生成するデータセット生成手段と、
前記データセットを送信するデータセット送信手段であって、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、
前記トランザクション管理ノードは、
前記セッション管理ノードの前記データセット送信手段によって送信されたデータセットのうち、少なくとも前記削除対象識別情報を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積手段と、
前記変更データ単位情報蓄積手段によって蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセットに対して、該データセットに係るトランザクションを示すトランザクション識別子を設定する識別子設定手段と、
前記トランザクション識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに送信する識別子送信手段と、を備え、
前記変更データ単位情報蓄積手段は、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記削除対象識別情報を、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積し、
前記複数のデータストア管理ノードの夫々は、
前記処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段と、
前記データセットおよび前記トランザクション識別子を受信する変更用情報受信手段と、
データベースを管理するデータベース管理手段であって、前記データセットおよび前記トランザクション識別子に基づいて、該データストア管理ノードが管理するデータベースの内容を変更するデータベース管理手段と、を備える、
データベースシステム。
【請求項２】
前記データセット生成手段は、前記対象識別情報および変更内容を含むデータセットを生成し、
前記データセット送信手段は、前記データセットを、前記複数のデータストア管理ノードのうちの少なくとも何れかに到達するように送信する、
請求項１に記載のデータベースシステム。
【請求項３】
前記データセット送信手段は、前記対象識別情報および前記変更内容を、前記データストア管理ノードに直接送信するか、または前記トランザクション管理ノードを介して前記データストア管理ノードに到達するように送信する、
請求項２に記載のデータベースシステム。
【請求項４】
前記セッション管理ノードの前記データセット送信手段は、前記データセットを、前記トランザクション管理ノードを介して前記データストア管理ノードに到達するように送信し、
前記トランザクション管理ノードの前記情報取得手段は、前記データセット送信手段によって送信された前記データセットを取得し、
前記トランザクション管理ノードは、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセットを、前記複数のデータストア管理ノードのうちの少なくとも何れかに転送する変更用データ転送手段を更に備える、
請求項２に記載のデータベースシステム。
【請求項５】
前記データセット生成手段によって生成される前記データセットは、該データセットを識別可能なデータセット識別子を更に含み、
前記セッション管理ノードの前記データセット送信手段は、前記データセット識別子、前記対象識別情報および前記変更内容を、前記データストア管理ノードに直接送信し、前記データセット識別子を、前記トランザクション管理ノードを介して前記データストア管理ノードに到達するように送信し、
前記トランザクション管理ノードは、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット送信手段から受信した前記データセット識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに転送する変更用データ転送手段を更に備え、
前記データストア管理ノードの前記データベース管理手段は、前記データセット識別子によって特定されたデータセットおよび前記トランザクション識別子に基づいて、該データストア管理ノードが管理するデータストアの内容を変更する、
請求項２に記載のデータベースシステム。
【請求項６】
前記セッション管理ノードは、処理に用いられるスナップショットを特定可能な情報を取得するスナップショット特定用情報取得手段を更に備え、
前記処理用データ取得手段は、前記スナップショット特定用情報取得手段によって取得された情報を指定することで、前記スナップショットにおけるデータを取得する、
請求項１から５の何れか一項に記載のデータベースシステム。
【請求項７】
前記トランザクション識別子は、トランザクションの時系列における順序を把握可能な識別子であり、
前記スナップショット特定用情報取得手段によって取得された情報は、トランザクション識別子であり、
前記処理用データ送信手段は、前記セッション管理ノードから、前記スナップショットにおけるトランザクション識別子を指定したデータ要求を受信した場合に、指定されたトランザクション識別子が示すトランザクションまでのトランザクションに対応するデータセットに基づく変更が適用された状態の処理用データを、前記セッション管理ノードに対して送信する、
請求項６に記載のデータベースシステム。
【請求項８】
前記処理用データ送信手段は、指定されたトランザクション識別子が示すトランザクションまでのトランザクションに対応するデータセットに基づく変更が、前記データベース管理手段によって前記データベースに対して適用されるのを待ってから前記処理用データを抽出し、前記セッション管理ノードに対して送信する、
請求項７に記載のデータベースシステム。
【請求項９】
前記セッション管理ノードの前記処理用データ取得手段は、他のセッション管理ノードに対して、前記処理用データの要求を送信可能であり、
第一のセッション管理ノードの前記処理用データ取得手段から送信されたデータ要求を受信した第二のセッション管理ノードにおいて、前記処理用データ取得手段は、該データ要求に従って前記データストア管理ノードから前記処理用データを取得し、
前記セッション管理ノードは、前記第二のセッション管理ノードとして前記処理用データを取得した場合に、該処理用データを、前記第一のセッション管理ノードに対して転送する処理用データ転送手段を更に備える、
請求項１から８の何れか一項に記載のデータベースシステム。
【請求項１０】
前記トランザクション識別子は、トランザクションの時系列における順序を把握可能な識別子であり、
前記データベース管理手段は、前記トランザクション識別子によって把握される順序に従って、前記データセットおよび前記トランザクション識別子に基づいて、データベースの内容を変更する、
請求項１から９の何れか一項に記載のデータベースシステム。
【請求項１１】
前記セッション管理ノードの夫々は、
クエリを受け付けるクエリ受付手段と、
前記クエリを処理するクエリ処理手段と、
を更に備え、
前記処理用データ取得手段は、前記クエリの処理に用いるデータを、前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項１から１０の何れか一項に記載のデータベースシステム。
【請求項１２】
前記競合判定手段によって削除対象の競合が有ると判定された場合に、前記データセットに基づく変更が中止される、
請求項１から１１の何れか一項に記載のデータベースシステム。
【請求項１３】
前記データセット生成手段は、前記対象識別情報に、前記複数のセッション管理ノード毎に異なる値を含めることで、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を生成する、
請求項１から１２の何れか一項に記載のデータベースシステム。
【請求項１４】
複数のセッション管理ノードおよび複数のデータストア管理ノードと通信可能なトランザクション管理ノードであって、
前記セッション管理ノードによって送信された、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を含むデータセットのうち、少なくとも削除対象のデータ単位を示す対象識別情報である削除対象識別情報を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積手段と、
前記変更データ単位情報蓄積手段によって蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセットに対して、該データセットに係るトランザクションを示すトランザクション識別子を設定する識別子設定手段と、
前記トランザクション識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに送信する識別子送信手段と、を備え、
前記変更データ単位情報蓄積手段は、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記削除対象識別情報を、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積する、
トランザクション管理ノード。
【請求項１５】
複数のセッション管理ノードおよび複数のデータストア管理ノードと通信可能なトランザクション管理ノードのコンピューターが、
前記セッション管理ノードによって送信された、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を含むデータセットのうち、少なくとも削除対象のデータ単位を示す対象識別情報である削除対象識別情報を取得する情報取得ステップと、
該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積ステップと、
前記変更データ単位情報蓄積ステップにおいて蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定ステップと、
前記競合判定ステップにおいて削除対象の競合が無いと判定された場合に、前記データセットに対して、該データセットに係るトランザクションを示すトランザクション識別子を設定する識別子設定ステップと、
前記トランザクション識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに送信する識別子送信ステップと、を実行し、
前記変更データ単位情報蓄積ステップでは、前記競合判定ステップにおいて削除対象の競合が無いと判定された場合に、前記削除対象識別情報が、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積される、
トランザクション管理方法。
【請求項１６】
複数のセッション管理ノードおよび複数のデータストア管理ノードと通信可能なトランザクション管理ノードのコンピューターに、
前記セッション管理ノードによって送信された、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を含むデータセットのうち、少なくとも削除対象のデータ単位を示す対象識別情報である削除対象識別情報を取得する情報取得ステップと、
該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積ステップと、
前記変更データ単位情報蓄積ステップにおいて蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定ステップと、
前記競合判定ステップにおいて削除対象の競合が無いと判定された場合に、前記データセットに対して、該データセットに係るトランザクションを示すトランザクション識別子を設定する識別子設定ステップと、
前記トランザクション識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに送信する識別子送信ステップと、を実行させ、
前記変更データ単位情報蓄積ステップでは、前記競合判定ステップにおいて削除対象の競合が無いと判定された場合に、前記削除対象識別情報が、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積される、
トランザクション管理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベースの内容の変更（ｍｏｄｉｆｙ）に関する。
【背景技術】
【０００２】
従来、多重化データベースシステムにおける同期化方法として、仲介装置が、クライアントからの処理要求を複数のサーバに転送し、各サーバから受信した応答結果のうち正当なものをクライアントに返す多重化データベースシステムにおいて、仲介装置が処理要求に順序番号を付与し、各サーバが該順序番号に基づき処理要求を並べ替えるとともに、サーバにおいてロック競合等が生じないようＤＢＭＳへの投入順序を制御する技術が提案されている（特許文献１を参照）。【０００３】
また、データ複製機能にモバイルエージェントを使用し、サイトＡでデータベースを更新した場合、この更新を検出して更新内容から更新トランザクションデータを生成し、サイトＢに移動して更新トランザクションを実行し、データベースを更新する分散データベースシステムが提案されている（特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１９５９８号公報
【特許文献２】特開２００１−３５０７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、データベース管理システム（ＤＢＭＳ）では、変更によってデータベース内に矛盾が生じないことを保証するため、データベース内のデータが存在する場所毎に、ロックマネージャーが競合チェックを行い、ロックを取得していた。このため、データベースが複数ノードによって管理されるシステムに従来の仕組みをそのまま適用した場合、ノード毎にロックが取得され、トランザクションマネージャーが全てのロックの取得に成功したか否かを確認し、ロックの取得が全て成功していれば、コミット完了と判定されることとなる（所謂２相コミット）。【０００６】
このため、上述の２相コミットのような従来の技術では、複数ノードによって管理されるデータベースにおいて、データベース内で矛盾が生じないように各ノードが管理する部分を変更する場合、複雑な処理が必要となり、システムの複雑化ひいてはパフォーマンスの低下を招いていた。【０００７】
本開示にかかる技術は、上記した問題に鑑み、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することを課題とする。
【課題を解決するための手段】
【０００８】
本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係るデータベースシステムは、複数のセッション管理ノードと、複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムであって、前記複数のセッション管理ノードの夫々は、処理用データを、前記複数のデータストア管理ノードの少なくとも何れかから取得する処理用データ取得手段と、取得されたデータに対する処理においてデータベースの内容が変更される場合に、対象となるデータ単位を前記複数のデータストア管理ノードによって管理される複数のデータストア間で一意に把握可能な対象識別情報を含むデータセットを生成するデータセット生成手段と、前記データセットを送信するデータセット送信手段であって、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、前記トランザクション管理ノードは、前記セッション管理ノードの前記データセット送信手段によって送信されたデータセットのうち、少なくとも前記削除対象識別情報を取得する情報取得手段と、該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積手段と、前記変更データ単位情報蓄積手段によって蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセットに対して、該データセットに係るトランザクションを示すトランザクション識別子を設定する識別子設定手段と、前記トランザクション識別子を、前記複数のデータストア管理ノードのうちの少なくとも何れかに送信する識別子送信手段と、を備え、前記変更データ単位情報蓄積手段は、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記削除対象識別情報を、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積し、前記複数のデータストア管理ノードの夫々は、前記処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段と、前記データセットおよび前記トランザクション識別子を受信する変更用情報受信手段と、データベースを管理するデータベース管理手段であって、前記データセットおよび前記トランザクション識別子に基づいて、該データストア管理ノードが管理するデータベースの内容を変更するデータベース管理手段と、を備える、データベースシステムである。
【発明の効果】
【０００９】
本開示に係る技術によれば、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るデータベースシステムの構造を例示する図である。
【図２】実施形態に係るノードのハードウェア構成の概略を示す図である。
【図３】実施形態に係るノードの機能構成の概略を示す図である。
【図４】実施形態において生成される変更用データセットの構造を示す図である。
【図５】実施形態におけるデータベース管理処理の流れを示すフローチャート（１）である。
【図６】実施形態におけるデータベース管理処理の流れを示すフローチャート（２）である。
【図７】実施形態におけるデータベース管理処理の流れを示すフローチャート（３）である。
【図８】実施形態において生成される変更用データセットのバリエーションを示す図である。
【図９】実施形態におけるデータベース管理処理のバリエーションを示すフローチャート（１）である。
【図１０】実施形態におけるデータベース管理処理のバリエーションを示すフローチャート（２）である。
【発明を実施するための形態】
【００１１】
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
【００１２】
＜システムの構成＞
以下、複数のノードを有するデータベースシステムにおいて、データベースの内容の変更命令を含むトランザクションが処理される場合に、当該変更命令に係る変更内容を、当該データベースシステムに属する複数のノードが管理する夫々のデータストアに対して反映する技術を説明する。ここで、データストアとは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部の記録、またはデータベースの一部または全部が保持される場所、を示す語である。なお、本開示に係るデータベース管理技術は、本実施形態において例示されたシステムに限らず、複数のノードを有するデータベースシステムに適用可能である。また、本開示に係るデータベース管理技術を採用可能なデータベースシステムは、追記型のデータベースシステムや、ロールバックセグメントを利用するデータベースシステム等、様々な種類のデータベースシステムに適用可能である。本開示に係るデータベース管理技術を採用可能なデータベースシステムは、特定の種類のデータベースシステムに限定されない。
【００１３】
図１は、本実施形態に係るデータベースシステムの構造を例示する図である。本実施形態に係るデータベースシステムでは、複数の情報処理装置（ノード）が、ネットワークを介して互いに通信可能に接続されている。本実施形態に係るデータベースシステムでは、複数のノードのうちの少なくとも１つが、トランザクションマネージャーとしての役割を有するトランザクション管理ノードである。また、その他のノードは、セッションマネージャーとしての役割およびデータストアマネージャーとしての役割を有するノードであり、これらのノードは、セッション管理ノードとしても、データストア管理ノードとしても動作する。
【００１４】
但し、本開示に係るデータベース管理技術を適用可能なデータベースシステムは、本実施形態に例示した構成のデータベースシステムに限定されない。例えば、セッションマネージャーとデータストアマネージャーとは、異なるノードにおいて動作してもよい。何れにしても、本実施形態に係るデータベースシステムは、複数のセッション管理ノードと、複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備える。
【００１５】
また、本実施形態において、データストア管理ノードは、夫々、自身において動作するデータストアマネージャーによって管理されるデータストアを有しており、これらのデータストアは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部を有している。このため、本開示に係るデータベース管理技術では、データベースに加えられる変更の内容を含む変更用データセットが、何れかのセッションマネージャーによって生成され、システムに属する複数のデータストアマネージャーに伝播され、伝播された変更用データセットに基づいて各データストアが変更されることで、データベース全体の変更が完了する。データベース管理技術の詳細については、後述する。
【００１６】
更に、ネットワークには、ユーザー端末９が接続されており、セッションマネージャーは、何れも、ユーザー端末９等から送信されたクエリを受け付けて実行することが可能である。
【００１７】
図２は、本実施形態に係るノードのハードウェア構成の概略を示す図である。ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３等からなる制御部１０と、ストレージ（補助記憶装置）１４と、通信インターフェース１５と、を備えるコンピューターである。但し、ノードの具体的なハードウェア構成に関しては、実施の態様に応じて適宜省略や置換、追加が可能である。また、ノードは、単一の装置に限定されない。ノードは、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。なお、各ノードが管理するデータストアは、ストレージ１４上に構築されてもよいし、ＲＡＭ１２上に構築されてもよく、データストアの構築場所は限定されない。
【００１８】
ストレージ１４には、オペレーティングシステムとともに、各種プログラムが格納されており、当該プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、前述のノードとしての機能が実現される。なお、各マネージャーが動作するノードは、何れも同様のハードウェア構成を有してよい。
【００１９】
図３は、本実施形態に係るノードの機能構成の概略を示す図である。先述の通り、本実施形態において、各ノードは、セッションマネージャー、トランザクションマネージャー、およびデータストアマネージャーの何れかの役割を有する。
【００２０】
はじめに、セッション管理ノードの機能構成を説明する。本実施形態において、セッションマネージャーとしての役割を有する複数のノードの夫々は、セッションマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、クエリ受付部２１、クエリ処理部２２、スナップショット特定用情報取得部２３、処理用データ取得部２４、データセット生成部２５、データセット送信部２６および処理用データ転送部２７を備えるセッション管理ノードとして機能する。
【００２１】
クエリ受付部２１は、ユーザー端末９から送信された、データベースシステムに対するクエリを受け付ける。本実施形態に係るデータベースシステムでは、セッションマネージャーを実行するセッション管理ノードが複数あり、これら複数のセッション管理ノードの何れも、ユーザー端末９からのクエリを受け付けることが出来る。
【００２２】
クエリ処理部２２は、クエリ受付部２１によって受け付けられたクエリを処理する。
【００２３】
スナップショット特定用情報取得部２３は、トランザクションマネージャーから、処理に用いられるスナップショットを特定可能な情報を取得する。ここで、スナップショットとは、トランザクションが順次コミットされることでデータベースの内容が変化していく時系列における、ある時点におけるデータベースの内容を示す語である。なお、本実施形態において、スナップショット特定用情報取得部２３によって取得される情報は、トランザクションＩＤ（以下、「スナップショット特定用トランザクションＩＤ」と称する）である。但し、取得される情報は、トランザクションの処理に用いられるデータの一貫性を保証するためのものであるため、スナップショットを特定可能な情報であればよく、トランザクションＩＤに限られない。例えば、スナップショットを特定可能な情報は、トランザクションＩＤではなく、複数のトランザクションが順次処理される時系列における論理上のある時点を特定可能な情報であってもよい。
【００２４】
処理用データ取得部２４は、クエリの処理に用いるデータを、複数のデータストアマネージャーの少なくとも何れかから取得する。この際、処理用データ取得部２４は、データストアマネージャーに対して、スナップショット特定用情報取得部２３によって取得された情報（本実施形態では、トランザクションＩＤ）を指定することで、所定のスナップショットにおけるデータを取得する。
【００２５】
なお、処理用データ取得部２４が動作するノード上のデータストアがデータベースの全体を有している場合、処理用データ取得部２４は、同一のノードにおいて動作するデータストアマネージャーに対してのみ、データ要求を発行すればよい。しかし、処理用データ取得部２４がデータ要求を発行するデータストアマネージャーは、同一のノードにおいて動作するデータストアマネージャーに限定されない。例えば、処理用データ取得部２４が動作するノード上のデータストアがデータベースの全体を有していない場合、処理に用いられるデータを含むデータストアを管理するノードに対してデータ要求が発行される。また、セッションマネージャーとデータストアマネージャーとが同一ノードに共存しないデータベースシステムでは、処理用データを取得したいセッション管理ノードは、データストアマネージャーが動作する他のノードに対して、データ要求を発行する。
【００２６】
データセット生成部２５は、取得されたデータに係るトランザクションに、データベースの内容を変更する変更命令が含まれる場合に、当該変更命令に基づく変更をデータベースに加えることなく、変更対象のタプルのタプルＩＤおよび変更内容を含む変更用データセットを生成する。なお、本実施形態では、データベースにおいて個々のレコードとして扱われるデータ単位をタプルと称して説明しているが、本開示を適用可能なデータベースシステムは、リレーショナルデータベースに限定されない。タプルＩＤは、複数のデータストアマネージャーによって管理される複数のデータストア間において、変更の対象となるタプル（データ単位）を一意に把握可能な（ユニークな）対象識別情報である。本実施形態において、データセット生成部２５は、複数のセッション管理ノード毎に異なる値（例えば、ノードＩＤ）をタプルＩＤに含めることで、ユニークなタプルＩＤを生成する。但し、変更用データセットは、変更命令に基づく当該データベースの変更内容、および当該データベースシステムにおいて変更の対象となるタプルを一意に把握可能な情報を含んでいればよく、これらの情報は、本実施形態における例示に限定されない。
【００２７】
図４は、本実施形態において生成される変更用データセットの構造を示す図である。変更用データセットは、変更命令に基づく変更の対象となるタプルを含むデータをＲＡＭ１２上に読み出して、当該データに対して変更命令に基づく操作を行うことで生成される情報であり、スナップショット特定用トランザクションＩＤ、ＤＥＬＥＴＥ命令対象タプルリスト、ＩＮＳＥＲＴ命令対象タプルリスト、およびＵＰＤＡＴＥ命令対象タプルリスト、を含む。但し、上述の通り、本実施形態に係るデータベースシステムでは、セッションマネージャーのデータセット生成部２５によって変更用データセットが生成される時点では、各データストアに変更は加えられないため、データベースの内容は変更されない。
【００２８】
ＤＥＬＥＴＥ命令対象タプルリスト、ＩＮＳＥＲＴ命令対象タプルリスト、およびＵＰＤＡＴＥ命令対象タプルリストには、変更命令の対象となるタプルを示す情報が含まれる。具体的には、ＤＥＬＥＴＥ命令対象タプルリストには、削除の対象となるタプルのタプルＩＤ（図４に示す例では、２）が含まれ、ＩＮＳＥＲＴ命令対象タプルリストには、追加されるタプルのタプルＩＤ（図４に示す例では、１３）および追加されるデータの内容が含まれる。また、ＵＰＤＡＴＥ命令対象タプルリストには、追加されるタプルのタプルＩＤ（図４に示す例では、１１および１２）および追加されるデータの内容に加えて、元のタプルＩＤ（オリジナルタプルＩＤ。図４に示す例では、４および７）が含まれる。
【００２９】
なお、変更用データセットの具体的な構成、フォーマットまたは生成方法は、上述した例に限定されない。例えば、変更用データセットに含まれるタプルリストは、変更命令によるデータベースの変更内容が、データベースと同一または類似するデータフォーマットで示された情報であってもよい。即ち、タプルリストは、変更命令による変更が適用されたと仮定した場合の、変更後の対象タプルのコピーであってよい。
【００３０】
データセット送信部２６は、変更用データセットを、データストアマネージャーに到達するように送信する。なお、本実施形態において、データセット送信部２６は、変更用データセットの全体を、一旦トランザクションマネージャーに対して送信し、これをトランザクションマネージャーに転送させることで、変更用データセットがデータストアマネージャーに到達するように送信する。但し、データセット送信部２６は、当該変更用データセットに含まれるタプルＩＤのうち少なくとも削除対象のタプルを示す削除対象タプルＩＤ（削除対象識別情報）を、トランザクションマネージャーに送信し、タプルＩＤおよび変更内容を、データストアマネージャーに直接送信するか、またはトランザクションマネージャーを一旦中継してデータストアマネージャーに到達するように送信すればよい。
【００３１】
また、各セッションマネージャーのデータセット送信部２６は、変更用データセットを、複数のデータストアマネージャーのうち、少なくとも、変更対象のデータを含むデータストアを管理するデータストアマネージャーに到達するように送信する。
【００３２】
処理用データ転送部２７は、他のセッションマネージャーの処理用データ取得部２４からのデータ要求を受けて処理用データを取得した場合に、当該処理用データを、要求元のセッションマネージャーに対して転送する。上述の通り、処理用データ取得部２４は、他のセッションマネージャーに対して、処理用データの要求を送信可能である。この場合、データ要求を受信したセッションマネージャーにおいて、処理用データ取得部２４は、データ要求に従ってデータストアマネージャーから処理用データを取得し、処理用データ転送部２７は、取得された当該処理用データを、要求元のセッションマネージャーに対して転送する。
【００３３】
次に、トランザクション管理ノードの機能構成を説明する。本実施形態において、トランザクションマネージャーとしての役割を有するノードは、トランザクションマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、情報取得部３１、競合判定部３２、変更データ単位情報蓄積部３３、識別子設定部３４、識別子送信部３５および変更用データ転送部３６を備えるトランザクション管理ノードとして機能する。
【００３４】
情報取得部３１は、セッションマネージャーのデータセット送信部２６によって送信された変更用データセットのうち、少なくとも削除対象タプルＩＤを取得する。なお、本実施形態では、先述の通りデータセット送信部２６が変更用データセットの全体を、トランザクションマネージャーを介してデータストアマネージャーに到達するように送信するため、情報取得部３１は、削除対象タプルＩＤを含む変更用データセットの全体を取得する。
【００３５】
競合判定部３２は、情報取得部３１によって取得された削除対象タプルＩＤ（データベースにおいて変更の対象となるタプルを把握可能な情報）と、変更データ単位情報蓄積部３３によって蓄積された、変更されたタプルを示す情報（本実施形態では削除されたタプルのタプルＩＤ）と、を比較し、一致するタプルＩＤが存在するか否かを確認することで、削除対象の競合の有無を判定する。競合判定部３２によって削除対象の競合が有ると判定された場合、変更用データセットに基づく変更は中止される。本実施形態では、ＤＥＬＥＴＥ命令対象タプルリストに記載されたタプルＩＤ、および、ＵＰＤＡＴＥ命令対象タプルリストに記載されたオリジナルタプルＩＤが、削除対象タプルＩＤとなる。
【００３６】
変更データ単位情報蓄積部３３は、競合判定部３２によって削除対象の競合が無いと判定された場合に、情報取得部３１によって取得された削除対象タプルＩＤを、当該データベースシステムにおいて変更されたタプルを示す情報（何れのタプルが何れの時点で変更されたか、を把握可能な情報）として蓄積する。
【００３７】
識別子設定部３４は、競合判定部３２によって削除対象の競合が無いと判定された場合に、変更用データセットに対して、当該変更用データセットに係るトランザクションを識別するためのトランザクションＩＤを設定する。ここで取得されるトランザクションＩＤは、トランザクションの時系列における順序を把握可能な識別子である。このため、後述するデータベース管理部４３は、トランザクションＩＤによって把握される順序に従って、変更用データセットおよびトランザクションＩＤに基づいて、データストアの内容を変更することが出来る。
【００３８】
識別子送信部３５は、トランザクションＩＤを、複数のデータストアマネージャーのうちの、少なくとも当該トランザクションＩＤによって示されるトランザクションの変更用データセットの宛先となるデータストアマネージャーに送信する。
【００３９】
変更用データ転送部３６は、競合判定部３２によって削除対象の競合が無いと判定された場合に、変更用データセットを、複数のデータストアマネージャーのうちの、少なくとも変更対象のデータを含むデータストアを管理するデータストアマネージャーに転送する。この際、変更用データセットは、識別子送信部３５によって送信されるトランザクションＩＤと紐付けられて送信される。
【００４０】
次に、データストア管理ノードの機能構成を説明する。本実施形態において、データストアマネージャーとしての役割を有する複数のノードの夫々は、データストアマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、処理用データ送信部４１、変更用情報受信部４２およびデータベース管理部４３を備えるデータストア管理ノードとして機能する。
【００４１】
処理用データ送信部４１は、セッションマネージャーから、スナップショットを特定可能な情報（本実施形態では、スナップショット特定用情報取得部２３によって取得されたトランザクションＩＤ）を指定したデータ要求を受信した場合に、指定されたスナップショットまでの変更用データセットに基づく変更が適用された状態の処理用データを、セッションマネージャーに対して送信する。本実施形態では、処理用データ送信部４１は、指定されたトランザクションＩＤに対応する変更用データセットに基づく変更が、データベース管理部４３によってデータストアに対して適用されるのを待ってから処理用データを抽出し、セッションマネージャーに対して送信する。本実施形態では、このような機能を備えることで、参照されるデータの整合性を保証することが出来る。
【００４２】
変更用情報受信部４２は、変更用データセットおよびトランザクションＩＤを受信する。本実施形態では、セッションマネージャーによって送信された変更用データセットは、トランザクションマネージャーを介して受信される。但し、後述する実施形態のように、変更用データセットは、セッションマネージャーから直接受信されてもよい。
【００４３】
データベース管理部４３は、本開示に係るデータベース管理技術によって管理されるデータベースの一部または全部を、データストアとして管理する。また、データベース管理部４３は、トランザクションＩＤによって把握される順序に従って、変更用データセットおよびトランザクションＩＤに基づいて、当該データストアマネージャーが管理するデータストアの内容を変更する。ここで、データストアマネージャーが受信した変更用データセットのデータストアへの反映には、遅延が生じてもよい。変更用データセットの反映が遅延している状態で、セッションマネージャーからトランザクションＩＤおよびデータ要求が受信された場合、上述の通り、処理用データ送信部４１は、指定されたトランザクションＩＤに対応する変更用データセットに基づく変更が、データベース管理部４３によってデータストアに対して適用されるのを待ってから、処理用データを抽出する。
【００４４】
＜処理の流れ＞
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
【００４５】
図５、図６および図７は、本実施形態におけるデータベース管理処理の流れを示すフローチャートである。図５のフローチャートに示された処理は、データベースシステムに属する何れかのセッション管理ノードのクエリ受付部２１によって、ユーザー端末９から送信されたクエリが受け付けられ、また、データベースの内容の変更命令を含むトランザクションの開始命令が受信されたことを契機として開始される。
【００４６】
ステップＳ１０１からステップＳ１０５では、トランザクションが開始され、処理に用いられるスナップショットを特定可能なトランザクションＩＤが取得される。トランザクションの開始命令が受信されると（ステップＳ１０１）、スナップショット特定用情報取得部２３は、トランザクションマネージャーに対して、処理に用いられるスナップショットを特定可能なトランザクションＩＤを問い合わせる（ステップＳ１０２およびステップＳ１０３）。そして、トランザクションマネージャーは、返信の時点において最後に付与されたトランザクションＩＤをセッションマネージャーに送信し（ステップＳ１０４）、セッションマネージャーのスナップショット特定用情報取得部２３は、このトランザクションＩＤを取得する（ステップＳ１０５）。なお、本実施形態において、トランザクションマネージャーは、返信の時点において最後に付与された（即ち、最新の）トランザクションＩＤを送信することとしているが、この際に送信されるトランザクションＩＤは、最新のものに限定されない。その後、処理はステップＳ１０６へ進む。
【００４７】
ステップＳ１０６からステップＳ１１０では、トランザクションに含まれるクエリの処理に必要なデータが取得される。処理用データ取得部２４は、クエリ受信部によって受信されたクエリに基づいて作成された検索条件、およびステップＳ１０５で取得されたスナップショット特定用トランザクションＩＤを、当該処理用データ取得部２４が動作するノードと同一のノードにおいて動作するデータストアマネージャーに通知して、データを要求する（ステップＳ１０６）。データ要求を受信した（ステップＳ１０７）データストアマネージャーの処理用データ送信部４１は、受信したスナップショット特定用トランザクションＩＤ以前の変更用データセットがデータストアに反映されるのを待って（ステップＳ１０８）、検索条件に応じたデータを、セッションマネージャーに対して送信する（ステップＳ１０９）。なお、ステップＳ１０８における反映処理の詳細については、後述するステップＳ３０３と同様であるため、説明を省略する。その後、処理用データ取得部２４は、データストアマネージャーから送信されたデータを受信することで、所望のデータを取得する（ステップＳ１１０）。
【００４８】
また、取得したいデータが、当該処理用データ取得部２４が動作するノードと同一のノードにおいて動作するデータストアマネージャーによって管理されているデータストアに存在しない場合、処理用データ取得部２４は、検索条件およびスナップショット特定用トランザクションＩＤを、他のノードにおいて動作するセッションマネージャーに通知して、データを取得する（ステップＳ１１１からステップＳ１１５）。
【００４９】
ステップＳ１１１およびステップＳ１１２では、セッションマネージャー間でデータ要求が送受信される。処理用データを取得したいセッションマネージャーの処理用データ取得部２４は、検索条件およびスナップショット特定用トランザクションＩＤを、他のノードにおいて動作するセッションマネージャーに通知して、データを要求する（ステップＳ１１１）。そして、送信されたデータ要求は、他のセッションマネージャーによって受信される（ステップＳ１１２）。その後、処理はステップＳ１１３へ進む。
【００５０】
ステップＳ１１３では、データ要求を受信した他のセッションマネージャーによるデータ取得が行われる。ステップＳ１１２でデータ要求を受信したセッションマネージャーは、自身が動作するノードと同一のノードで動作するデータストアマネージャーに対してデータを要求し、検索条件およびスナップショット特定用トランザクションＩＤに応じたデータを取得する。ここで、データ要求を受信したセッションマネージャーがデータストアマネージャーからデータを取得する処理の流れは、ステップＳ１０６からステップＳ１１０に示した処理と同様であるため、図示を省略する。その後、処理はステップＳ１１４へ進む。
【００５１】
ステップＳ１１４およびステップＳ１１５では、セッションマネージャー間で処理用データが送受信される。データ要求を受信したセッションマネージャーの処理用データ転送部２７は、ステップＳ１１３で取得された処理用データを、データ要求の送信元セッションマネージャーに対して転送する（ステップＳ１１４）。その後、データ要求の送信元セッションマネージャーの処理用データ取得部２４は、送信されたデータを受信することで、処理用データを取得する（ステップＳ１１５）。その後、処理はステップＳ１１６へ進む。
【００５２】
なお、上述の通り、ステップＳ１０２からステップＳ１０５の処理において、スナップショットを特定可能な情報として、最新のトランザクションＩＤが取得されている。このため、ステップＳ１０１で開始されたトランザクションは、当該トランザクションの開始時点においてコミットが完了しているトランザクションの更新内容を、全て参照することが出来る。
【００５３】
なお、データ要求を受信したデータストアマネージャーまたはセッションマネージャーは、受信されたデータ要求に含まれる検索条件に合致するデータのみを抽出して送ってもよいし、ページやテーブル等の単位で検索条件に合致するデータを含むひとまとまりのデータをまとめて送ってもよい。また、データ要求に、データ処理（例えば、複数テーブルのＪＯＩＮ処理等）のための命令を含ませることで、データ要求を受信したセッションマネージャーやデータストアマネージャーにデータの抽出だけでなくデータの加工を指示し、データ要求を送信したセッションマネージャーが、所定の命令に従って加工されたデータを受け取るようにすることも可能である。
【００５４】
ステップＳ１１６では、ユニークなタプルＩＤを有する変更用データセットが生成される。データセット生成部２５は、ユーザー端末９によって送信されたコミット命令が受信されると、変更命令に基づく変更をデータベースに加えることなく、変更対象のタプルＩＤおよび変更内容を含む変更用データセットを生成する。先述の通り、ここで生成されるタプルＩＤは、複数のデータストアマネージャーによって管理される複数のデータストア間においてユニークなタプルＩＤである。
【００５５】
即ち、本開示に係るデータベース管理技術では、変更命令によってデータベースに新たに追加されるタプルのタプルＩＤは、この段階で採番される。変更命令がＵＰＤＡＴＥ命令またはＩＮＳＥＲＴ命令である場合、ＵＰＤＡＴＥ命令対象タプルリストまたはＩＮＳＥＲＴ命令対象タプルリストのタプルＩＤには、新たに採番された、データベースシステム全体においてユニークなタプルＩＤ（図４に示す例では、１１、１２および１３）が書き込まれる。また、生成される変更用データセットには、ステップＳ１０５で取得された、スナップショット特定用トランザクションＩＤが含まれる。その後、本フローチャートに示された処理は終了する。
【００５６】
図６のフローチャートに示された処理は、セッションマネージャーによって変更用データセットが生成されたことを契機として実行される。
【００５７】
ステップＳ２０１およびステップＳ２０２では、変更用データセットが送受信される。セッションマネージャーのデータセット送信部２６は、変更用データセットをトランザクションマネージャーに送信する（ステップＳ２０１）。なお、送信された変更用データセットは、この後トランザクションマネージャーによって転送され、データストアマネージャーに到達する（図７を用いて後述する）。
【００５８】
そして、トランザクションマネージャーの情報取得部３１は、セッションマネージャーによって送信された変更用データセットを取得する（ステップＳ２０２）。その後、処理はステップＳ２０３へ進む。
【００５９】
ステップＳ２０３では、競合判定が行われる。競合判定部３２は、ステップＳ２０２で取得された削除対象タプルＩＤと、後述するステップＳ２０９が以前に実行された際に蓄積された競合判定用タプルＩＤと、を比較し、一致するタプルＩＤが存在するか否かを確認することで、削除対象の競合の有無を判定する。上述の通り、本実施形態において、削除対象タプルＩＤは、ＤＥＬＥＴＥ命令対象タプルリストに記載されたタプルＩＤ、および、ＵＰＤＡＴＥ命令対象タプルリストに記載されたオリジナルタプルＩＤである。
【００６０】
また、競合判定用タプルＩＤは、本フローチャートに係るデータベース管理処理が以前に実行された際に、後述するステップＳ２０９において蓄積されたタプルＩＤである。上述の通り、変更用データセットには、ステップＳ１０５で取得されたスナップショット特定用トランザクションＩＤが含まれており、競合判定部３２は、当該トランザクションＩＤによって特定されるスナップショットよりも後に蓄積された競合判定用タプルＩＤと、削除対象タプルＩＤとを比較する。
【００６１】
競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合する（一致するタプルＩＤが存在する）と判定された場合、処理はステップＳ２０４へ進む。一方、競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合しない（一致するタプルＩＤが存在しない）と判定された場合、処理はステップＳ２０９へ進む。なお、変更用データセットに含まれる命令がＩＮＳＥＲＴ命令のみである場合、当該命令は既存のタプルを変更するものでは無いため、競合判定は行われない。変更用データセットに含まれる命令がＩＮＳＥＲＴ命令のみである場合、処理は自動的にステップＳ２０９へ進んでよい。
【００６２】
ステップＳ２０４から２０８では、変更用データセットに係るトランザクションが中断され、当該変更用データセットに基づく変更が中止される。ステップＳ２０３の競合判定において削除対象の競合があると判定された場合、トランザクションマネージャーおよびセッションマネージャーは、該当する削除対象タプルを含む変更用データセットに基づくデータベースの変更を中止する。
【００６３】
具体的には、トランザクションマネージャーは、アボート通知を、変更用データセットの送信元セッションマネージャーに送信し（ステップＳ２０４）、受信済みの変更用データセットを破棄する（ステップＳ２０５）。そして、アボート通知を受信したセッションマネージャーは（ステップＳ２０６）、当該変更用データセットに係るトランザクションを中断（アボート）し（ステップＳ２０７）、トランザクションの中断をユーザーに通知する（ステップＳ２０８）。その後、本フローチャートに示された処理は終了する。
【００６４】
ステップＳ２０９では、競合判定用タプルＩＤが蓄積される。ステップＳ２０３で削除対象の競合が無いと判定された場合、変更データ単位情報蓄積部３３は、ステップＳ２０２で取得された削除対象タプルＩＤを、競合判定用タプルＩＤとして蓄積する。ここで蓄積された競合判定用タプルＩＤは、本フローチャートに係るデータベース管理処理が次回以降実行された際に、ステップＳ２０３で参照される。その後、処理はステップＳ２１０へ進む。
【００６５】
ステップＳ２１０では、トランザクションＩＤが採番される。ステップＳ２０３で削除対象の競合が無いと判定された場合、識別子設定部３４は、変更用データセットに基づく変更がデータストアに加えられることでデータベースの内容が変更される前に、当該変更用データセットに係るトランザクションを識別するためのトランザクションＩＤを採番する。上述の通り、トランザクションＩＤは、トランザクションの時系列における順序を把握可能な識別子であり、本実施形態では、競合判定が完了した順に、昇順で整数の数値が採番される。その後、処理はステップＳ２１１へ進む。
【００６６】
ステップＳ２１１およびステップＳ２１２では、変更用データセットが記録され、変更用データセットおよびトランザクションＩＤの送信が許可される。トランザクションマネージャーは、採番されたトランザクションＩＤと、変更用データセットとを紐付けて、トランザクション管理ノードのストレージに記録する（ステップＳ２１１）。本実施形態では、ストレージに記録されたトランザクションＩＤと変更用データセットとの組み合わせが、トランザクションログに相当する。そして、トランザクションマネージャーは、変更用データ転送部３６および識別子送信部３５に対して、変更用データセットおよびトランザクションＩＤをデータストアマネージャーに送信することを許可する（ステップＳ２１２）。送信許可された変更用データセットおよびトランザクションＩＤは、図７を用いて後述する処理において送信される。その後、処理はステップＳ２１３へ進む。
【００６７】
ステップＳ２１３からステップＳ２１５では、コミット通知が行われる。トランザクションマネージャーは、変更用データセットの送信元セッションマネージャーに対してコミット通知を送信する（ステップＳ２１３）。コミット通知を受信した（ステップＳ２１４）セッションマネージャーは、クエリの送信元であるユーザー端末９に対して、コミットが完了したことを通知する（ステップＳ２１５）。即ち、本開示に係るデータベース管理技術では、データストアへの反映によるデータベースの実際の内容変更を待たずに、ユーザーに対してコミットが通知されてよい。その後、本フローチャートに示された処理は終了する。
【００６８】
図７のフローチャートに示された処理は、トランザクションマネージャーにおいて、変更用データセットおよびトランザクションマネージャーＩＤの送信許可がされたこと（ステップＳ２１２を参照）を契機として、または定期的に、実行される。
【００６９】
ステップＳ３０１およびステップＳ３０２では、１または複数の変更用データセットおよびトランザクションＩＤが送受信される。トランザクションマネージャーの変更用データ転送部３６および識別子送信部３５は、ステップＳ２１２で送信許可された変更用データセットおよびトランザクションＩＤを、少なくとも、当該変更用データセットに基づく変更対象のデータストアを管理するデータストアマネージャーに送信（転送）する（ステップＳ３０１）。この際、変更用データセットは、識別子送信部３５によって送信されるトランザクションＩＤと紐付けられて送信される。また、複数の変更用データセットおよびトランザクションＩＤがまとめて送信されてもよい。複数のデータセットおよびトランザクションＩＤをまとめて送信することで、データベースシステムにおける通信負荷を軽減することが出来る。
【００７０】
ここで、変更用データセットおよびトランザクションＩＤは、複数のデータストアマネージャーのうち適切なデータストアマネージャーに送信される。このような処理を行うための手段は限定されず、種々の手段が採用されてよい。例えば、変更用データセットにＵＰＤＡＴＥ命令やＤＥＬＥＴＥ命令が含まれる場合、当該変更用データセットおよびトランザクションＩＤが、変更元データを含むデータストアが管理されているノードに送信される手段が採用されてよい。この際、トランザクションマネージャーは、変更元データを含むデータストアが管理されているノードを、セッションマネージャーからの通知を受けることによって知ることが出来る。
【００７１】
また、例えば、データベースの中の各テーブルが、テーブルＩＤのハッシュ値に基づいて決定されたデータストア管理ノードによって管理される方式が採用されている場合、セッションマネージャーおよびトランザクションマネージャーが各データストア管理ノードのリストを共有し、変更元データを含むテーブルのテーブルＩＤを元に算出したハッシュ値に基づいて当該リストを参照し、送信先のデータストア管理ノードを決定する手段が採用されてよい。
【００７２】
また、変更用データセットは、目的のデータストアマネージャーに対して直接送信されてもよいし、複数のノードを介して間接的に送信されてもよい。変更用データセットが間接的に送信される場合、変更用データセットを受信したノードは、変更用データセットを、他のノードに対して送信（転送）する。例えば、データベース全体が全てのデータストア管理ノードにレプリケーションされている場合、変更用データセットは、全てのデータストア管理ノードに到達するまで、繰り返し転送される。本実施形態に係るデータベースシステムでは、このようにして、データベースシステムに属する複数のノードに、変更内容が伝搬されてよい。データストアマネージャーの変更用情報受信部４２は、変更用データセットおよびトランザクションＩＤを受信する（ステップＳ３０２）。その後、処理はステップＳ３０３へ進む。
【００７３】
ステップＳ３０３では、変更用データセットがデータストアに反映される。変更用データセットおよびトランザクションＩＤを受信したデータストアマネージャーのデータベース管理部４３は、トランザクションＩＤによって把握される順序に従って、変更用データセットおよびトランザクションＩＤに基づいて、当該データストアマネージャーが管理するデータストアの内容を変更する。データベース管理部４３は、変更用データセットに基づいてデータストア中のタプルを書換／追加／削除することで、データストアを変更する。その後、本フローチャートに示された処理は終了する。
【００７４】
＜バリエーション＞
次に、本開示に係るシステム、情報処理装置、方法およびプログラムを実施する場合のバリエーションを説明する。
【００７５】
図８は、本実施形態において生成される変更用データセットのバリエーションを示す図である。図８に示す変更用データセットの構成は、図４を参照して説明した変更用データセットと概略同様であるが、変更用データセットＩＤを更に含む点において、図４の変更用データセットと異なる。変更用データセットＩＤは、変更用データセットを一意に識別可能な識別情報であり、変更用データセットの生成時に付与される。また、図４に示された変更用データセットは、その全体が一旦セッションマネージャーからトランザクションマネージャーに送信された後、トランザクションマネージャーによって転送されてデータストアマネージャーに到達するが、図８に示された変更用データセットは、一部のみがセッションマネージャーからトランザクションマネージャーに送信され、その全体はトランザクションマネージャーを介さずに、セッションマネージャーからデータストアマネージャーに送信される。
【００７６】
図９および図１０は、本実施形態におけるデータベース管理処理のバリエーションを示すフローチャートである。図９は、図６を用いて説明した処理のバリエーションであり、図１０は、図７を用いて説明した処理のバリエーションである。なお、変更用データセットが生成されるまでの処理は、本バリエーションにおいても、図５を用いて説明した処理と概略同様であるため、説明を省略する。
【００７７】
図９のフローチャートに示された処理は、セッションマネージャーによって変更用データセットが生成されたことを契機として実行される。
【００７８】
ステップＳ４０１およびステップＳ４０２では、変更用データセットが送受信される。セッションマネージャーのデータセット送信部２６は、変更用データセットをデータストアマネージャーに送信する（ステップＳ４０１）。即ち、図９を用いて説明するバリエーションでは、セッションマネージャーのデータセット送信部２６は、変更用データセットに含まれる変更用データセットＩＤ、タプルＩＤおよび変更内容を、データストアマネージャーに直接送信する。なお、本実施形態において、各セッションマネージャーのデータセット送信部２６は、変更用データセットを、複数のデータストアマネージャーのうち、少なくとも、変更対象のデータを含むデータストアを管理するデータストアマネージャーに対して直接送信する。そして、データストアマネージャーの変更用情報受信部４２は、セッションマネージャーによって送信された変更用データセットを取得する（ステップＳ４０２）。その後、処理はステップＳ４０３へ進む。
【００７９】
ステップＳ４０３およびステップＳ４０４では、変更用データセットＩＤおよび削除対象タプルＩＤが送受信される。セッションマネージャーのデータセット送信部２６は、変更用データセットＩＤ、スナップショット特定用トランザクションＩＤおよび削除対象タプルＩＤを、トランザクションマネージャーに送信する（ステップＳ４０３）。なお、送信された変更用データセットＩＤは、この後トランザクションマネージャーによって転送され、データストアマネージャーに到達する。即ち、図９を用いて説明するバリエーションでは、セッションマネージャーのデータセット送信部２６は、変更用データセットＩＤを、トランザクションマネージャーを介してデータストアマネージャーに到達するように送信する（転送処理については、図１０を用いて後述する）。
【００８０】
そして、トランザクションマネージャーの情報取得部３１は、セッションマネージャーによって送信された変更用データセットＩＤ、スナップショット特定用トランザクションＩＤおよび削除対象タプルＩＤを取得する（ステップＳ４０４）。その後、処理はステップＳ４０５へ進む。
【００８１】
ステップＳ４０５では、競合判定が行われる。競合判定の具体的な処理内容は、図６のステップＳ２０３について説明した処理内容と同様であるため、説明を省略する。競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合すると判定された場合、処理はステップＳ４０６へ進む。一方、競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合しないと判定された場合、処理はステップＳ４１３へ進む。
【００８２】
ステップＳ４０６からＳ４１２では、変更用データセットに係るトランザクションが中断され、当該変更用データセットに基づく変更が中止される。ステップＳ４０５の競合判定において削除対象の競合があると判定された場合、トランザクションマネージャー、セッションマネージャーおよびデータストアマネージャーは、該当する削除対象タプルを含む変更用データセットに基づくデータベースの変更を中止する。
【００８３】
具体的には、トランザクションマネージャーは、アボート通知を、変更用データセットＩＤの送信元セッションマネージャーに送信する（ステップＳ４０６）。アボート通知を受信したセッションマネージャーは（ステップＳ４０７）、当該変更用データセットに係るトランザクションを中断（アボート）し（ステップＳ４０８）、少なくとも当該変更用データセットが送付されたデータストア管理ノードに対して、当該変更用データセットの破棄を指示する（ステップＳ４０９）。変更用データセットの破棄の指示を受信したデータストアマネージャーは（ステップＳ４１０）、受信済みの変更用データセットを破棄する（ステップＳ４１１）。また、セッションマネージャーは、トランザクションの中断をユーザーに通知する（ステップＳ４１２）。その後、本フローチャートに示された処理は終了する。
【００８４】
ステップＳ４１３およびステップＳ４１４では、競合判定用タプルＩＤが蓄積され、トランザクションＩＤが採番される。ステップＳ４０５で削除対象の競合が無いと判定された場合、変更データ単位情報蓄積部３３は、ステップＳ４０２で取得された削除対象タプルＩＤを、競合判定用タプルＩＤとして蓄積する（ステップＳ４１３）。また、識別子設定部３４は、トランザクションＩＤを採番する（ステップＳ４１４）。ステップＳ４１３およびステップＳ４１４の具体的な処理内容は、図６のステップＳ２０９およびステップＳ２１０について説明した処理内容と同様であるため、説明を省略する。その後、処理はステップＳ４１５へ進む。
【００８５】
ステップＳ４１５およびステップＳ４１６では、変更用データセットＩＤおよびトランザクションＩＤが記録され、変更用データセットＩＤおよびトランザクションＩＤの送信が許可される。トランザクションマネージャーは、採番されたトランザクションＩＤと、変更用データセットＩＤとを紐付けて、トランザクション管理ノードのストレージに記録する（ステップＳ４１５）。そして、トランザクションマネージャーは、変更用データ転送部３６および識別子送信部３５に対して、変更用データセットＩＤおよびトランザクションＩＤをデータストアマネージャーに送信することを許可する（ステップＳ４１６）。送信許可された変更用データセットＩＤおよびトランザクションＩＤは、図１０を用いて後述する処理において送信される。その後、処理はステップＳ４１７へ進む。
【００８６】
ステップＳ４１７からステップＳ４１９では、コミット通知が行われる。コミット通知の具体的な処理内容は、図６のステップＳ２１３からステップＳ２１５について説明した処理内容と同様であるため、説明を省略する。その後、本フローチャートに示された処理は終了する。
【００８７】
図１０のフローチャートに示された処理は、トランザクションマネージャーにおいて、変更用データセットおよびトランザクションマネージャーＩＤの送信許可がされたこと（ステップＳ４１６を参照）を契機として、または定期的に、実行される。
【００８８】
ステップＳ５０１およびステップＳ５０２では、１または複数の変更用データセットＩＤおよびトランザクションＩＤが送受信される。トランザクションマネージャーの変更用データ転送部３６および識別子送信部３５は、ステップＳ４１６で送信許可された変更用データセットＩＤおよびトランザクションＩＤを、少なくとも、当該変更用データセットＩＤによって示される変更用データセットに基づく変更対象のデータストアを管理するデータストアマネージャーに送信（転送）する（ステップＳ５０１）。この際、変更用データセットＩＤは、識別子送信部３５によって送信されるトランザクションＩＤと紐付けられて送信される。また、複数の変更用データセットＩＤおよびトランザクションＩＤがまとめて送信されてもよい。複数のデータセットＩＤおよびトランザクションＩＤをまとめて送信することで、データベースシステムにおける通信負荷を軽減することが出来る。また、本フローチャートでは、変更用データセット全体ではなく変更用データセットＩＤが送信されるため、図７を用いて説明した処理と比べても、データベースシステムにおける通信負荷が少ない。
【００８９】
ここで、変更用データセットＩＤを、複数のデータストアマネージャーのうち適切なデータストアマネージャーに送信するための手段や、変更用データセットＩＤがノード間の伝搬によって送信されてもよいことは、図７の変更用データセット送信処理と概略同様であるため、説明を省略する。データストアマネージャーの変更用情報受信部４２は、変更用データセットＩＤおよびトランザクションＩＤを受信する（ステップＳ５０２）。その後、処理はステップＳ５０３へ進む。
【００９０】
ステップＳ５０３およびステップＳ５０４では、変更用データセットがデータストアに反映される。データストアマネージャーのデータベース管理部４３は、ステップＳ４０４で予め受信されている変更用データセットに含まれる変更用データセットＩＤと、ステップＳ５０２で受信した変更用データセットＩＤとを比較することで、受信した変更用データセットＩＤに対応する変更用データセットを特定する（ステップＳ５０３）。そして、データベース管理部４３は、トランザクションＩＤによって把握される順序に従って、特定された変更用データセットおよびトランザクションＩＤに基づいて、当該データストアマネージャーが管理するデータストアの内容を変更する。その後、本フローチャートに示された処理は終了する。
【００９１】
＜効果＞
本実施形態に係るデータベースシステムによれば、特定のノード（本実施形態では、トランザクション管理ノード）にデータベースシステム全体に係る競合判定用の情報を管理させ、当該ノードにデータベースシステム全体に係る競合判定処理を行わせることで、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することが出来る。
【図１】
2017077616.tif 000003
【図２】
2017077616.tif 000004
【図３】
2017077616.tif 000005
【図４】
2017077616.tif 000006
【図５】
2017077616.tif 000007
【図６】
2017077616.tif 000008
【図７】
2017077616.tif 000009
【図８】
2017077616.tif 000010
【図９】
2017077616.tif 000011
【図１０】
2017077616.tif 000012
【国際調査報告】
2017077616.tif 000013
2017077616.tif 000014