(57)【要約】データベースの内容を変更する際のシステムのパフォーマンス低下を抑制することを課題とし、セッションマネージャーの夫々は、タプルＩＤ及び変更内容を含むデータセットを生成し、データセットをデータストアマネージャーへ送信し、データセットに含まれる削除対象タプルＩＤおよびデータセットＩＤをトランザクションマネージャーに送信し、トランザクションマネージャーは、削除対象タプルＩＤに基づく競合判定において削除対象の競合が無いと判定された場合に、データセットＩＤが示すデータセットにトランザクションＩＤを生成し、データセットＩＤおよびトランザクションＩＤをデータストアマネージャーに送信し、データストアマネージャーの夫々は、蓄積されているデータセットのうち、受信されたデータセットＩＤが示すデータセットに対応するトランザクションＩＤを設定することとした。
2018203376.tif 000002
【特許請求の範囲】
【請求項１】
複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムであって、
前記複数のセッション管理ノードの夫々は、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、
前記トランザクション管理ノードは、
前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、を備え、
前記複数のデータストア管理ノードの夫々は、
前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、
受信された前記データセットを蓄積するデータベース管理手段と、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、を備え、
前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、
データベースシステム。
【請求項２】
前記複数のデータストア管理ノードの夫々は、前記データベース管理手段によって蓄積されている前記データセットのうち、所望のトランザクション識別子及びより古いトランザクション識別子が設定されたデータセットから、所望の検索条件に合致するデータを抽出するデータ抽出手段を更に備える、
請求項１に記載のデータベースシステム。
【請求項３】
前記データ抽出手段は、前記データベース管理手段によって蓄積されている前記データセットに含まれる前記データ単位の変更内容を検索することによって索出されたデータから、前記削除対象識別情報に示されたデータを除くことで、所望の検索条件に合致するデータを抽出する、
請求項２に記載のデータベースシステム。
【請求項４】
前記データ抽出手段は、前記データセット受信手段によって以後受信されないデータセットの範囲を示す特定トランザクション識別子が、検索対象のスナップショットを示す検索対象トランザクション識別子よりも古い場合、前記特定トランザクション識別子が、前記検索対象トランザクション識別子と同じ又は新しい識別子となるのを待ってから、前記抽出を行う、
請求項２または３に記載のデータベースシステム。
【請求項５】
前記識別子送信手段は、前記識別子生成手段によって生成された最新のトランザクション識別子を、前記データセット送信手段によって前記データセットが送信されたデータストア管理ノード以外のデータストア管理ノードに対しても送信し、
前記データ抽出手段は、前記識別子送信手段によって送信されて前記データストア管理ノードによって受信された前記最新のトランザクション識別子が、前記検索対象トランザクション識別子よりも古い場合、受信された前記最新のトランザクション識別子が、前記検索対象トランザクション識別子と同じ又は新しい識別子となるのを待ってから、前記抽出を行う、
請求項４に記載のデータベースシステム。
【請求項６】
前記データストア管理ノードは、所定のトランザクション識別子によって指定された時点のデータセット及びより古いデータセットを統合することで集合データセットを生成する集合データセット生成手段を更に備え、
前記データベース管理手段は、前記集合データセットにトランザクション識別子を設定することで、該集合データセットを、蓄積されたデータセットの１つとして管理する、
請求項２から５の何れか一項に記載のデータベースシステム。
【請求項７】
前記集合データセット生成手段は、所定のトランザクション識別子によって指定された時点のデータセット及びより古いデータセットに含まれる、前記データ単位の変更内容を連結し、前記削除対象識別情報に示されたデータを除くことで、前記集合データセットを生成する、
請求項６に記載のデータベースシステム。
【請求項８】
前記データベース管理手段は、前記集合データセットへのトランザクション識別子の設定に伴って、該集合データセットの生成に用いられたデータセットを削除する、
請求項６または７に記載のデータベースシステム。
【請求項９】
前記トランザクション管理ノードは、該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積手段を更に備え、
前記競合判定手段は、前記変更データ単位情報蓄積手段によって蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定し、
前記変更データ単位情報蓄積手段は、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記削除対象識別情報を、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積する、
請求項１から８の何れか一項に記載のデータベースシステム。
【請求項１０】
前記複数のデータストア管理ノードの夫々は、
処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段を更に備え、
前記複数のセッション管理ノードの夫々は、
前記処理用データを、前記複数のデータストア管理ノードの少なくとも何れかから取得する処理用データ取得手段を更に備え、
前記データセット生成手段は、取得された前記処理用データに対する処理においてデータベースの内容が変更される場合に、前記データセットを生成する、
請求項１から９の何れか一項に記載のデータベースシステム。
【請求項１１】
前記セッション管理ノードは、処理に用いられるスナップショットを特定可能な情報を取得するスナップショット特定用情報取得手段を更に備え、
前記処理用データ取得手段は、前記スナップショット特定用情報取得手段によって取得された情報を指定することで、前記スナップショットにおけるデータを取得する、
請求項１０に記載のデータベースシステム。
【請求項１２】
前記スナップショット特定用情報取得手段によって取得された情報は、トランザクション識別子であり、
前記処理用データ送信手段は、前記セッション管理ノードから、前記スナップショットにおけるトランザクション識別子を指定したデータ要求を受信した場合に、指定されたトランザクション識別子が示すトランザクションまでのトランザクションに対応するデータセットに基づいて生成された処理用データを、前記セッション管理ノードに対して送信する、
請求項１１に記載のデータベースシステム。
【請求項１３】
前記セッション管理ノードの夫々は、
クエリを受け付けるクエリ受付手段と、
前記クエリを処理するクエリ処理手段と、
を更に備え、
前記処理用データ取得手段は、前記クエリの処理に用いるデータを、前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項１０から１２の何れか一項に記載のデータベースシステム。
【請求項１４】
前記クエリ処理手段は、前記クエリが属するトランザクションにおいて該クエリの処理前に生成された前記データセットに基づいて、前記処理用データ取得手段によって取得された前記データを調整してから、該クエリを処理する、
請求項１３に記載のデータベースシステム。
【請求項１５】
前記調整は、
前記クエリの処理前に生成された前記データセットから所望の検索条件に合致するデータを抽出して、抽出されたデータを前記処理用データ取得手段によって取得された前記データに追加する処理と、
前記クエリの処理前に生成された前記データセットに含まれる前記削除対象識別情報に示されたデータを、前記処理用データ取得手段によって取得された前記データから除く処理と、を含む、
請求項１４に記載のデータベースシステム。
【請求項１６】
少なくとも１のビュー管理ノードを更に備え、
前記データストア管理ノードの夫々は、前記データベース管理手段によって蓄積されている前記データセットに基づいて生成された、予め設定された検索条件に合致するデータを含むビュー用データセットを、前記ビュー管理ノードに送信するビュー用データ送信手段を更に備え、
前記ビュー管理ノードは、
前記ビュー用データセットを、前記データストア管理ノードから取得するビュー用データ取得手段と、
前記ビュー用データ取得手段によって取得されたビュー用データセットに含まれるデータのうち、ビュー用トランザクション識別子によって指定された時点のデータ及びより古いデータの集合を、前記予め設定された検索条件および前記ビュー用トランザクション識別子に対応するビューとして保持するビュー管理手段と、
指定された検索条件に従って前記ビューを検索するビュー検索手段と、を備える、
請求項１０から１５の何れか一項に記載のデータベースシステム。
【請求項１７】
前記ビュー管理ノードは、
処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段を更に備え、
前記複数のセッション管理ノードの処理用データ取得手段は、前記処理用データを、前記ビュー管理ノードおよび前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項１６に記載のデータベースシステム。
【請求項１８】
前記複数のセッション管理ノードの処理用データ取得手段は、前記処理用データのうち、前記ビューに含まれるデータについては、該ビューを管理する前記ビュー管理ノードから取得し、該ビューに含まれないデータについては、前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項１７に記載のデータベースシステム。
【請求項１９】
前記複数のセッション管理ノードの処理用データ取得手段は、前記ビュー管理ノードおよび前記複数のデータストア管理ノードのうち少なくとも２以上のノードから前記処理用データが取得されたために同一のタプルに係るデータが重複して取得された場合、重複するデータの一方を削除する、
請求項１７または１８に記載のデータベースシステム。
【請求項２０】
前記競合判定手段によって削除対象の競合が有ると判定された場合に、前記データセットに基づく変更が中止される、
請求項１から１９の何れか一項に記載のデータベースシステム。
【請求項２１】
前記データセット生成手段は、前記対象識別情報に、前記複数のセッション管理ノード毎に異なる値を含めることで、対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報を生成する、
請求項１から２０の何れか一項に記載のデータベースシステム。
【請求項２２】
複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムにおいて、
前記複数のセッション管理ノードの夫々が、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成ステップと、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信ステップと、を実行し、
前記トランザクション管理ノードが、
前記セッション管理ノードの前記データセット送信ステップで送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得ステップと、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定ステップと、
前記競合判定ステップで削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成ステップと、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信ステップで前記データセットが送信されたデータストア管理ノードに送信する識別子送信ステップと、を実行し、
前記複数のデータストア管理ノードの夫々が、
前記セッション管理ノードから、前記データセットを受信するデータセット受信ステップと、
受信された前記データセットを蓄積するデータベース管理ステップと、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信ステップと、を実行し、
前記データベース管理ステップでは、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子が設定される、
方法。
【請求項２３】
複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムにおいて、
前記複数のセッション管理ノードの夫々を、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、として機能させ、
前記トランザクション管理ノードを、
前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、として機能させ、
前記複数のデータストア管理ノードの夫々を、
前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、
受信された前記データセットを蓄積するデータベース管理手段と、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、として機能させ、
前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベースの内容を管理し、変更（ｍｏｄｉｆｙ）するための技術に関する。
【背景技術】
【０００２】
従来、多重化データベースシステムにおける同期化方法として、仲介装置が、クライアントからの処理要求を複数のサーバに転送し、各サーバから受信した応答結果のうち正当なものをクライアントに返す多重化データベースシステムにおいて、仲介装置が処理要求に順序番号を付与し、各サーバが該順序番号に基づき処理要求を並べ替えるとともに、サーバにおいてロック競合等が生じないようＤＢＭＳへの投入順序を制御する技術が提案されている（特許文献１を参照）。【０００３】
また、データ複製機能にモバイルエージェントを使用し、サイトＡでデータベースを更新した場合、この更新を検出して更新内容から更新トランザクションデータを生成し、サイトＢに移動して更新トランザクションを実行し、データベースを更新する分散データベースシステムが提案されている（特許文献２を参照）。【０００４】
また、データ操作のログを蓄積し、ログ形式のままデータを管理するデータ管理方法が各種提案されている（非特許文献１および２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２１９５９８号公報
【特許文献２】特開２００１−３５０７７７号公報
【非特許文献】
【０００６】
【非特許文献１】Ｈｏａｎｇ  Ｔａｍ  Ｖｏ，  Ｓｈｅｎｇ  Ｗａｎｇ，  Ｄｉｖｙａｋａｎｔ  Ａｇｒａｗａｌ，  Ｇａｎｇ  Ｃｈｅｎ，  Ｂｅｎｇ  Ｃｈｉｎ  Ｏｏｉ，  “ＬｏｇＢａｓｅ：  Ａ  Ｓｃａｌａｂｌｅ  Ｌｏｇ−ｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍ  ｉｎ  ｔｈｅ  Ｃｌｏｕｄ”
【非特許文献２】Ｐｈｉｌｉｐ  Ａ．  Ｂｅｒｎｓｔｅｉｎ，  Ｃｏｌｉｎ  Ｗ．  Ｒｅｉｄ，  Ｓｕｄｉｐｔｏ  Ｄａｓ，  “Ｈｙｄｅｒ  −  Ａ  Ｔｒａｎｓａｃｔｉｏｎａｌ  Ｒｅｃｏｒｄ  Ｍａｎａｇｅｒ  ｆｏｒ  Ｓｈａｒｅｄ  Ｆｌａｓｈ”
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、データベース管理システム（ＤＢＭＳ）では、所定の形式を有するテーブル等が書き換えられることによってデータベースの内容が変更されるため、データベースが複数ノードによって管理されるシステムに従来の仕組みをそのまま適用した場合、データベースの内容変更（タプルの更新や削除等）を行う場合、変更によってデータベース内に矛盾が生じないことを保証する競合チェックのためにノード毎にロックが取得され、トランザクションマネージャーが全てのロックの取得に成功したか否かを確認し、ロックの取得が全て成功していれば、テーブルの実体が書き換えられ（タプルの更新や削除）、コミット完了と判定されることとなる（所謂２相コミット）。【０００８】
このため、上述の２相コミットのような従来の技術では、複数ノードによって管理されるデータベースにおいて、データベース内で矛盾が生じないように各ノードが管理する部分を変更する場合、複雑な処理が必要となり、システムの複雑化ひいてはパフォーマンスの低下を招いていた。【０００９】
本開示にかかる技術は、上記した問題に鑑み、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することを課題とする。
【課題を解決するための手段】
【００１０】
本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係るデータベースシステムは、複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備えるデータベースシステムであって、前記複数のセッション管理ノードの夫々は、データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、前記トランザクション管理ノードは、前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、を備え、前記複数のデータストア管理ノードの夫々は、前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、受信された前記データセットを蓄積するデータベース管理手段と、前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、を備え、前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、データベースシステムである。【００１１】
本開示は、情報処理装置、システム、コンピューターによって実行される方法またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
【発明の効果】
【００１２】
本開示に係る技術によれば、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係るデータベースシステムの構造を例示する図である。
【図２】実施形態に係るノードのハードウェア構成の概略を示す図である。
【図３】実施形態に係るノードの機能構成の概略を示す図である。
【図４】実施形態において生成される変更用データセットの構造を示す図である。
【図５】実施形態におけるデータベース管理処理の流れを示すフローチャート（１）である。
【図６】実施形態におけるデータベース管理処理の流れを示すフローチャート（２）である。
【図７】実施形態においてセッションマネージャーによって実行される、命令処理及び変更用データセット生成／更新処理の流れを示す図である。
【図８】実施形態におけるデータベース管理処理の流れを示すフローチャート（３）である。
【図９】実施形態におけるデータベース管理処理の流れを示すフローチャート（４）である。
【図１０】実施形態におけるデータベース管理処理の流れを示すフローチャート（５）である。
【図１１】実施形態に係る、データストアマネージャーにおけるデータ検索処理の流れを示すフローチャートである。
【図１２】実施形態に係る、ビューマネージャーにおけるデータ検索処理の流れを示すフローチャートである。
【図１３】実施形態に係る、データストアマネージャーにおけるトランケート処理の流れを示すフローチャートである。
【図１４】実施形態に係る、ビュー作成処理の流れを示すフローチャートである。
【図１５】実施形態に係る、ビュー変更処理の流れを示すフローチャート（１）である。
【図１６】実施形態に係る、ビュー変更処理の流れを示すフローチャート（２）である。
【図１７】実施形態に係る、ビュー変更処理の流れを示すフローチャート（３）である。
【発明を実施するための形態】
【００１４】
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
【００１５】
＜システムの構成＞
以下、複数のノードを有するデータベースシステムにおいて、データベースの内容の変更命令（ＩＮＳＥＲＴ命令、ＤＥＬＥＴＥ命令、ＵＰＤＡＴＥ命令等）を含むトランザクションが処理される場合に、当該変更命令に係る変更内容を、当該データベースシステムに属する複数のノードが管理する夫々のデータストアにおいて管理する技術を説明する。ここで、データストアとは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部の記録、またはデータベースの一部または全部が保持される場所、を示す語である。なお、本開示に係るデータベース管理技術は、本実施形態において例示されたシステムに限らず、複数のノードを有するデータベースシステムに適用可能である。また、本開示に係るデータベース管理技術を採用可能なデータベースシステムは、特定の種類のデータベースシステムに限定されない。
【００１６】
図１は、本実施形態に係るデータベースシステムの構造を例示する図である。本実施形態に係るデータベースシステムでは、複数の情報処理装置（ノード）が、ネットワークを介して互いに通信可能に接続されている。本実施形態に係るデータベースシステムでは、複数のノードのうちの少なくとも１つが、トランザクションマネージャーとしての役割を有するトランザクション管理ノードである。また、その他の複数のノードのうちの一部は、セッションマネージャーとしての役割を有するノードであり、セッション管理ノードとして動作する。また、その他の複数のノードのうちの一部は、データストアマネージャーとしての役割を有するノードであり、データストア管理ノードとして動作する。更に、その他の複数のノードのうちの一部は、ビューマネージャーとしての役割を有するノードであり、ビュー管理ノードとして動作する。
【００１７】
但し、本開示に係るデータベース管理技術を適用可能なデータベースシステムは、本実施形態に例示した構成のデータベースシステムに限定されない。例えば、セッションマネージャーとデータストアマネージャーとは、同一のノードにおいて動作してもよい。また、ビューを参照しないデータベースシステムを構築する場合には、ビューマネージャーは省略されてよい。何れにしても、本実施形態に係るデータベースシステムは、複数のセッション管理ノードと、複数のデータストア管理ノードと、少なくとも１のトランザクション管理ノードとを備える。
【００１８】
本実施形態において、データストア管理ノードは、夫々、自身において動作するデータストアマネージャーによって管理されるデータストアを有しており、これらのデータストアは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部に係るデータを有している。本開示に係るデータベース管理技術では、データベースに加えられる変更の内容を含む変更用データセットが、何れかのセッションマネージャーによって生成され、システムに属する１または複数のデータストアマネージャーに伝播され、伝播された変更用データセットにトランザクションＩＤが付されて各データストアで管理されることで、データベース全体の変更が完了する。このため、本実施形態に係るシステムでは、変更用データセットの発生時に、同一の変更用データセットを複数のデータストアマネージャーに対して送信することで、データストア管理を冗長化でき、データベースのレプリケーションを実現できる。データストア管理の冗長化は、例えば、変更用データセットの送信先のノードＩＤを複数指定することでも実現可能であるし、単一のノードＩＤに対して複数のデータストア管理ノードを用意することでも実現可能である。データベース管理技術の詳細については、後述する。
【００１９】
また、本実施形態において、ビュー管理ノードは、夫々、自身において動作するビューマネージャーによって管理されるビューを有している。本実施形態において、ビューとは、あるトランザクションＩＤによって特定される時点におけるデータを、検索条件によって絞り込み、且つ検索に適した形に整理したものである。この検索条件は、当該検索条件に係るビューを識別可能な情報と共に、データストアマネージャーおよびセッションマネージャーに通知される。なお、ビューがデータを保持する形式は限定されない。ビューは、例えば、表（テーブル）やグラフ等の形式でデータを保持することができる。本実施形態では、１のビューマネージャーが１のビューを管理することを前提として説明する。このため、本実施形態では、ビューのＩＤによってビューマネージャーを識別することが可能であるし、ビューを生成するために用いられる検索条件（ビューの検索条件）は、ビューおよびビューマネージャーを識別するための情報としても用いることができる。但し、１のビューマネージャーによって複数のビューが管理されてもよい。
【００２０】
また、ビューによってカバーされるデータの範囲は任意に設定可能であり、複数のビューによってカバーされるデータは互いに重複してもよいし、何れのビューによってもカバーされないデータがあってもよい。ビューによってカバーされていないデータについても、データストアマネージャーが変更用データセットの形式で管理しているため、全てのデータを検索することが可能である。即ち、本実施形態に係るシステムによれば、変更用データセットによるデータ管理でデータ変更の処理負荷を低減させつつ、検索を高速化したいデータについてはビューでカバーすることが可能である。
【００２１】
本実施形態において、複数のビューまたはビューマネージャー（ビュー管理ノード）は、階層関係を有し、上位ビューは、下位ビューによってカバーされるデータを参照して構築することができる。ビューの階層関係が３層以上に及び、上位層のビューが下位層のビューを参照する場合、これらのビューが属する階層は隣接していなくてもよい（例えば、第３層のビューが第１層のビューを参照することが出来る）。
【００２２】
更に、ネットワークには、ユーザー端末９が接続されている。本実施形態に開示されたデータベースシステムは、何れのセッションマネージャーも、ユーザー端末９等から送信されたクエリを受け付けて実行することが可能なデータベースシステムである。
【００２３】
図２は、本実施形態に係るノードのハードウェア構成の概略を示す図である。ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３等からなる制御部１０と、ストレージ（補助記憶装置）１４と、通信インターフェース１５と、を備えるコンピューターである。但し、ノードの具体的なハードウェア構成に関しては、実施の態様に応じて適宜省略や置換、追加が可能である。また、ノードは、単一の装置に限定されない。ノードは、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。なお、各ノードが管理するデータストアは、ストレージ１４上に構築されてもよいし、ＲＡＭ１２上に構築されてもよく、データストアの構築場所は限定されない。
【００２４】
ストレージ１４には、オペレーティングシステムとともに、各種プログラムが格納されており、当該プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、前述のノードとしての機能が実現される。なお、各マネージャーが動作するノードは、何れも同様のハードウェア構成を有してよい。
【００２５】
図３は、本実施形態に係るノードの機能構成の概略を示す図である。先述の通り、本実施形態において、各ノードは、セッションマネージャー、トランザクションマネージャー、データストアマネージャーおよびビューマネージャーの何れかの役割を有する。
【００２６】
はじめに、セッション管理ノードの機能構成を説明する。本実施形態において、セッションマネージャーとしての役割を有する複数のノードの夫々は、セッションマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、クエリ受付部２１、クエリ処理部２２、スナップショット特定用情報取得部２３、処理用データ取得部２４、データセット生成部２５およびデータセット送信部２６を備えるセッション管理ノードとして機能する。
【００２７】
クエリ受付部２１は、ユーザー端末９から送信された、データベースシステムに対するクエリを受け付ける。本実施形態に係るデータベースシステムでは、セッションマネージャーを実行するセッション管理ノードが複数あり、これら複数のセッション管理ノードの何れも、ユーザー端末９からのクエリを受け付けることが出来る。
【００２８】
クエリ処理部２２は、クエリ受付部２１によって受け付けられたクエリを処理する。
【００２９】
スナップショット特定用情報取得部２３は、トランザクションマネージャーから、処理に用いられるスナップショットを特定可能な情報を取得する。ここで、スナップショットとは、トランザクションが順次コミットされることでデータベースの内容が変化していく時系列における、ある時点におけるデータベースの内容を示す語である。なお、本実施形態において、スナップショット特定用情報取得部２３によって取得される情報は、トランザクションＩＤ（以下、「スナップショット特定用トランザクションＩＤ」と称する）である。但し、取得される情報は、トランザクションの処理に用いられるデータの一貫性を保証するためのものであるため、スナップショットを特定可能な情報であればよく、トランザクションＩＤに限られない。例えば、スナップショットを特定可能な情報は、トランザクションＩＤではなく、複数のトランザクションが順次処理される時系列における論理上のある時点を特定可能な情報であってもよい。
【００３０】
処理用データ取得部２４は、クエリの処理に用いるデータを、複数のデータストアマネージャーおよび複数のビューマネージャーの少なくとも何れかから取得する。この際、処理用データ取得部２４は、データストアマネージャーまたはビューマネージャーに対して、スナップショット特定用情報取得部２３によって取得された情報（スナップショット特定用トランザクションＩＤ）を指定することで、所定のスナップショットにおけるデータを取得する。
【００３１】
データセット生成部２５は、取得されたデータに係るトランザクションに、データベースの内容を変更する変更命令が含まれる場合に、当該変更命令に基づく変更をデータベースに加えることなく、変更対象のタプルのタプルＩＤおよび変更内容を含む変更用データセットを生成する。即ち、本実施形態に係るデータベースシステムでは、セッションマネージャーのデータセット生成部２５によって変更用データセットが生成されたことは、データベースに変更内容が反映されたことを意味しない。本実施形態に係るデータベースシステムでは、セッションマネージャーのデータセット生成部２５によって生成された変更用データセットがデータストアマネージャーに送信され、データストアマネージャーによって当該変更用データセットにトランザクションＩＤが付与されることで、データベースに変更内容が反映される。
【００３２】
なお、本実施形態では、データベースにおいて個々のレコードとして扱われるデータ単位をタプルと称して説明しているが、本発明を適用可能なデータ単位は、一般的なデータベースシステムにおいてタプルと称されるものに限定されない。本開示に係るデータベースシステムのデータストアにおいて、データは、リレーショナルデータベースにおいて用いられる表形式等ではなく、変更用データセットの形式のまま管理される。そのため、本発明では、リレーショナルデータベースにおけるタプル以外のデータ単位も統一的に扱うことができる。タプルＩＤは、複数のデータストアマネージャーによって管理される複数のデータストア間において、変更の対象となるタプル（データ単位）を一意に把握可能な（ユニークな）対象識別情報である。本実施形態において、データセット生成部２５は、複数のセッション管理ノード毎に異なる値（例えば、ノードＩＤ）をタプルＩＤに含めることで、ユニークなタプルＩＤを生成する。但し、変更用データセットは、変更命令に基づく当該データベースの変更内容、および当該データベースシステムにおいて変更の対象となるタプルを一意に把握可能な情報を含んでいればよく、これらの情報は、本実施形態における例示に限定されない。
【００３３】
図４は、本実施形態において生成される変更用データセットの構造を示す図である。但し、変更用データセットの具体的な構成、フォーマットまたは生成方法は、本実施形態における例示に限定されない。本実施形態における変更用データセットは、変更命令に基づく変更の対象となるタプルを含むデータをＲＡＭ１２上に読み出して、当該データに対して変更命令に基づく操作を行うことで生成される情報であり、ＤＥＬＥＴＥデータセット（ＤＥＬＥＴＥ命令対象タプルリスト）およびＩＮＳＥＲＴデータセット（ＩＮＳＥＲＴ命令対象タプルリスト）を含む。
【００３４】
また、変更用データセットには、スナップショット特定用トランザクションＩＤ及びデータセットＩＤが設定されている。データセットＩＤは、変更用データセットを一意に識別可能な識別情報であり、変更用データセットの生成時に付与される。
【００３５】
ＤＥＬＥＴＥデータセットおよびＩＮＳＥＲＴデータセットには、変更命令の対象となるタプルを示す情報が含まれる。具体的には、ＤＥＬＥＴＥデータセットには、削除の対象となるタプルのタプルＩＤ（図４に示す例では、２）が含まれ、ＩＮＳＥＲＴデータセットには、追加されるタプルのタプルＩＤ（図４に示す例では、１３）および追加されるデータの内容が含まれる。なお、本実施形態では、ＵＰＤＡＴＥ命令はＩＮＳＥＲＴ命令とＤＥＬＥＴＥ命令の組み合わせとして扱われ、ＵＰＤＡＴＥ命令による更新前のデータを含むタプルのタプルＩＤはＤＥＬＥＴＥデータセットに含まれ、ＵＰＤＡＴＥ命令による更新後のデータ及び当該データを含むタプルのタプルＩＤはＩＮＳＥＲＴデータセットに含まれる。但し、ＵＰＤＡＴＥ命令による更新前のデータを含むタプルのタプルＩＤと、更新後のデータ及び当該データを含むタプルのタプルＩＤとが格納されるデータセットは、本実施形態に開示された例に限定されない。例えば、ＵＰＤＡＴＥ命令にかかるこれらのタプルＩＤ及びデータは、まとめてＵＰＤＡＴＥデータセットに含まれるように構成されても良い。
【００３６】
データセット送信部２６は、変更用データセットを、少なくとも、変更対象のデータを含むデータストアを管理するデータストアマネージャーへ到達するように送信する。更に、データセット送信部２６は、当該データセットに含まれるタプルＩＤのうち少なくとも削除対象のデータ単位を示す削除対象タプルＩＤ（ＤＥＬＥＴＥデータセットに記載されたタプルＩＤ）およびデータセットＩＤを、トランザクションマネージャーに送信する。
【００３７】
次に、トランザクション管理ノードの機能構成を説明する。本実施形態において、トランザクションマネージャーとしての役割を有するノードは、トランザクションマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、情報取得部３１、競合判定部３２、変更データ単位情報蓄積部３３、識別子生成部３４および識別子送信部３５を備えるトランザクション管理ノードとして機能する。
【００３８】
情報取得部３１は、セッションマネージャーのデータセット送信部２６によって送信された、削除対象タプルＩＤ（ＤＥＬＥＴＥデータセットに記載されたタプルＩＤ）およびデータセットＩＤを取得する。
【００３９】
競合判定部３２は、情報取得部３１によって取得されたＤＥＬＥＴＥデータセットに記載された削除対象タプルＩＤと、変更データ単位情報蓄積部３３によって蓄積された、変更済のタプルを示す情報（本実施形態では削除されたタプルのタプルＩＤ）と、を比較し、一致するタプルＩＤが存在するか否かを確認することで、削除対象の競合の有無を判定する。競合判定部３２によって削除対象の競合が有ると判定された場合、変更用データセットに基づく変更は中止される。
【００４０】
変更データ単位情報蓄積部３３は、競合判定部３２によって削除対象の競合が無いと判定された場合に、情報取得部３１によって取得された削除対象タプルＩＤを、当該データベースシステムにおいて変更されたタプルを示す情報（何れのタプルが何れの時点で変更されたか、を把握可能な情報）として蓄積する。
【００４１】
識別子生成部３４は、競合判定部３２によって削除対象の競合が無いと判定された場合に、変更用データセットに対して、当該変更用データセットに係るトランザクションを識別するためのトランザクションＩＤを生成（採番）する。ここで生成されるトランザクションＩＤは、トランザクションの処理に係る論理上の時系列における位置を把握可能な識別子である。本実施形態では、トランザクションＩＤとして、昇順の整数が用いられる。
【００４２】
識別子送信部３５は、データセットＩＤと当該データセットＩＤに対応するトランザクションＩＤとを含む識別子セットを、複数のデータストアマネージャーのうち、少なくとも、データセット送信部２６によって当該データセットＩＤに対応するデータセットが送信されたデータストアマネージャーに送信する。識別子セットは、全てのデータストアマネージャーに対して送信されてもよい。
【００４３】
次に、データストア管理ノードの機能構成を説明する。本実施形態において、データストアマネージャーとしての役割を有する複数のノードの夫々は、データストアマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、処理用データ送信部４１、データセット／識別子受信部４２、データベース管理部４３、集合データセット生成部４４、データ抽出部４５、ビュー用データ生成部４６およびビュー用データ送信部４７を備えるデータストア管理ノードとして機能する。
【００４４】
処理用データ送信部４１は、セッションマネージャーから、スナップショットを特定可能な情報（本実施形態では、スナップショット特定用トランザクションＩＤ）を指定したデータ要求を受信した場合に、指定されたスナップショットまでの変更用データセットに基づいて生成された処理用データを、セッションマネージャーに対して送信する。
【００４５】
データセット／識別子受信部４２は、セッションマネージャーによって送信された変更用データセット、およびトランザクションマネージャーによって送信された識別子セットを受信する。
【００４６】
データベース管理部４３は、本開示に係るデータベース管理技術によって管理されるデータベースの一部または全部を、データストアとして管理する。ここで、本実施形態に係るデータベース管理部４３は、受信されたデータセットを、トランザクションＩＤを設定して蓄積することで、データベースを管理する。より具体的には、データセット／識別子受信部４２によって識別子セットが受信されると、データベース管理部４３は、識別子セットに含まれるデータセットＩＤによって示されるデータセットを特定し、当該データセットに、当該データセットＩＤに対応するトランザクションＩＤを設定する。
【００４７】
集合データセット生成部４４は、所定のトランザクションＩＤによって指定された時点のデータセット及びより古いデータセットに含まれる変更内容を連結し、ＤＥＬＥＴＥデータセットに示されたデータを除くことで、所定のトランザクションＩＤによって指定された時点のデータセット及びより古いデータセットを統合し、集合データセットを生成する。集合データセットが生成されると、データベース管理部４３は、集合データセットにトランザクションＩＤを設定することで、当該集合データセットを、蓄積されたデータセットの１つとして管理する。本実施形態では、集合データセットに、始点を示すトランザクションＩＤと、終点を示すトランザクションＩＤと、の２つのトランザクションＩＤが設定されることで、当該集合データセットに含まれるトランザクションの範囲を示す。ここで、始点を示すトランザクションＩＤとは、集合データセットに連結されたオリジナルのトランザクションのうち最も古いトランザクションのＩＤであり、終点を示すトランザクションＩＤとは、集合データセットに連結されたオリジナルのトランザクションのうち最も新しいトランザクションのＩＤである。また、データベース管理部４３は、集合データセットへのトランザクションＩＤの設定に伴って、当該集合データセットの生成に用いられたデータセットを削除する。
【００４８】
データ抽出部４５は、データベース管理部４３によって蓄積されているデータセットのうち、所望のトランザクションＩＤによって指定された時点のデータセット及びより古いトランザクションＩＤが設定されたデータセットから、所望の検索条件に合致するデータを抽出する。具体的には、データ抽出部４５は、ＩＮＳＥＲＴデータセットに含まれるタプルの変更内容を検索することによって索出されたデータから、ＤＥＬＥＴＥデータセットに記載された削除対象タプルＩＤに示されたデータを除くことで、所望の検索条件に合致するデータを抽出する。ここでデータ抽出部４５は、検索対象トランザクションＩＤが、以後反映されないデータセットの範囲を示す特定トランザクションＩＤ（本実施形態では、最新のトランザクションＩＤ）よりも新しい場合、検索対象トランザクションＩＤが、当該特定トランザクションＩＤと同じか又はより古いトランザクションＩＤとなるのを待ってから、抽出を行う。
【００４９】
ビュー用データ生成部４６は、データベース管理部４３によって蓄積されているデータセットに基づいて、予め設定された検索条件に合致するデータを含むビュー用データセットを生成する。なお、ここで生成されるビュー用データセットの構成は、図４を用いて説明した変更用データセットの構成と概略同様であり、生成されたビュー用データセットには、対応するトランザクションＩＤが設定される。
【００５０】
ビュー用データ送信部４７は、データベース管理部４３によって蓄積されているデータセットに基づいて生成された、予め設定された検索条件に合致するデータを含むビュー用データセットを、ビューマネージャーに送信する。
【００５１】
次に、ビュー管理ノードの機能構成を説明する。本実施形態において、ビューマネージャーとしての役割を有する複数のノードの夫々は、ビューマネージャー用プログラムをバスおよびＲＡＭ１２を介してＣＰＵ１１が読み込んで実行することによって、ビュー用データ取得部５１、ビュー管理部５２、ビュー用データ生成部５３、ビュー用データ送信部５４、ビュー用トランザクションＩＤ更新部５５、ビュー変更部５６、ビュー検索部５７、ビュー検索結果補正部５８および特定トランザクションＩＤ決定部５９を備えるビュー管理ノードとして機能する。
【００５２】
ビュー用データ取得部５１は、予め設定された検索条件に合致するデータを含むビュー用データセットを、データストアマネージャーまたは他のビューマネージャーから取得する。
【００５３】
ビュー管理部５２は、ビュー用データ取得部５１によって取得されたビュー用データセットに含まれるデータのうち、ビュー用トランザクションＩＤによって指定された時点のデータ及びより古いデータの集合を、予め設定された検索条件およびビュー用トランザクションＩＤに対応するビューとして保持する。ここで、ビュー用トランザクションＩＤとは、ビューに対応するスナップショットを示すトランザクションＩＤである。また、ビュー管理部５２は、ビュー変更部５６によってビューが変更された場合も、変更されたビューを、更新されたビュー用トランザクションＩＤに対応するビューとして保持する。
【００５４】
ビュー用データ生成部５３は、他のビューに予め設定された検索条件（本実施形態では、当該ビュー用データ送信部５４を備えるビューより上位のビューに予め設定された検索条件）に合致するデータを含む第二のビュー用データセットを生成する。ここで、第二のビュー用データセットは、上位ビューによって管理されるビューの変更のために生成されるものである。
【００５５】
また、ビュー用データ生成部５３は、当該ビューマネージャーによって管理されているビューに基づいて第二のビュー用データセットを生成してもよいし、ビュー用データ取得部５１によって取得されたビュー用データセットに基づいて第二のビュー用データセットを生成してもよい。ビュー用データセットに基づいて第二のビュー用データセットを生成する場合、ビュー用データ生成部５３は、取得されたビュー用データセットのうち、ビュー用トランザクションＩＤより新しいトランザクションＩＤが設定されたデータセットに基づいて、第二のビュー用データセットを生成する。
【００５６】
ビュー用データ送信部５４は、第二のビュー用データセットを、当該第二のビュー用データセットの生成に用いられた検索条件に係るビューを管理するビューマネージャー（本実施形態では、上位ビューを管理するビューマネージャー）に送信する。
【００５７】
ビュー用トランザクションＩＤ更新部５５は、ビュー用トランザクションＩＤを更新する。
【００５８】
ビュー変更部５６は、ビュー管理部５２によって管理されているビューを、更新されたビュー用トランザクションＩＤによって指定された時点のビュー用データセット及びより古いビュー用データセットを用いて変更する。
【００５９】
ビュー検索部５７は、指定された検索条件に従ってビューを検索する。
【００６０】
ビュー検索結果補正部５８は、検索対象のスナップショットを示す検索対象トランザクションＩＤが、ビュー用トランザクションＩＤよりも新しい場合に、ビュー検索部５７による検索結果を補正する。ビュー検索結果補正部５８は、検索結果の補正に、ビュー用データ取得部５１によって取得されたがビューに未反映のビュー用データセットのうち、検索対象トランザクションＩＤまでのビュー用データセットを用いる。但し、ここでビュー検索結果補正部５８は、検索対象トランザクションＩＤが、以後取得されないビュー用データセットの範囲を示す特定トランザクションＩＤよりも新しい場合、検索対象トランザクションＩＤが、当該特定トランザクションＩＤと同じか又はより古いトランザクションＩＤとなるのを待ってから、補正を行う。
【００６１】
特定トランザクションＩＤ決定部５９は、ビュー用データセットを生成する夫々のノードから、ノード毎のビュー用データセット生成部４６、５３によるビュー用データセット生成処理の進行時点を示すトランザクションＩＤを収集し、最もビュー用データセット生成処理の進行が遅れているノードにおける進行時点を示すトランザクションＩＤを、特定トランザクションＩＤとして決定する。即ち、特定トランザクションＩＤ決定部５９は、各ノードからノード毎の現在の処理進行時点を示すトランザクションＩＤを収集してこの値をノード毎に管理し、ノード毎の最新の値を比較して、比較の結果決定された最小の値（最も古い処理時点を指す値）を、特定トランザクションＩＤとして決定する。
【００６２】
＜処理の流れ＞
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
【００６３】
図５から図１０は、本実施形態におけるデータベース管理処理の流れを示すフローチャートである。図５のフローチャートに示された処理は、データベースシステムに属する何れかのセッション管理ノードのクエリ受付部２１によって、ユーザー端末９から送信されたクエリが受け付けられ、また、データベースの内容の変更命令を含むトランザクションの開始命令が受信されたことを契機として開始される。
【００６４】
ステップＳ１０１からステップＳ１０５では、トランザクションが開始され、処理に用いられるスナップショット特定用トランザクションＩＤが取得される。トランザクションの開始命令が受信されると（ステップＳ１０１）、スナップショット特定用情報取得部２３は、トランザクションマネージャーに対して、処理に用いられるスナップショット特定用トランザクションＩＤを問い合わせる（ステップＳ１０２およびステップＳ１０３）。そして、トランザクションマネージャーは、返信の時点において最後に付与されたトランザクションＩＤをセッションマネージャーに送信し（ステップＳ１０４）、セッションマネージャーのスナップショット特定用情報取得部２３は、このトランザクションＩＤを取得する（ステップＳ１０５）。なお、本実施形態において、トランザクションマネージャーは、返信の時点において最後に付与された（即ち、最新の）トランザクションＩＤを送信することとしているが、この際に送信されるトランザクションＩＤは、最新のものに限定されない。その後、本フローチャートに示された処理は終了する。
【００６５】
図６のフローチャートに示された処理は、図５に示された処理においてスナップショット特定用トランザクションＩＤが取得されたことを契機として開始される。
【００６６】
ステップＳ１０６では、トランザクションに含まれる命令が読み出される。処理用データ取得部２４は、クエリ受信部によって受信されたクエリに含まれる、次に処理されるべき命令を読み出す。その後、処理はステップＳ１０７へ進む。
【００６７】
ステップＳ１０７では、当該トランザクションに係る変更用データセット生成／更新処理を終了するか否かが判定される。具体的には、クエリ処理部２２は、当該トランザクションにおける次の命令がコミット命令である場合、当該トランザクションに係る変更用データセット生成／更新処理を終了する。当該トランザクションにおける次の命令がコミット命令ではない場合、処理はステップＳ１０８へ進む。
【００６８】
ステップＳ１０８からステップＳ１１２では、ステップＳ１０６で読み出された命令の処理に必要なデータが取得される。ステップＳ１０８からステップＳ１１２では、処理用データ取得部２４は、データストアマネージャーより高速なデータ取得に適したビューマネージャーに対して、データの要求を行う。処理用データ取得部２４は、読み出された命令に基づいて作成された検索条件、およびステップＳ１０５で取得されたスナップショット特定用トランザクションＩＤをビューマネージャーに通知して、データを要求する（ステップＳ１０８）。そして、送信されたデータ要求は、ビューマネージャーによって受信される（ステップＳ１０９）。
【００６９】
ステップＳ１０９でデータ要求を受信したビューマネージャーは、当該ビューマネージャーが管理するビューから、検索条件およびスナップショット特定用トランザクションＩＤに応じたデータを取得する（ステップＳ１１０）。データ要求を受信したビューマネージャーがデータを取得する処理の流れは、図１２を用いて後述する。
【００７０】
データ要求を受信したビューマネージャーは、ステップＳ１１０で取得された処理用データを、データ要求の送信元セッションマネージャーに対して送信する（ステップＳ１１１）。その後、データ要求の送信元セッションマネージャーの処理用データ取得部２４は、送信されたデータを受信することで、処理用データを取得する（ステップＳ１１２）。その後、処理はステップＳ１１３へ進む。
【００７１】
ステップＳ１１３では、データストアマネージャーからのデータ取得が必要か否か判定される。セッションマネージャーは、ステップＳ１１２までのビューマネージャーからの処理用データの取得処理で、クエリ処理部２２による処理に必要なデータが全て揃ったか否かを判定する。これは、ビューによってカバーされていないデータが存在する可能性があり、処理に必要なデータがビューマネージャーから取得できない可能性があるためである。
【００７２】
例えば、ビューによってカバーされるデータの範囲が、データ取得対象のテーブルの一部である場合、当該テーブルに含まれるデータのうち、ビューによってカバーされているデータについては、ビューマネージャーへの問い合わせで取得される。一方、データ取得対象のテーブルのうち、ビューによってカバーされていないデータについては、データストアアネージャーから取得する必要がある。ここで、ステップＳ１１３における判定の具体的な方法としては、テーブルにおいてビューによってカバーされる範囲を示すリスト等の情報（例えば、タプルＩＤや、テーブルの主キー等のタプルの内容を用いてビューによるカバーの有無を示すことが出来る）を設定しておき、このリストを参照することで、ビューマネージャーへの問い合わせのみで必要なデータが全て揃ったか否かを判定する方法が採用されてよい。
【００７３】
また、ビューによってカバーされるデータの範囲が、テーブル単位で設定される場合、より単純化した判定方法を採用することも出来る。例えば、テーブルがビューによってカバーされているか否かを判定可能な情報をテーブル単位で設定し、ビューによってカバーされていないテーブルについては、データストアアネージャーに問い合わせる方法を採用することとしてもよい。
【００７４】
判定の結果、処理に必要なデータが全て揃った（データストアマネージャーからのデータ取得が不要である）と判定された場合、処理はステップＳ１１９へ進む。一方、判定の結果、処理に必要なデータが不足している（データストアマネージャーからのデータ取得が必要である）と判定された場合、処理はステップＳ１１４へ進む。
【００７５】
ステップＳ１１４からステップＳ１１８では、ステップＳ１０６で読み出された命令の処理に必要なデータが取得される。処理用データ取得部２４は、検索条件およびスナップショット特定用トランザクションＩＤを、データストアマネージャーに通知して、データを要求する（ステップＳ１１４）。
【００７６】
データ要求を受信した（ステップＳ１１５）データストアマネージャーの処理用データ送信部４１は、受信されたスナップショット特定用トランザクションＩＤによって指定された時点の変更用データセット及びより古い変更用データセットを、受信された検索条件で検索し（ステップＳ１１６）、検索の結果得られた処理用データを、セッションマネージャーに対して送信する（ステップＳ１１７）。ここで、データ要求を受信したデータストアマネージャーがデータを取得する処理の流れの詳細は、図１１を用いて後述する。その後、処理用データ取得部２４は、データストアマネージャーから送信されたデータを受信することで、所望の処理用データを取得する（ステップＳ１１８）。その後、処理はステップＳ１１９へ進む。
【００７７】
ステップＳ１１９では、命令処理及び変更用データセット生成／更新処理が実行される。本ステップで実行される処理の詳細については、図７を用いて詳述する。その後、処理はステップＳ１０６へ戻る。
【００７８】
図７は、本実施形態においてセッションマネージャーによって実行される、命令処理及び変更用データセット生成／更新処理の流れを示す図である。本フローチャートは、図６に示されたステップＳ１１９の処理の内容を詳細に示したものである。
【００７９】
ステップＳ１２１では、取得された処理用データから、重複データが削除される。上述の通り、ビューは検索条件に基づいてデータストアマネージャー等から得られたデータを用いて生成されるものであるため、ステップＳ１１２でビューマネージャーから取得されたデータと、ステップＳ１１８でデータストアマネージャーから取得されたデータには、同一のタプルに関するデータの重複が生じ得る。このため、処理用データ取得部２４は、ステップＳ１１２及びステップＳ１１８で取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。その後、処理はステップＳ１２２へ進む。
【００８０】
なお、本実施形態では、データを取得した後に重複を解消する手法を採用しているが、このような手法に代えて、データ要求の時点で重複が発生しないように、ステップＳ１０８及びステップＳ１１４で送信されるデータ要求の内容を変更する手法が採用されてもよい。
【００８１】
ステップＳ１２２及びステップＳ１２３では、命令処理のために取得されたデータに対して、当該トランザクションにおいて生成済みの変更用データセットに基づいた調整が加えられる。これは、ステップＳ１２４における命令実行を、同一トランザクション内において既に実行された命令の実行結果を正しく反映したものとするための処理である。クエリ処理部２２は、当該トランザクションについて既に１回以上変更用データセット生成／変更処理が実行されており、当該トランザクションに係る変更用データセットが生成されている場合、当該変更用データセットの内容を用いて、ステップＳ１１８までの処理で取得されたデータを調整する。
【００８２】
より具体的には、クエリ処理部２２は、当該変更用データセット内のＩＮＳＥＲＴセットを検索条件（ステップＳ１０８及びステップＳ１１４で用いられた検索条件）で検索し、検索の結果抽出されたタプルを、ステップＳ１１８までに得られた取得データに追加する（ステップＳ１２２）。更に、クエリ処理部２２は、当該変更用データセット内のＤＥＬＥＴＥセットに示されたタプルを、当該取得データから除外する（ステップＳ１２３）。その後、処理はステップＳ１２４へ進む。
【００８３】
ステップＳ１２４では、命令が実行される。クエリ処理部２２は、ステップＳ１０８からステップＳ１１８までの処理で取得され、ステップＳ１２２及びステップＳ１２３で調整された結果得られた取得データを用いて、ステップＳ１０６で読み出された命令を処理する。即ち、クエリ処理部２２は、データストアマネージャーおよび／またはビューマネージャーからの取得データ、及び当該トランザクションにおいて生成済みの変更用データセットに基づいて、命令を処理する。その後、処理はステップＳ１２５へ進む。
【００８４】
ステップＳ１２５からステップＳ１２７では、変更用データセットが生成または更新される。データセット生成部２５は、ステップＳ１２４における命令実行の結果得られた変更をデータベースに反映することなく、変更対象のタプルＩＤおよび変更内容を含む変更用データセット（図４を参照）を生成または更新する。
【００８５】
ここで、命令実行の結果発生した新たな削除対象タプルには、当該トランザクションのこれまでの処理において新たに追加されたタプルを対象とするものと、そうでないものとが存在する。このため、データセット生成部２５は、命令実行の結果発生した新たな削除対象タプルのうち、当該トランザクションに係る変更用データセット内のＩＮＳＥＲＴセットに存在するタプル（当該トランザクションのこれまでの処理において新たに追加されたタプル）については、当該ＩＮＳＥＲＴセットから削除する（ステップＳ１２５）。また、データセット生成部２５は、命令実行の結果発生した新たな削除対象タプルのうち、当該トランザクションに係る変更用データセット内のＩＮＳＥＲＴセットに無い新たな削除対象タプルについては、当該トランザクションに係る変更用データセット内のＤＥＬＥＴＥセットに追加する（ステップＳ１２６）。そして、データセット生成部２５は、命令実行の結果発生した新たに追加されるタプル（タプルＩＤ及び当該タプルのデータ内容）を、当該トランザクションに係る変更用データセット内のＩＮＳＥＲＴセットに追加する（ステップＳ１２７）。
【００８６】
ここで、変更命令がＵＰＤＡＴＥ命令またはＩＮＳＥＲＴ命令である場合、ＩＮＳＥＲＴデータセットのタプルＩＤには、新たに採番された、データベースシステム全体において（より具体的には、複数のデータストアマネージャーによって管理される複数のデータストア間において）ユニークなタプルＩＤが書き込まれる。また、当該トランザクションに係る変更用データセットが新たに生成される場合、当該変更用データセットには、ステップＳ１０５で取得された、スナップショット特定用トランザクションＩＤが設定される。その後、本フローチャートに示された処理は終了する。
【００８７】
なお、本実施形態では、命令実行の結果発生した新たな削除対象タプルが、当該トランザクションに係る変更用データセット内のＩＮＳＥＲＴセットに存在するタプルである場合、命令実行の都度、新たな削除対象タプルを変更用データセット内のＩＮＳＥＲＴセットから削除する方法を採用している（ステップＳ１２５を参照）。但し、上述した方法に代えて、他の方法が採用されてもよい。例えば、トランザクション内での命令実行で発生する削除対象タプルを、命令が順次実行されている間はＤＥＬＥＴＥセットに蓄積しておき、ＩＮＳＥＲＴセットのデータストアマネージャーへの送信（後述するステップＳ２０６）前に、ＩＮＳＥＲＴセットとＤＥＬＥＴＥセットとを比較し、ＤＥＬＥＴＥセットとＩＮＳＥＲＴセットとの間で重複するタプルを相殺することとしてもよい。
【００８８】
図８のフローチャートに示された処理は、セッションマネージャーによって生成された変更用データセットに係るコミット命令が読み出されたことを契機として実行される。
【００８９】
ステップＳ２０１およびステップＳ２０２では、変更用データセットに含まれるＩＮＳＥＲＴデータセット（変更内容）及び当該変更用データセットに設定されたデータセットＩＤが、データストアマネージャー宛に送信される。ここで、各セッションマネージャーのデータセット送信部２６は、複数のデータストアマネージャーのうち、少なくとも、ＩＮＳＥＲＴ命令によってデータが追加されるデータストアを管理するデータストアマネージャーを決定し（ステップＳ２０１）、データセットＩＤおよびＩＮＳＥＲＴデータセットを、決定されたデータストアマネージャーに対して送信する（ステップＳ２０２）。ここで、ＩＮＳＥＲＴデータセットは、目的のデータストアマネージャーに対して直接送信されてもよいし、複数のノードを介して間接的に送信されてもよい。そして、データストアマネージャーのデータセット／識別子受信部４２は、セッションマネージャーによって送信されたデータセットＩＤおよびＩＮＳＥＲＴデータセット（変更内容）を取得する。その後、処理はステップＳ２０３へ進む。
【００９０】
ステップＳ２０３では、変更用データセットにＤＥＬＥＴＥデータセットが含まれるか否かが判定される。変更用データセットにＤＥＬＥＴＥデータセットが含まれず、ＩＮＳＥＲＴデータセットのみが変更用データセットに含まれる場合、当該命令は既存のタプルを変更するものでは無いため、トランザクションマネージャーによる競合判定は不要である。このため、変更用データセットにＤＥＬＥＴＥデータセットが含まれないと判定された場合、処理はステップＳ２０４へ進む。
【００９１】
ステップＳ２０４では、データセットＩＤが送信される。セッションマネージャーのデータセット送信部２６は、データセットＩＤを、トランザクションマネージャーに送信する。トランザクションマネージャーの情報取得部３１は、セッションマネージャーによって送信されたデータセットＩＤを取得する。その後、本フローチャートに示された処理は終了する。
【００９２】
一方、ステップＳ２０３で変更用データセットにＤＥＬＥＴＥデータセットが含まれると判定された場合、処理はステップＳ２０５へ進む。
【００９３】
ステップＳ２０５およびステップＳ２０６では、変更用データセットに設定されたデータセットＩＤおよびＤＥＬＥＴＥデータセット（変更内容）が、データストアマネージャー宛に送信される。ここで、各セッションマネージャーのデータセット送信部２６は、複数のデータストアマネージャーのうち、少なくとも、ＤＥＬＥＴＥ命令による変更対象のデータを含むデータストアを管理するデータストアマネージャーを送信先に決定し（ステップＳ２０５）、データセットＩＤおよびＤＥＬＥＴＥデータセットを、送信先に決定されたデータストアマネージャーに対して送信する（ステップＳ２０６）。ここで、ＤＥＬＥＴＥデータセットは、目的のデータストアマネージャーに対して直接送信されてもよいし、複数のノードを介して間接的に送信されてもよい。そして、データストアマネージャーのデータセット／識別子受信部４２は、セッションマネージャーによって送信されたデータセットＩＤおよびＤＥＬＥＴＥデータセット（変更内容）を取得する。その後、処理はステップＳ２０７へ進む。
【００９４】
ステップＳ２０７では、データセットＩＤ、スナップショット特定用トランザクションＩＤおよびＤＥＬＥＴＥデータセットが、トランザクションマネージャー宛に送信される。セッションマネージャーのデータセット送信部２６は、ステップＳ２０６で送信されたデータセットＩＤおよびＤＥＬＥＴＥデータセット（削除対象タプルＩＤ）を、スナップショット特定用トランザクションＩＤとともに、トランザクションマネージャーに送信する。トランザクションマネージャーの情報取得部３１は、セッションマネージャーによって送信されたデータセットＩＤ、スナップショット特定用トランザクションＩＤおよびＤＥＬＥＴＥデータセット（削除対象タプルＩＤ）を取得する。その後、本フローチャートに示された処理は終了する。
【００９５】
図９および図１０のフローチャートに示された処理は、セッションマネージャーによって送信されたデータセットＩＤがトランザクションマネージャーによって受信されたことを契機として実行される。
【００９６】
ステップＳ３０１では、データセットＩＤが受信される。ここで、送信されたデータセットＩＤがステップＳ２０４で送信されたものである場合、トランザクションマネージャーの情報取得部３１は、セッションマネージャーによって送信されたデータセットＩＤを受信する。一方、送信されたデータセットＩＤがステップＳ２０７で送信されたものである場合、トランザクションマネージャーの情報取得部３１は、データセットＩＤに加えて、スナップショット特定用トランザクションＩＤおよびＤＥＬＥＴＥデータセットを取得する。その後、処理はステップＳ３０２へ進む。
【００９７】
ステップＳ３０２では、受信されたデータセットＩＤが、ＤＥＬＥＴＥデータセットと併せて受信されたものであるか否かが判定される。受信されたデータセットＩＤにＤＥＬＥＴＥデータセットが組み合わせられている場合、処理はステップＳ３０４の競合判定へ進む。一方、受信されたデータセットＩＤにＤＥＬＥＴＥデータセットが組み合わせられていない場合、当該データセットＩＤが示す変更用データセットは既存のタプルを変更するものでは無いため、トランザクションマネージャーによる競合判定は不要である。このため、受信されたデータセットＩＤにＤＥＬＥＴＥデータセットが組み合わせられていない場合、処理はステップＳ３０３へ進む。
【００９８】
ステップＳ３０３では、トランザクションＩＤが採番される。削除対象の競合が無い場合、識別子生成部３４は、当該データセットＩＤが示す変更用データセットに係るトランザクションを識別するためのトランザクションＩＤを採番する。上述の通り、トランザクションＩＤは、トランザクションの処理に係る論理上の時系列における位置を把握可能な識別子であり、本実施形態では、競合が存在しないことが確認された順に、昇順で整数の数値が採番される。その後、処理はステップＳ３１４へ進む。
【００９９】
ステップＳ３０４では、競合判定が行われる。競合判定部３２は、ステップＳ３０１で取得されたＤＥＬＥＴＥデータセットに記載された削除対象タプルＩＤと、後述するステップＳ３１３が以前に実行された際に蓄積された競合判定用タプルＩＤと、を比較し、一致するタプルＩＤが存在するか否かを確認することで、削除対象の競合の有無を判定する。
【０１００】
また、競合判定用タプルＩＤは、本フローチャートに係るデータベース管理処理が以前に実行された際に、後述するステップＳ３１３において蓄積されたタプルＩＤである。上述の通り、変更用データセットには、ステップＳ１０５で取得されたスナップショット特定用トランザクションＩＤが設定されており、競合判定部３２は、当該トランザクションＩＤによって特定されるトランザクションよりも後に蓄積された競合判定用タプルＩＤと、削除対象タプルＩＤとを比較する。
【０１０１】
競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合する（一致するタプルＩＤが存在する）と判定された場合、処理はステップＳ３０５へ進む。一方、競合判定の結果、削除対象タプルＩＤと競合判定用タプルＩＤとが競合しない（一致するタプルＩＤが存在しない）と判定された場合、処理はステップＳ３１２へ進む。
【０１０２】
ステップＳ３０５からＳ３１１では、変更用データセットに係るトランザクションが中断され、当該変更用データセットに基づく変更が中止される。ステップＳ３０４の競合判定において削除対象の競合があると判定された場合、トランザクションマネージャー、セッションマネージャーおよびデータストアマネージャーは、該当する削除対象タプルを含む変更用データセットに基づくデータベースの変更を中止する。
【０１０３】
具体的には、トランザクションマネージャーは、アボート通知を、データセットＩＤの送信元セッションマネージャーに送信する（ステップＳ３０５）。アボート通知を受信したセッションマネージャーは（ステップＳ３０６）、当該変更用データセットに係るトランザクションを中断（アボート）し（ステップＳ３０７）、少なくとも当該変更用データセットが送付されたデータストア管理ノードに対して、当該変更用データセットの破棄を指示する（ステップＳ３０８）。変更用データセットの破棄の指示を受信したデータストアマネージャーは（ステップＳ３０９）、受信済みの変更用データセットを破棄する（ステップＳ３１０）。また、セッションマネージャーは、トランザクションの中断をユーザーに通知する（ステップＳ３１１）。
【０１０４】
なお、本実施形態では、データストアマネージャーへのデータセット破棄の指示はセッションマネージャーから送信されるが、トランザクションマネージャーがデータストアマネージャーに対して直接アボート通知を送信することとしてもよい。この際、トランザクションマネージャーは、アボート通知の送信先（アボート対象のデータセットを受信したデータストアマネージャー）を、セッションマネージャーから取得してもよいし、全てのデータストアマネージャーに対してアボート通知をブロードキャストすることとしてもよい。その後、本フローチャートに示された処理は終了する。
【０１０５】
ステップＳ３１２では、トランザクションＩＤが採番される。ステップＳ３０４で削除対象の競合が無いと判定された場合、識別子生成部３４は、当該データセットＩＤが示す変更用データセットに係るトランザクションを識別するためのトランザクションＩＤを採番する。採用される具体的なトランザクションＩＤの態様は、ステップＳ３０３において説明した通りである。その後、処理はステップＳ３１３へ進む。
【０１０６】
ステップＳ３１３では、競合判定用タプルＩＤが蓄積される。変更データ単位情報蓄積部３３は、ステップＳ３０１で取得されたＤＥＬＥＴＥデータセットに記載された削除対象タプルＩＤを、競合判定用タプルＩＤとして、ステップＳ３１２で採番されたトランザクションＩＤと紐付けて蓄積する。ここで蓄積された競合判定用タプルＩＤは、本フローチャートに係るデータベース管理処理が次回以降実行された際に、ステップＳ３０４で参照される。その後、処理はステップＳ３１４へ進む。
【０１０７】
ステップＳ３１４およびステップＳ３１５では、データセットＩＤおよびトランザクションＩＤが記録され、データセットＩＤおよびトランザクションＩＤが送信される。トランザクションマネージャーは、採番されたトランザクションＩＤと、データセットＩＤとを紐付けて、トランザクション管理ノードのストレージに記録する（ステップＳ３１４）。そして、トランザクションマネージャーの識別子送信部３５は、互いに紐付けられたデータセットＩＤおよびトランザクションＩＤの組である識別子セットを、全てのデータストアマネージャーに対して送信する（ステップＳ３１５）。
【０１０８】
即ち、本実施形態では、トランザクションマネージャーは、採番されたトランザクションＩＤを、対応するデータセットを有さないデータストアマネージャーに対しても、最新のトランザクションＩＤとして通知する。最新のトランザクションＩＤの通知を受けたデータストアマネージャーは、最新のトランザクションＩＤを、図１１を参照して後述するデータ検索処理において、検索対象トランザクションＩＤとの比較のために用いる。
【０１０９】
但し、ステップＳ３１５の処理の時点では、採番されたトランザクションＩＤは、少なくとも、当該データセットＩＤが示す変更用データセットの変更対象となるデータストアを管理するデータストアマネージャー宛に送信されていればよい。対応するデータセットを有さないデータストアマネージャーへのトランザクションＩＤの通知がステップＳ３１５の処理の時点で行われない場合、例えば、トランザクションマネージャーは、トランザクションＩＤが採番されるごとに通知するのではなく、定期的（例えば、１秒ごと）に通知することで、通信量を減らすことができる。
【０１１０】
なお、ステップＳ３１５において識別子セットを、変更対象のデータストアを管理するデータストアマネージャーのみに送信する構成を採用する場合、トランザクションマネージャーは、対応するＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセットを受信したデータストアマネージャーを、セッションマネージャーからの通知を受けることによって知ることが出来る。但し、識別子セットの送信先となるデータストアマネージャーを決定するための手段は限定されず、種々の手段が採用されてよい。
【０１１１】
また、識別子送信部３５は、複数の識別子セットをまとめて送信してもよい。複数の識別子セットをまとめて送信することで、データベースシステムにおける通信負荷を軽減することが出来る。その後、処理はステップＳ３１６へ進む。
【０１１２】
ステップＳ３１６からステップＳ３１８では、コミット通知が行われる。トランザクションマネージャーは、変更用データセットの送信元セッションマネージャーに対してコミット通知を送信する（ステップＳ３１６）。コミット通知を受信した（ステップＳ３１７）セッションマネージャーは、クエリの送信元であるユーザー端末９に対して、コミットが完了したことを通知する（ステップＳ３１８）。本開示に係るデータベース管理技術では、ユーザーに対するコミット通知は、データストアにおけるデータセットへのトランザクションＩＤ付与（後述するステップＳ３２１）を待たずに行われてもよいし、待ってから行われてもよい。
【０１１３】
ステップＳ３１９では、データセットＩＤおよびトランザクションＩＤが受信される。データストアマネージャーのデータセット／識別子受信部４２は、データセットＩＤおよびトランザクションＩＤの組である識別子セットを受信する。その後、処理はステップＳ３２０へ進む。
【０１１４】
ステップＳ３２０およびステップＳ３２１では、変更用データセットにトランザクションＩＤが付される。データストアマネージャーのデータベース管理部４３は、図８を参照して説明した処理で予め受信されている変更用データセット（ＩＮＳＥＲＴデータセットおよび／またはＤＥＬＥＴＥデータセット）に設定されたデータセットＩＤと、ステップＳ３１９で受信したデータセットＩＤとを比較することで、受信したデータセットＩＤに対応する変更用データセットを特定する（ステップＳ３２０）。当該データストアマネージャーが、データセットＩＤに対応する変更用データセットを受信している場合、データベース管理部４３は、識別子セットに含まれるデータセットＩＤによって示されるＩＮＳＥＲＴデータセットおよび／またはＤＥＬＥＴＥデータセットに、当該データセットＩＤに対応するトランザクションＩＤを設定する（Ｓ３２１）。その後、処理はステップＳ３２２へ進む。
【０１１５】
ステップＳ３２２では、特定トランザクションＩＤが更新される。データストアマネージャーのデータベース管理部４３は、ステップＳ３１９で受信されたトランザクションＩＤで、当該データストアマネージャーによって管理される特定トランザクションＩＤを更新する。ここで更新される特定トランザクションＩＤは、当該データストアマネージャーによって以後データベースに反映されないデータセットの範囲を示すトランザクションＩＤであり、後述するデータ検索処理において、検索処理の待機の要否を判定するために用いられる。その後、本フローチャートに示された処理は終了する。
【０１１６】
本実施形態に係るデータベースシステムでは、所定の形式を有するテーブル等が書き換えられることによってデータベースの内容が変更されるのではなく、変更の内容を含む変更用データセットをトランザクションＩＤに関連付けてデータストアに蓄積することで、データベースの内容が変更される。このため、本実施形態に係るデータベースシステムによれば、データベースの内容変更（更新および削除）に伴う処理負荷を低減させることが出来る。また、本実施形態に係るデータベースシステムでは、データベースの基礎部分が整理されたテーブル等に依存しないため、テーブルが壊れる等の問題に対処するための仕組み（チェックポイント等）を省略することが出来る。
【０１１７】
図１１は、本実施形態に係る、データストアマネージャーにおけるデータ検索処理の流れを示すフローチャートである。図１１は、ステップＳ１１６やステップＳ７１０等において実行されるデータ検索処理を詳細に説明するものである。
【０１１８】
ステップＳ４０１およびステップＳ４０２では、検索に必要なデータセットが当該データストアマネージャーによって未だデータベースに反映されていない可能性、換言すれば、当該データストアマネージャーによって未だトランザクションＩＤが付されていないデータセットに、検索に必要なデータセットが含まれている可能性が判定される。判定の結果、検索に必要なデータセットが未だ反映されていない可能性がある場合、検索処理が待機される。具体的には、データ抽出部４５は、待機の必要性を判定するため、検索対象のスナップショットを示す検索対象トランザクションＩＤと、当該データベースシステム全体における現在の処理の進行時点を示す特定トランザクションＩＤと、を比較する（ステップＳ４０１）。ここで、検索対象トランザクションＩＤは、当該データ検索処理がステップＳ１１６に係る処理である場合、スナップショット特定用トランザクションＩＤであり、当該データ検索処理がステップＳ７１０に係る処理である場合、ビュー用トランザクションＩＤである。
【０１１９】
また、本実施形態において、検索対象トランザクションＩＤと比較される特定トランザクションＩＤは、図１０のステップＳ３２２で更新された、特定トランザクションＩＤである。
【０１２０】
なお、検索結果の補正に必要なデータセットが未だ反映されていない可能性の有無を判断するために検索対象トランザクションＩＤと比較される対象は、本実施形態に開示された例に限定されない。検索対象トランザクションＩＤと比較される特定トランザクションＩＤは、検索を行うデータストアマネージャーによって以後反映されないデータセットの範囲を示すトランザクションＩＤであればよい。即ち、本実施形態において、データストアマネージャーにおける特定トランザクションＩＤとは、検索を行うデータストアマネージャーが、（既に受信したか、または今後受信する全ての）データセットにその値より小さいトランザクションＩＤ（即ち、それより古いトランザクションＩＤ）を付与することがないことが保証されたトランザクションＩＤである。また、判断を行うデータストアマネージャーが、判断のための情報（例えば、最新のトランザクションＩＤ）を取得する方法も限定されない。本実施形態では、最新のトランザクションＩＤがトランザクションマネージャーから通知されることによって（ステップＳ３１５）、データストアマネージャーは判断のための情報を取得するが、データストアマネージャーは、判断のための情報を、検索処理の際にトランザクションマネージャーや他のデータストアマネージャーに問い合わせることで取得してもよい。
【０１２１】
ステップＳ４０１における判定の結果、検索対象トランザクションＩＤが、特定トランザクションＩＤより後の（新しい）トランザクションＩＤであると判定された場合、検索に必要なデータセットが当該データストアマネージャーによって未だデータベースに反映されていない可能性がある。このため、データ抽出部４５は、特定トランザクションＩＤが、検索対象トランザクションＩＤと同じ又は新しいトランザクションＩＤとなるまで（換言すれば、検索に必要なデータセットが取得される可能性が無くなるまで）待機する（ステップＳ４０２）。一方、検索対象トランザクションＩＤが、特定トランザクションＩＤと同じか又はより古いトランザクションＩＤであると判定された場合、処理はステップＳ４０３へ進む。
【０１２２】
ステップＳ４０３からステップＳ４０５では、検索条件に応じたデータの抽出が行われる。はじめに、データ抽出部４５は、データベース管理部４３によって蓄積されているデータセットのうち、検索対象のスナップショットを示す検索対象トランザクションＩＤと同じか又はより古いトランザクションＩＤが設定されたデータセットから、所望の検索条件（例えば、他のノードから通知された検索条件）に合致するデータ（具体的には、ＩＮＳＥＲＴデータセットに含まれるタプルの変更内容）を抽出する（ステップＳ４０３）。
【０１２３】
次に、データ抽出部４５は、ステップＳ４０３でＩＮＳＥＲＴデータセットから索出されたタプルのタプルＩＤで、検索対象のスナップショットを示す検索対象トランザクションＩＤと同じか又はより古いトランザクションＩＤが設定されたＤＥＬＥＴＥデータセットを検索する（ステップＳ４０４）。そして、データ抽出部４５は、ステップＳ４０３の索出結果から、ステップＳ４０４でＤＥＬＥＴＥデータセット内に発見されたタプルＩＤに係るデータを除く（ステップＳ４０５）。このようにすることで、データ抽出部４５は、データストアマネージャーに蓄積された変更用データセット（ＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセットを含む）から、所望の検索条件および所望のスナップショットに合致するデータを抽出する。その後、本フローチャートに示された処理は終了する。
【０１２４】
図１２は、本実施形態に係る、ビューマネージャーにおけるデータ検索処理の流れを示すフローチャートである。図１２は、ステップＳ１１０やステップＳ７０３等において実行されるデータ検索処理を詳細に説明するものである。
【０１２５】
ステップＳ５０１およびステップＳ５０２では、検索結果の補正に必要なビュー用データセットが当該ビューマネージャーによって未だ受信されていない可能性が判定され、必要なデータセットが未だ受信されていない可能性がある場合、検索処理が待機される。具体的には、ビュー検索結果補正部５８は、待機の必要性を判定するため、検索対象のスナップショットを示す検索対象トランザクションＩＤと、当該データベースシステム全体における現在のビュー用データセット生成処理の進行時点を示す特定トランザクションＩＤとを比較する（ステップＳ５０１）。
【０１２６】
本実施形態において、データベースシステム全体における現在のビュー用データセット生成処理の進行時点を示す特定トランザクションＩＤは、以下のようにして決定される。即ち、特定トランザクションＩＤ決定部５９は、ビュー用データセットを生成する各ノード（データストアマネージャーおよびビューマネージャーを含む）から、ノード毎のビュー用データセット生成処理（図１５および図１６を参照）の進行時点を示すトランザクションＩＤを収集し、最も処理の進行が遅れているノードにおける進行時点を示すトランザクションＩＤを、特定トランザクションＩＤとして決定する。このため、本実施形態では、ビュー用データセットを生成する各ノード（データストアマネージャーおよびビューマネージャーを含む）は、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤを、システム内の関連するビューマネージャーに対して通知する（通知処理については、図１５および図１６を用いて後述する）。
【０１２７】
なお、検索結果の補正に必要なデータセットが未だ受信されていない可能性の判断には、その他の手法が採用されてもよい。検索対象トランザクションＩＤと比較される特定トランザクションＩＤは、検索の対象となるビューについて以後取得されないビュー用データセットの範囲を示すトランザクションＩＤであればよい。即ち、本実施形態において、ビューにおける特定トランザクションＩＤとは、検索を行うビューマネージャーが、以後、検索対象となるビューについてその値より小さいトランザクションＩＤ（即ち、それより古いトランザクションＩＤ）が付与されたビュー用データセットを取得することがないことが保証されたトランザクションＩＤである。また、判断を行うビューマネージャーが、判断のための情報（本実施形態では、ノード毎のビュー用データセット生成処理の進行時点を示すトランザクションＩＤ）を収集する方法も限定されない。ビューマネージャーは、判断のための情報を、検索処理の際にデータストアマネージャーや他のビューマネージャーに問い合わせることで収集してもよい。
【０１２８】
ステップＳ５０１における判定の結果、検索対象トランザクションＩＤが、特定トランザクションＩＤより後の（新しい）トランザクションＩＤであると判定された場合、検索結果の補正に必要なデータセットが当該ビューマネージャーによって未だ受信されていない可能性がある。このため、ビュー検索結果補正部５８は、特定トランザクションＩＤが、検索対象トランザクションＩＤと同じ又は新しいトランザクションＩＤとなるまで（換言すれば、検索結果の補正に必要なデータセットが取得される可能性が無くなるまで）待機する（ステップＳ５０２）。一方、検索対象トランザクションＩＤが、特定トランザクションＩＤと同じか又はより古いトランザクションＩＤであると判定された場合、処理はステップＳ５０３へ進む。
【０１２９】
なお、本実施形態では、検索対象トランザクションＩＤと、前記特定トランザクションＩＤと、を比較することで、検索結果の補正に必要なデータセットが未だ受信されていない可能性の有無を判断しているが、この判断はその他の手法を用いて行われてもよい。
【０１３０】
ステップＳ５０３では、検索対象のスナップショットを示す検索対象トランザクションＩＤと、ビュー用トランザクションＩＤとが比較される。ここで、検索対象トランザクションＩＤが、ビュー用トランザクションＩＤより古いトランザクションＩＤであると判定された場合、当該ビューマネージャーに保持されているビューでは検索対象のスナップショットの検索は困難である。このため、ビューマネージャーは検索リクエストの送信元に対して、検索失敗を通知する（ステップＳ５０４）。一方、検索対象トランザクションＩＤが、ビュー用トランザクションＩＤと同じかまたはより新しいトランザクションＩＤであると判定された場合、処理はステップＳ５０５へ進む。
【０１３１】
ステップＳ５０５では、指定された検索条件に従ってビューが検索される。ビュー検索部５７は、指定された検索条件を用いて、ビューが保持されているデータ形式（例えば、表形式やグラフ形式等）に応じた方法で、ビューを検索する。前述の通り、本開示を実施する際に採用されるビューのデータ形式は限定されず、その検索方法も限定されない。ビューのデータ形式には、表形式やグラフ形式等の従来のデータベース技術に係るものが採用可能であり、その検索方法も従来と同様のものが採用可能であるため、ビューの検索方法についての詳細な説明は省略する。その後、処理はステップＳ５０６へ進む。
【０１３２】
ステップＳ５０６からステップＳ５０８では、ステップＳ５０５における検索結果が補正される。ビュー検索結果補正部５８は、ビュー用データ取得部５１によって取得されたがビューに未反映のビュー用データセットのうち、検索対象トランザクションＩＤまでのビュー用データセットに含まれる、指定された検索条件に合致する変更内容（具体的には、ＩＮＳＥＲＴデータセットに含まれるタプルの変更内容）を索出する（ステップＳ５０６）。そして、ビュー検索結果補正部５８は、ステップＳ５０５およびステップＳ５０６で索出されたタプルのタプルＩＤで、未反映のビュー用データセットのうち、ビューのトランザクションＩＤ以降且つ検索対象トランザクションＩＤ以前のＤＥＬＥＴＥデータセットを検索する（ステップＳ５０７）。
【０１３３】
なお、ステップＳ５０６では、検索によって取得されたデータから、重複データが削除される。ビュー用データセットは複数のノードから通知されているため、ビュー用データセットに含まれるデータには、同一のタプルに関するデータの重複が生じ得る。このため、ビュー検索結果補正部５８は、検索の結果ＩＮＳＥＲＴデータセットから取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。
【０１３４】
なお、本実施形態では、データを索出した後に重複を解消する手法を採用しているが、このような手法に代えて、データ検索の時点で重複が発生しないように検索条件を調整する手法が採用されてもよい。
【０１３５】
その後、ビュー検索結果補正部５８は、ステップＳ５０５で索出されたデータに、ステップＳ５０６で索出されたデータを加え、そこから、ステップＳ５０７でＤＥＬＥＴＥデータセットから索出された削除対象タプルＩＤに係るデータを除く（ステップＳ５０８）。ビュー検索部５７は、ステップＳ５０８で得られたデータを、検索結果とする。その後、本フローチャートに示された処理は終了する。
【０１３６】
図５から図１２のフローチャートを用いて説明した処理によって、上述の通りデータベースの変更に伴う負荷を低減させることが出来る。また、データストアマネージャーを複数用意することで、検索負荷は分散させることが可能である。但し、上記説明した処理では、ＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセットがデータストアマネージャーに蓄積されるに伴って、図１１に示したデータストアマネージャーにおけるデータ検索処理の処理量およびデータセットを保持するために使用される記憶領域が増える。このため、本実施形態に係るデータベースシステムでは、トランケート処理を行い、ストレージを効率的に使用することとした。ここで、トランケート処理は、データセット（ＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセット）の変形という方法で行われる。
【０１３７】
図１３は、本実施形態に係る、データストアマネージャーにおけるトランケート処理の流れを示すフローチャートである。図１３のフローチャートに示された処理は、例えば、定期的にバックグラウンド実行される。
【０１３８】
ステップＳ６０１では、処理の基準となる所定のトランザクションＩＤ（Ｘｉ）が決定される。集合データセット生成部４４は、以降発生しうるクエリ処理やビュー変更処理における、所定の時点より前のスナップショットの必要性に基づいて、処理の基準となる所定のトランザクションＩＤ（Ｘｉ）を決定する。処理の基準となる所定のトランザクションＩＤ（Ｘｉ）は、現在スナップショット特定用トランザクションＩＤまたはビュー用トランザクションＩＤとして使われている最も古いＩＤ、今後トランザクションマネージャーがスナップショット特定用トランザクションＩＤとして通知する可能性のある最も古いＩＤ、および今後ビュー用トランザクションＩＤとして用いられる可能性のある最も古いＩＤ、の何れよりも古いトランザクションＩＤであることが好ましい。
【０１３９】
所定のトランザクションＩＤ（Ｘｉ）を決定する具体的な手法には、様々な手法が採用されてよい。例えば、参照されているスナップショットのトランザクションＩＤを集計し、最も古いものに合わせて更新する手法が採用されてよい。また、例えば、後述するビュー用トランザクションＩＤよりもトランザクションの時系列において所定期間以上古いトランザクションＩＤが用いられることとしてもよい。その後、処理はステップＳ６０２へ進む。
【０１４０】
ステップＳ６０２およびステップＳ６０３では、所定のトランザクションＩＤによって指定された時点のデータセット及びより古いデータセットに含まれる、タプルの変更内容が連結され、削除対象タプルＩＤに示されたデータが除かれることで、所定のトランザクションＩＤ（Ｘｉ）によって指定された時点のデータセット及びより古いデータセットが統合された、集合データセットが生成される。具体的には、集合データセット生成部４４は、データストアマネージャーに蓄積されているデータセットのうち、所定のトランザクションＩＤ（Ｘｉ）によって指定された時点のＩＮＳＥＲＴデータセット及びより古いＩＮＳＥＲＴデータセットを特定して連結することで、集合ＩＮＳＥＲＴデータセットを生成する（ステップＳ６０２）。
【０１４１】
そして、集合データセット生成部４４は、連結によって生成された集合ＩＮＳＥＲＴデータセットから、所定のトランザクションＩＤ（Ｘｉ）によって指定された時点のＤＥＬＥＴＥデータセット及びより古いＤＥＬＥＴＥデータセットに指定されているタプルを除外する（ステップＳ６０３）。その後、処理はステップＳ６０４へ進む。
【０１４２】
ステップＳ６０４およびステップＳ６０５では、生成された集合ＩＮＳＥＲＴデータセットが、データストアの一部として管理開始される。データベース管理部４３は、新たに生成された集合ＩＮＳＥＲＴデータセットに、始点を示すトランザクションＩＤ（Ｘ０）と、終点を示すトランザクションＩＤ（Ｘｉ）と、の２つのトランザクションＩＤ（Ｘ０及びＸｉ）を設定する（ステップＳ６０４）。このようにして、新たに生成された集合データセットは、蓄積されたデータセットの１つとして管理される。そして、データベース管理部４３は、当該集合データセットの生成に用いられたデータセット、即ち、所定のトランザクションＩＤ（Ｘｉ）によって指定された時点のＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセット、並びにより古いＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセットを削除する（但し、新たに生成された集合ＩＮＳＥＲＴデータセットを除く）（ステップＳ６０５）。その後、本フローチャートに示された処理は終了する。
【０１４３】
また、本実施形態に係るデータベースシステムでは、データストアマネージャーによる検索負荷を低減させるために、ビューマネージャーによってビューを管理することとしている。以下、図１４から図１７を参照して、本実施形態におけるビューの作成および変更処理を説明する。
【０１４４】
図１４は、本実施形態に係る、ビュー作成処理の流れを示すフローチャートである。図１４のフローチャートに示された処理は、ビューマネージャーに、ビューの生成および当該ビューを生成するための検索条件が指示されたことを契機として開始される。この指示は、管理者やユーザー等によって行われてもよいし、上位ビューを管理するビューマネージャーやセッションマネージャー等の他のノードによって行われてもよい。上述の通り、本実施形態において、複数のビューは階層関係を有しており、上位ビューは、下位ビューによってカバーされるデータを参照して構築することができる。このため、上位ビューを管理するビューマネージャー（以下、「上位ビューマネージャー」と称する）は、より下位のビューを管理するビューマネージャー（以下、「下位ビューマネージャー」と称する）に対してビューの生成指示や検索条件の指示、データ要求等を行うことができる。
【０１４５】
ステップＳ７０１からステップＳ７０６では、下位ビューマネージャーから、ビューの作成に必要なデータ（ビュー用データセット）が取得される。上位ビューマネージャーのビュー用データ取得部５１は、予め設定された検索条件およびビュー用トランザクションＩＤ（ビューに対応するスナップショットを示すトランザクションＩＤ）を下位ビューマネージャーに通知して、データを要求する（ステップＳ７０１）。そして、送信されたデータ要求は、下位ビューマネージャーによって受信される（ステップＳ７０２）。
【０１４６】
ステップＳ７０２でデータ要求を受信した下位ビューマネージャーのビュー検索部５７は、指定された検索条件に従ってビューを検索し、検索条件およびビュー用トランザクションＩＤに応じたデータを取得する（ステップＳ７０３）。ここで、データ要求を受信した下位ビューマネージャーがデータを取得する処理の流れは、図１２を用いて説明した通りである。そして、下位ビューマネージャーのビュー用データ生成部５３は、上位ビューに予め設定された検索条件に合致するデータ（タプル）をＩＮＳＥＲＴセットとして含むビュー用データセットを生成する。また、下位ビューマネージャーは、ステップＳ７０２で受信された検索条件を、送信元の上位ビューマネージャーによって管理されるビューを識別可能な情報に関連付けて保存する（ステップＳ７０４）。
【０１４７】
データ要求を受信した下位ビューマネージャーのビュー用データ送信部５４は、ステップＳ７０３で生成されたビュー用データセットを、データ要求の送信元である上位ビューマネージャーに対して送信する（ステップＳ７０５）。その後、データ要求の送信元である上位ビューマネージャーのビュー用データ取得部５１は、送信されたデータを受信することで、ビュー用データセットを取得する（ステップＳ７０６）。その後、処理はステップＳ７０７へ進む。
【０１４８】
ステップＳ７０７では、データストアマネージャーからのデータ取得が必要か否か判定される。ビューマネージャーは、ステップＳ７０６までの下位ビューマネージャーからのビュー用データセットの取得処理で、ビューの作成に必要なデータが全て揃ったか否かを判定する。これは、下位ビューによってカバーされていないデータが存在する可能性があり、処理に必要なデータが下位ビューマネージャーから取得できない可能性があるためである。
【０１４９】
例えば、下位ビューによってカバーされるデータの範囲が、データ取得対象のテーブルの一部である場合、当該テーブルに含まれるデータのうち、下位ビューによってカバーされているデータについては、下位ビューマネージャーへの問い合わせで取得される。一方、データ取得対象のテーブルのうち、下位ビューによってカバーされていないデータについては、データストアアネージャーから取得する必要がある。ステップＳ７０７における判定の具体的な方法については、ステップＳ１１３において説明した方法と概略同様であるため、説明を省略する。
【０１５０】
判定の結果、ビューの作成に必要なデータが全て揃った（データストアマネージャーからのデータ取得が不要である）と判定された場合、処理はステップＳ７１４へ進む。一方、判定の結果、処理に必要なデータが不足している（データストアマネージャーからのデータ取得が必要である）と判定された場合、処理はステップＳ７０８へ進む。
【０１５１】
ステップＳ７０８からステップＳ７１３では、データストアマネージャーから、ビューの作成に必要なデータ（ビュー用データセット）が取得される。ビューマネージャーのビュー用データ取得部５１は、予め設定された検索条件およびビュー用トランザクションＩＤを、データストアマネージャーに通知して、データを要求する（ステップＳ７０８）。
【０１５２】
データ要求を受信した（ステップＳ７０９）データストアマネージャーのデータ抽出部４５は、データベース管理部４３によって蓄積されているデータセットに基づいて、予め設定された検索条件に合致するデータを抽出する。ビュー用データ生成部４６は、抽出されたデータ（タプル）をＩＮＳＥＲＴセットとして含むビュー用データセットを生成する（ステップＳ７１０）。ここで、データ要求を受信したデータストアマネージャーがデータを取得する処理の流れの詳細は、図１１を用いて説明した通りである（この場合、ビュー用トランザクションＩＤが、図１１の説明における「検索対象トランザクションＩＤ」として用いられる）。そして、データストアマネージャーは、ステップＳ７０９で受信された検索条件を、送信元のビューマネージャーによって管理されるビューを識別可能な情報に関連付けて保存する（ステップＳ７１１）。
【０１５３】
ビュー用データ送信部４７は、ステップＳ７１０で生成されたビュー用データセットを、ビューマネージャーに送信する（ステップＳ７１２）。その後、ビュー用データ取得部５１は、データストアマネージャーから送信されたデータを受信することで、所望のデータを取得する（ステップＳ７１３）。その後、処理はステップＳ７１４へ進む。
【０１５４】
ステップＳ７１４およびステップＳ７１５では、ビューの管理が開始される。ビュー管理部５２は、ビュー用データ取得部５１によって取得されたビュー用データセットに含まれるデータを、所定の形式（例えば、テーブル形式、グラフ形式等）のデータ集合であるビューとして生成する（ステップＳ７１４）。なお、ビューが生成される際には、ビュー用データセットに含まれるデータから、重複データが削除される。上述の通り、ビューは検索条件に基づいてデータストアマネージャー等から得られたデータを用いて生成されるものであるため、ステップＳ７０６で下位ビューマネージャーから取得されたデータと、ステップＳ７１３でデータストアマネージャーから取得されたデータには、同一のタプルに関するデータの重複が生じ得る。このため、ビュー管理部５２は、ステップＳ７０６及びステップＳ７１３で取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。
【０１５５】
なお、本実施形態では、データを取得した後に重複を解消する手法を採用しているが、このような手法に代えて、データ要求の時点で重複が発生しないように、ステップＳ７０１及びステップＳ７０８で送信されるデータ要求の内容を変更する手法が採用されてもよい。
【０１５６】
ビューが生成されると、ビュー管理部５２は、生成されたビューを、予め設定された検索条件およびビュー用トランザクションＩＤに対応するビューとして保持する（ステップＳ７１５）。その後、本フローチャートに示された処理は終了する。
【０１５７】
図１５から図１７は、本実施形態に係る、ビュー変更処理の流れを示すフローチャートである。図１５および図１６に示された処理は、データストアマネージャーにおいて新たなデータセットが管理開始されたこと（換言すれば、データセットにトランザクションＩＤが付与されたこと）を契機として実行される。データセットへのトランザクションＩＤの付与については、図１０のステップＳ３２１で説明した通りである。但し、図１５および図１６に示された処理は、トランザクションＩＤの付与とは独立したタイミングで、例えば定期的にバッチ処理されてもよい。
【０１５８】
ステップＳ８０１およびステップＳ８０２では、データストアマネージャーにおいてデータセットが検索される。ここで用いられる検索条件は、ビューマネージャーによって管理されているビューに設定されている検索条件であり、図１４のステップＳ７１１等で保存された検索条件である。データストアマネージャーのビュー用データ生成部４６は、予め設定されている検索条件で、新たにトランザクションＩＤが付されたＩＮＳＥＲＴデータセットを検索し、検索条件に合致する変更内容を抽出する（ステップＳ８０１）。また、ビュー用データ生成部４６は、前記検索条件で、新たにトランザクションＩＤが付されたＤＥＬＥＴＥデータセットに含まれるタプルＩＤが示すタプルを検索し、検索条件に合致する内容を有するタプルのタプルＩＤを特定する（ステップＳ８０２）。その後、処理はステップＳ８０３へ進む。
【０１５９】
なお、本実施形態では、データストアマネージャーがビューマネージャーにＤＥＬＥＴＥデータセットを送信する場合、データストアマネージャーは、設定された検索条件に対応する削除されたタプルＩＤのみを送信することとしている（ステップＳ８０５およびステップＳ８０６を参照）。そして、本実施形態では、設定された検索条件に対応する削除されたタプルＩＤを索出する方法として、データストアマネージャーのＤＥＬＥＴＥデータセット内のタプルＩＤで過去のＩＮＳＥＲＴデータセットをチェックして、ヒットしたタプルがそのビューの検索条件に合致するか否かを判定することとしている（ステップＳ８０２を参照）。但し、設定された検索条件に対応する削除されたタプルＩＤを索出する方法としては、ビューに送ったタプルＩＤのリストを保持しておき、これと照合する等の、その他の方法が採用されてもよい。また、ビューの更新のためにデータストアマネージャーがビューマネージャーにＤＥＬＥＴＥデータセットを送信する場合、すべてのＤＥＬＥＴＥデータセットを送信してもよい。
【０１６０】
ステップＳ８０３およびステップＳ８０４では、検索結果の有無が判定され、検索結果が得られなかった場合に、トランザクションＩＤが送信される。ステップＳ８０１およびステップＳ８０２における検索の結果、検索条件に合致するタプルが索出されなかった場合（ステップＳ８０３のＮＯ）、データストアマネージャーは、検索対象となったデータセットに付されていたトランザクションＩＤを、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして、ビューマネージャーに送信する（ステップＳ８０４）。
【０１６１】
ここで、トランザクションＩＤの送信先となるビューマネージャーは、検索に用いられた検索条件に対応するビューを保持するビューマネージャーであり、ステップＳ７１１で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。送信されたトランザクションＩＤを受信したビューマネージャーは、当該トランザクションＩＤを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして管理する。即ち、ここで受信されたトランザクションＩＤは、ステップＳ５０１において特定トランザクションＩＤを決定するために参照される。
【０１６２】
一方、ステップＳ８０１およびステップＳ８０２における検索の結果、検索条件に合致するタプルが索出された場合（ステップＳ８０３のＹＥＳ）、処理はステップＳ８０５へ進む。
【０１６３】
ステップＳ８０５からステップＳ８０７では、データストアマネージャーにおいてビュー用データセットが生成される。ビュー用データ生成部４６は、ステップＳ８０１で抽出された変更内容をＩＮＳＥＲＴデータセットに含み、ステップＳ８０２で特定されたタプルＩＤをＤＥＬＥＴＥデータセットに含むビュー用データセットを生成する（ステップＳ８０５）。そして、ビュー用データ送信部４７は、生成されたビュー用データセットを、トランザクションＩＤに関連付けて、ビューマネージャーに送信する（ステップＳ８０６）。ここで送信先となるビューマネージャーは、検索に用いられた検索条件に対応するビューを保持するビューマネージャーであり、ステップＳ７１１で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。ビューマネージャーのビュー用データ取得部５１は、送信されたビュー用データセットを受信する（ステップＳ８０７）。送信されたビュー用データセットを受信したビューマネージャーは、当該ビュー用データセットと共に受信されたトランザクションＩＤを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして管理し、ステップＳ５０１において特定トランザクションＩＤを決定するために参照する。その後、処理はステップＳ８０８へ進む。
【０１６４】
ステップＳ８０８およびステップＳ８０９では、ビューマネージャーにおいてデータセットが検索される。ここで用いられる検索条件は、当該ビューマネージャーが管理するビューより上位のビューに設定されている検索条件であり、図１４のステップＳ７０４等で保存された検索条件である。このため、ステップＳ８０８からステップＳ８１３の処理は、当該ビューマネージャーが上位ビューの検索条件を保持していない場合、実行されない。ビューマネージャーのビュー用データ生成部５３は、予め設定されている検索条件で、ステップＳ８０７で受信されたビュー用データセットに含まれるＩＮＳＥＲＴデータセットを検索し、検索条件に合致する変更内容を抽出する（ステップＳ８０８）。また、ビュー用データ生成部５３は、前記検索条件で、ステップＳ８０７で受信されたビュー用データセットに含まれるＤＥＬＥＴＥデータセットに含まれるタプルＩＤが示すタプルを検索し、検索条件に合致する内容を有するタプルのタプルＩＤを特定する（ステップＳ８０９）。その後、処理はステップＳ８１０へ進む。
【０１６５】
ステップＳ８１０およびステップＳ８１１では、検索結果の有無が判定され、検索結果が得られなかった場合に、トランザクションＩＤが送信される。ステップＳ８０８およびステップＳ８０９における検索の結果、検索条件に合致するタプルが索出されなかった場合（ステップＳ８１０のＮＯ）、ビューマネージャーは、検索対象となったビュー用データセットに付されていたトランザクションＩＤを、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして、上位ビューマネージャーに送信する（ステップＳ８１１）。
【０１６６】
ここで、トランザクションＩＤの送信先となる上位ビューマネージャーは、検索に用いられた検索条件に対応するビューを保持する上位ビューマネージャーであり、ステップＳ７０４で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。送信されたトランザクションＩＤを受信した上位ビューマネージャーは、当該トランザクションＩＤを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして管理し、ステップＳ５０１において特定トランザクションＩＤを決定するために参照する。
【０１６７】
一方、ステップＳ８０８およびステップＳ８０９における検索の結果、検索条件に合致するタプルが索出された場合（ステップＳ８１０のＹＥＳ）、処理はステップＳ８１２へ進む。
【０１６８】
ステップＳ８１２およびステップＳ８１３では、ビューマネージャーにおいて第二のビュー用データセットが生成される。ビュー用データ生成部５３は、ステップＳ８０８で抽出された変更内容をＩＮＳＥＲＴデータセットに含み、ステップＳ８０９で特定されたタプルＩＤをＤＥＬＥＴＥデータセットに含む第二のビュー用データセットを生成する（ステップＳ８１２）。そして、ビュー用データ送信部５４は、生成された第二のビュー用データセットを、トランザクションＩＤに関連付けて、上位ビューマネージャーに送信する（ステップＳ８１３）。ここで送信先となる上位ビューマネージャーは、検索に用いられた検索条件に対応するビューを保持する上位ビューマネージャーであり、ステップＳ７０４で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。上位ビューマネージャーのビュー用データ取得部５１は、送信された第二のビュー用データセットを受信する（図示は省略する）。なお、受信された第二のビュー用データセットは、データストアマネージャーから送信されたその他のビュー用データセットと同様、ビューの変更に用いられる（図１７を参照）。また、送信された第二のビュー用データセットを受信したビューマネージャーは、当該ビュー用データセットと共に受信されたトランザクションＩＤを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションＩＤとして管理し、ステップＳ５０１において特定トランザクションＩＤを決定するために参照する。その後、本フローチャートに示された処理は終了する。
【０１６９】
なお、ステップＳ８１３で送信されたビュー用データセットを受信したビューマネージャーが、更に上位のビューマネージャーを有する場合、ビュー用データセットを受信したビューマネージャーは、ステップＳ８０７からステップＳ８１３に示された処理を実行することで、当該ビューマネージャーから見て上位のビューマネージャーのためのビュー用データセットを生成し、送信する。即ち、ステップＳ８０７からステップＳ８１３に示された処理は、ビューマネージャー間の階層における下位から上位に向けて、生成されたビュー用データセットを受け渡しながら、それぞれのビューマネージャーにおいて実行される。
【０１７０】
図１７に示された処理は、所定のタイミングで（例えば、定期的に）実行される。
【０１７１】
ステップＳ９０１では、新たなビュー用トランザクションＩＤが決定される。ビュー用トランザクションＩＤ更新部５５は、ビュー用トランザクションＩＤを更新する。新たなビュー用トランザクションＩＤを決定する具体的な手法には様々なものが採用されうるが、例えば、複数のセッションマネージャーにおいて参照されているスナップショットのトランザクションＩＤを集計し、最も古いものに合わせて更新する等の手法が採用されてよい。この際、まれに極端に古いスナップショットが参照されている可能性があるが、そのようなスナップショットについては、トランザクションＩＤに閾値を設定する等して集計から除外することとしてもよい。新たなビュー用トランザクションＩＤが決定すると、処理はステップＳ９０２へ進む。
【０１７２】
ステップＳ９０２では、ビューが変更される。ビュー変更部５６は、ビュー管理部５２によって管理されているビューを、更新された新たなビュー用トランザクションＩＤによって指定された時点のビュー用データセット及びより古いビュー用データセットを用いて変更する。この際、ビュー変更部５６は、更新後のビュー用トランザクションＩＤまでのすべてのビュー用データセットを反映する。その後、本フローチャートに示された処理は終了する。
【０１７３】
本実施形態に係るデータベースシステムによれば、リレーショナルデータベースのようなテーブル等に依拠してビューが作成および変更されるのではなく、変更履歴（例えば、データセット）を参照してビューが作成および変更されるため、ビューの作成および変更に係る処理負荷を低減させることができる。また、ビューの作成および変更に係る処理負荷を低減させるために、メモリや記憶装置上にビューの実体を持たない論理上のビューを用いる技術も従来提案されているが、このようなビューでは、ビューの検索の度にビューのリンク先（実体）へのアクセスが発生するため、検索時の処理負荷が低減されない。これに対して、本実施形態に係るデータベースシステムによれば、ビューはメモリや記憶装置上に実体として存在するため、検索時の処理負荷を低減させることが出来る。
【０１７４】
また、本実施形態に係るデータベースシステムによれば、蓄積された変更履歴（例えば、データセット）をデータベースの基礎部分として用いるデータベースシステムにおいて検索を行う場合の処理負荷を、上記説明したようなビューマネージャーを備えることによって低減させることが出来る。このため、図５から図１１および図１３を用いて説明した、蓄積されたデータセットに依拠するデータベース管理と、図１２および図１４から図１７を用いて説明した、データセットに基づくビューの作成および変更と、を組み合わせることにより、データベースの内容変更（更新および削除）に伴う処理負荷の低減と、検索時の処理負荷の低減とを両立させることが出来る。但し、蓄積されたデータセットに依拠するデータベース管理と、データセットに基づくビューの作成および変更とは、必ずしも組み合わせて用いられなくても良く、他のデータベースシステムにおいて、個別に採用することとしてもよい。
【０１７５】
＜バリエーション＞
次に、本開示に係るシステム、情報処理装置、方法およびプログラムを実施する場合のバリエーションを説明する。
【０１７６】
本実施形態に係るデータベースシステムにおいて、更に、データベースの内容変更の際にＩＮＳＥＲＴデータセットおよびＤＥＬＥＴＥデータセットが送信される宛先データストアマネージャーを決定するためのルール（ハッシュ関数等）を予め決めておいてもよい。このようにすることで、データベースシステムを、データの配置が管理された分散データベースシステムとすることが出来る。
【０１７７】
また、上記実施形態では、ビューの更新が所定のタイミングで（例えば、定期的に）実行される例について説明したが、ビューの更新のタイミングは、意図的に遅延されてもよい。例えば、ビュー管理部５２によって管理されているビューの一部または全部が、ビューマネージャーのメモリに読み込まれている場合に、当該ビューのうちメモリに読み込まれている部分を変更してもよい。この際、ビュー変更部５６は、メモリに読み込まれているブロックに、更新されたビュー用トランザクションＩＤまでの関連する全てのビュー用データセットを反映する。
【０１７８】
また、例えば、ビュー変更部５６は、ビュー管理部５２によって管理されているビューが、更新されたビュー用トランザクションＩＤと同じかまたはより新しいスナップショットが指定された処理の対象となったことを契機として、当該ビューを変更してもよい。これらの手法が採用された場合、ビューが変更されるタイミングは散発的なものとなる。
【０１７９】
＜効果＞
本実施形態に係るデータベースシステムでは、変更用データセットをトランザクションＩＤに関連付けてデータストアに蓄積することで、データベースの内容が変更されるため、データベースの内容変更に伴う処理負荷を低減させることが出来る。また、本実施形態に係るデータベースシステムでは、データベースの基礎部分をリレーショナルデータベースのようなテーブル等に依拠しないため、テーブルが壊れる等の問題に対処するための仕組みを省略することが出来る。
【０１８０】
また、本実施形態に係るデータベースシステムによれば、変更履歴に基づいてビューが作成および変更されるため、ビューの作成および変更に係る処理負荷を低減させることができる。また、本実施形態に係るデータベースシステムによれば、ビューはメモリや記憶装置上に実体として存在するため、検索時の処理負荷を低減させることが出来る。
【０１８１】
更に、本実施形態に係るデータベースシステムによれば、ビューマネージャーを備えることによって、検索の処理負荷を低減させることが出来、データセットを用いたデータベース管理と、データセットに基づくビューの作成および変更と、を組み合わせることにより、データベースの内容変更（更新および削除）に伴う処理負荷の低減と、検索時の処理負荷の低減とを両立させることが出来る。但し、データセットを用いたデータベース管理と、データセットに基づくビューの作成および変更とは、必ずしも組み合わせて用いられなくても良く、他のデータベースシステムにおいて、個別に採用することとしてもよい。
【図１】
2018203376.tif 000003
【図２】
2018203376.tif 000004
【図３】
2018203376.tif 000005
【図４】
2018203376.tif 000006
【図５】
2018203376.tif 000007
【図６】
2018203376.tif 000008
【図７】
2018203376.tif 000009
【図８】
2018203376.tif 000010
【図９】
2018203376.tif 000011
【図１０】
2018203376.tif 000012
【図１１】
2018203376.tif 000013
【図１２】
2018203376.tif 000014
【図１３】
2018203376.tif 000015
【図１４】
2018203376.tif 000016
【図１５】
2018203376.tif 000017
【図１６】
2018203376.tif 000018
【図１７】
2018203376.tif 000019
【国際調査報告】
2018203376.tif 000020
2018203376.tif 000021
2018203376.tif 000022
2018203376.tif 000023