(57)【要約】【課題】キーバリューストア方式のデータ領域を用いて、ロールバック処理や排他制御を実現することを目的とする。【解決手段】インメモリデータベース１２０は、キーに対応する間接レコードを記憶する間接レコード記憶部１２２と、間接レコードに対応するマスタレコードを記憶するマスタレコード記憶部１２３と、マスタレコードに対応するリーフレコードを記憶するリーフレコード記憶部１２４と、リーフレコードに対応する実データを記憶する実データ記憶部１２５とを備える。間接レコードは、対応するマスタレコードが記憶された位置と、関連する他の間接レコードが記憶された位置とを示すポインタとを含み、マスタレコードは、対応するリーフレコードが記憶された位置を示すポインタを含み、リーフレコードは、対応する実データが記憶された位置と、次の改訂版の実データに対応するリーフレコードが記憶された位置とを示すポインタを含む。【選択図】図７
2015228165.tif 000002
【特許請求の範囲】
【請求項１】
キーに対応させて実データを記憶するキーバリューストア方式によるデータ管理を行うデータ管理装置であり、
キーに対応する間接レコードを記憶する間接レコード記憶部と、
間接レコードに対応するリーフレコードを記憶するリーフレコード記憶部とを備え、
前記間接レコードは、対応するリーフレコードが記憶された位置を示すマスタポインタと、関連する他の間接レコードが記憶された位置を示す間接ポインタとを含み、
前記リーフレコードは、対応する実データの情報と、次の改訂版の実データに対応するリーフレコードが記憶された位置を示すリーフポインタとを含む
ことを特徴とするデータ管理装置。
【請求項２】
キーに対応させて実データを記憶するキーバリューストア方式によるデータ管理を行うデータ管理装置であり、
キーに対応する間接レコードを記憶する間接レコード記憶部と、
間接レコードに対応するマスタレコードを記憶するマスタレコード記憶部と、
マスタレコードに対応するリーフレコードを記憶するリーフレコード記憶部と
を備え、
前記間接レコードは、対応するマスタレコードが記憶された位置を示すマスタポインタと、関連する他の間接レコードが記憶された位置を示す間接ポインタとを含み、
前記マスタレコードは、対応するリーフレコードが記憶された位置を示すリーフポインタを含み、
前記リーフレコードは、対応する実データの情報と、次の改訂版の実データに対応するリーフレコードが記憶された位置を示すリーフポインタとを含む
ことを特徴とするデータ管理装置。
【請求項３】
前記マスタレコードは、さらに、最新の実データの改訂版を示すバージョン情報を含むことを特徴とする請求項２に記載のデータ管理装置。
【請求項４】
前記データ管理装置は、さらに、
リーフレコードに対応する実データを記憶する実データ記憶部
を備え、
前記リーフレコードは、前記実データの情報として、対応する実データが記憶された位置を示すデータポインタを含む
ことを特徴とする請求項１から３までのいずれかに記載のデータ管理装置。
【請求項５】
前記データ管理装置は、さらに、
実データが更新された場合に、前記実データ記憶部が記憶した実データを上書きすることなく、更新された実データを前記実データ記憶部に格納し、格納した実データに対応するリーフレコードを前記リーフレコード記憶部に格納し、格納したリーフレコードが記憶された位置を示すリーフポインタを更新前の実データに対応するリーフレコードに含めるデータ管理部
を備えることを特徴とする請求項４に記載のデータ管理装置。
【請求項６】
前記データ管理部は、トランザクションが実行されて実データが更新された場合には、更新された実データを前記実データ記憶部に格納し、更新された実データに対応するリーフレコードを、他のトランザクションからの参照を許可しない更新状態として前記リーフレコード記憶部に格納し、前記トランザクションが正常終了した場合に、前記リーフレコードを、他のトランザクションからの参照を許可する確定状態に変更する
ことを特徴とする請求項５に記載のデータ管理装置。
【請求項７】
前記データ管理部は、前記トランザクションが異常終了した場合に、更新された実データを前記実データ記憶部から削除し、更新された実データに対応するリーフレコードを前記リーフレコード記憶部から削除する
ことを特徴とする請求項６に記載のデータ管理装置。
【請求項８】
前記データ管理部は、キーに対応する更新状態のリーフレコードが存在する場合、そのキーに対応する実データの更新を拒絶する
ことを特徴とする請求項６又は７に記載のデータ管理装置。
【請求項９】
前記データ管理装置は、さらに、
トランザクションに含まれる処理を実行する実行部と、
前記実行部が実行した処理によって実データが更新された場合、更新された実データと、更新された実データが記憶された位置を示すデータポインタと、更新された実データに対応するリーフレコードが記憶された位置を示すリーフポインタとを含むトランザクションデータを、他のデータ管理装置へ送信するデータ送信部と
を備え、
前記データ管理部は、他のデータ管理装置からトランザクションデータを受信すると、トランザクションデータに含まれる実データを、トランザクションデータに含まれるデータポインタが示す位置に格納し、トランザクションデータに含まれるデータポインタを含むリーフレコードを、トランザクションデータに含まれるリーフポインタが示す位置に格納し、トランザクションデータに含まれるリーフポインタを、更新前の実データに対応するリーフレコードに含める
ことを特徴とする請求項５から８までのいずれかに記載のデータ管理装置。
【請求項１０】
前記マスタポインタと前記間接ポインタと前記リーフポインタとは、メモリの基準アドレスを基準とした相対的な位置を示す
ことを特徴とする請求項１から９までのいずれかに記載のデータ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、キーに対応させてデータを記憶するキーバリューストア方式（ＫＶＳ方式）によるデータ管理技術に関する。
【背景技術】
【０００２】
識別情報であるキーと、データ（バリュー）とをペアにして記憶するＫＶＳ方式というデータ管理方式がある。ＫＶＳ方式では、キーを指定することにより、対応するデータを取得することができる。
【０００３】
分けることのできない一連の処理（以下、サービス）をトランザクションという。
トランザクションの途中のサービスでエラーが発生した場合、それまでに実行されたサービスで更新されたデータを元の状態に戻すロールバック処理が実行される。また、あるトランザクションで更新されたデータが、そのトランザクションの処理中に他のトランザクションによって更新されないように、排他制御が行われる。
【０００４】
インメモリデータベースという、データをコンピュータのメインメモリに展開し動作するデータベースがある。インメモリデータベースを用いると、データをハードディスク上に展開するディスク型データベースと比較して、高速に処理ができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−３３３４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＫＶＳ方式のデータ領域を用いてトランザクションを処理する場合、ＫＶＳ方式のデータ領域以外に、キュー構造を有するメモリ領域を利用しなければ、ロールバック処理や排他制御を実現することができなかった。
この発明は、ＫＶＳ方式のデータ管理を行う場合に、キュー構造を有するメモリ領域を利用することなく、ロールバック処理や排他制御を実現可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るデータ管理装置は、
キーに対応させて実データを記憶するキーバリューストア方式によるデータ管理を行うデータ管理装置であり、
キーに対応する間接レコードを記憶する間接レコード記憶部と、
間接レコードに対応するリーフレコードを記憶するリーフレコード記憶部とを備え、
前記間接レコードは、対応するリーフレコードが記憶された位置を示すマスタポインタと、関連する他の間接レコードが記憶された位置を示す間接ポインタとを含み、
前記リーフレコードは、対応する実データの情報と、次の改訂版の実データに対応するリーフレコードが記憶された位置を示すリーフポインタとを含む
ことを特徴とする。
【発明の効果】
【０００８】
この発明に係るデータ管理装置は、データ構造を工夫することにより、キュー構造を有するメモリ領域を利用することなく、ロールバック処理や排他制御を実現可能である。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る分散システム１０の構成図。
【図２】実施の形態１に係るデータ管理装置１００の構成図。
【図３】分散システム１０によるトランザクションの処理の説明図。
【図４】図３に示すトランザクションの処理におけるデータ状態推移を示す図。
【図５】ロールバック処理におけるデータ状態推移を示す図。
【図６】インメモリデータベース１２０の基本構造図。
【図７】インメモリデータベース１２０の構成図。
【図８】コミット処理及びロールバック処理におけるリーフレコードの状態推移を示す図。
【図９】チャンクポインタ及びデータコピーの説明図。
【図１０】実施の形態１に示したデータ管理装置１００のハードウェア構成の例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
最初に本実施の形態において用いる用語について、説明する。
スラブとは、インメモリデータベース内のデータの固まりを意味し、チャンクとは、スラブ内のデータの固まりを意味する。チャンクポインタとは、インメモリデータベースにおいて予め定められた基準アドレスを基準とした相対的な位置を示す論理アドレス情報である。
【００１１】
図１は、実施の形態１に係る分散システム１０の構成図である。
分散システム１０は、複数のデータ管理装置１００を備える。各データ管理装置１００は、サービスバス２０によって接続されている。
分散システム１０は、外部からトランザクションの実行命令を受信する。トランザクションには、実行順序の定められた複数のサービス（アプリケーション）が含まれている。各サービスは、どのデータ管理装置１００によって実行されるかと、入出力のデータ構造とが定められている。分散システム１０は、実行命令によって指定されたトランザクションの各サービスを、定められた実行順序に従い、定められたデータ管理装置１００により実行する。
【００１２】
図２は、実施の形態１に係るデータ管理装置１００の構成図である。
データ管理装置１００は、ＴＰＭ（Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓ  Ｍｏｎｉｔｏｒ）１１０、インメモリデータベース１２０を備える。
ＴＰＭ１１０は、インメモリデータベース１２０に記憶されたデータを用いて、トランザクションの処理を行う。ＴＰＭ１１０は、実行部１１１、データ管理部１１２、データ送信部１１３を備える。
インメモリデータベース１２０は、ＫＶＳ方式によりデータを管理する。インメモリデータベース１２０は、ハッシュテーブル１２１、間接レコード記憶部１２２、マスタレコード記憶部１２３、リーフレコード記憶部１２４、実データ記憶部１２５を備える。
【００１３】
図３は、分散システム１０によるトランザクションの処理の説明図である。
図３では、分散システム１０は、データ管理装置１００Ａ、データ管理装置１００Ｂ、データ管理装置１００Ｃを備える。データ管理装置１００Ａとデータ管理装置１００Ｂとが稼働系であり、データ管理装置１００Ｃがデータ管理装置１００Ｂのバックアップとなる待機系である。
図３では、分散システム１０は、サービスＡ、サービスＢ、サービスＣという実行順序が定められたトランザクションの実行命令を受信する。サービスＡは、データ管理装置１００Ａで実行され、サービスＢ，Ｃはデータ管理装置１００Ｂで実行されることがトランザクションに定められている。
【００１４】
図４は、図３に示すトランザクションの処理におけるデータ状態推移を示す図である。
図４では、各データ管理装置１００のインメモリデータベース１２０に記憶されたデータと、トランザクション処理中に他のデータ管理装置１００へのデータ渡し用に一時記憶されるトランザクションデータとを示す。トランザクションデータは、後述する主記憶装置９０３に記憶される。
図４では、コミット前の更新状態のデータを破線で示し、コミット後の確定状態のデータを実線で示す。
【００１５】
（１）分散システム１０がトランザクションの実行命令を受信する。正確には、分散システム１０の各データ管理装置１００がサービスバス２０を介して実行命令を受信する。すると、各データ管理装置１００は、実行命令を参照して、実行順序が１番のサービスＡを実行することになっているか否かを確認する。そして、実行順序が１番のサービスＡを実行することになっているデータ管理装置１００ＡのＴＰＭ１１０が動作を開始し、他のデータ管理装置１００Ｂ及びデータ管理装置１００ＣのＴＰＭ１１０は待機する。
【００１６】
（２）データ管理装置１００Ａの実行部１１１は、トランザクションデータを生成する。そして、実行部１１１は、サービスＡを実行し、データＸを生成する。
（３）データ管理装置１００Ａのデータ管理部１１２は、データＸを更新状態としてデータ管理装置１００Ａのインメモリデータベース１２０に格納する。また、データ管理部１１２は、データＸと、データＸが記憶されたインメモリデータベース１２０における位置を示すチャンクポインタと、データＸがサービスＡによって生成されたことを示す生成元情報とを、トランザクションデータに格納する。
（４）データ管理装置１００Ａのデータ送信部１１３は、トランザクションデータを、実行順序が２番のサービスＢを実行することになっているデータ管理装置１００Ｂへ送信する。
【００１７】
（５）トランザクションデータを受信すると、データ管理装置１００ＢのＴＰＭ１１０が動作を開始する。データ管理装置１００Ｂの実行部１１１は、サービスＢを実行し、データＹを生成する。
（６）データ管理装置１００Ｂのデータ管理部１１２は、トランザクションデータに含まれるデータＸを更新状態として、チャンクポインタに従いデータ管理装置１００Ｂのインメモリデータベース１２０に格納する。また、データ管理部１１２は、データＹを更新状態としてデータ管理装置１００Ｂのインメモリデータベース１２０に格納する。また、データ管理部１１２は、データＹと、データＹが記憶されたインメモリデータベース１２０における位置を示すチャンクポインタと、データＹがサービスＢによって生成されたことを示す生成元情報とを、トランザクションデータに格納する。
（７）続いて、データ管理装置１００Ｂの実行部１１１は、サービスＣを実行し、データＺを生成する。そして、データ管理装置１００Ｂのデータ管理部１１２は、データＺを更新状態としてデータ管理装置１００Ｂのインメモリデータベース１２０に格納する。また、データ管理部１１２は、データＺと、データＺが記憶されたインメモリデータベース１２０における位置を示すチャンクポインタと、データＺがサービスＣによって生成されたことを示す生成元情報とを、トランザクションデータに格納する。
【００１８】
（８）データ管理装置１００Ｂの実行部１１１は、サービスＣが完了すると、その旨を実行順序が１番のサービスＡを実行したデータ管理装置１００Ａに通知する。すると、データ管理装置１００Ａのデータ管理部１１２は、コミット処理を行い、インメモリデータベース１２０に記憶されたデータＸを更新状態から確定状態に変更する。
（９）データ管理装置１００Ａのデータ管理部１１２は、コミット処理が完了すると、その旨を実行順序が２番のサービスＢを実行したデータ管理装置１００Ｂに通知する。すると、データ管理装置１００Ｂのデータ管理部１１２は、コミット処理を行い、インメモリデータベース１２０に記憶されたデータＸ，Ｙ，Ｚを更新状態から確定状態に変更する。
【００１９】
（１０）データ管理装置１００Ｃのデータ管理部１１２は、データ管理装置１００Ｂのインメモリデータベース１２０に確定状態のデータＸ，Ｙ，Ｚが新たに記憶されたため、同期処理を行い、データ管理装置１００Ｃのインメモリデータベース１２０に確定状態としてデータＸ，Ｙ，Ｚを格納する。
【００２０】
以上のように、トランザクションで規定された順にサービスが実行され、全てのサービスが完了した後に、トランザクションで規定された順にコミット処理が実行される。
【００２１】
図５は、ロールバック処理におけるデータ状態推移を示す図である。
図５では、図４の（７）に示すように、データ管理装置１００Ａのインメモリデータベース１２０にデータＸが格納され、データ管理装置１００Ｂのインメモリデータベース１２０にデータＸ，Ｙ，Ｚが格納された後に、サービスＣでエラーが発生した場合を想定している。そこで、図５では、図４の（７）と、図４の（７）の後の（８’）〜（９’）を示す。
【００２２】
（８’）サービスＣでエラーが発生すると、データ管理装置１００Ｂの実行部１１１は、その旨を実行順序が１番のサービスＡを実行したデータ管理装置１００Ａに通知する。すると、データ管理装置１００Ａのデータ管理部１１２は、ロールバック処理を行い、インメモリデータベース１２０に記憶されたデータＸを削除する。
（９’）データ管理装置１００Ａのデータ管理部１１２は、ロールバック処理が完了すると、その旨を実行順序が２番のサービスＢを実行したデータ管理装置１００Ｂに通知する。すると、データ管理装置１００Ｂのデータ管理部１１２は、ロールバック処理を行い、インメモリデータベース１２０に記憶されたデータＸ，Ｙ，Ｚを削除する。その後、データ管理装置１００Ｂのデータ管理部１１２は、トランザクションデータを削除する。
【００２３】
以上のように、エラーが発生すると、トランザクションで規定された順にロールバック処理が実行され、インメモリデータベース１２０に格納されたデータが削除される。
【００２４】
図６は、インメモリデータベース１２０の基本構造図である。
インメモリデータベース１２０は、複数のスラブ１３０から構成される。
各スラブ１３０は、複数のチャンク１３１から構成される。
【００２５】
図７は、インメモリデータベース１２０の構成図である。
上述した通り、インメモリデータベース１２０は、ハッシュテーブル１２１、間接レコード記憶部１２２、マスタレコード記憶部１２３、リーフレコード記憶部１２４、実データ記憶部１２５を備える。
ハッシュテーブル１２１、間接レコード記憶部１２２、マスタレコード記憶部１２３、リーフレコード記憶部１２４、実データ記憶部１２５は、それぞれ、インメモリデータベース１２０を構成する一部のチャンク１３１によって構成される。例えば、ハッシュテーブル１２１、間接レコード記憶部１２２、マスタレコード記憶部１２３、リーフレコード記憶部１２４、実データ記憶部１２５は、それぞれ異なるスラブ１３０によって構成される。
【００２６】
ハッシュテーブル１２１は、一般的なハッシュテーブルであり、キーに対応する実データを高速に検索するための仕組みである。ハッシュテーブル１２１は、ＫＶＳ方式におけるキーに対応して、間接レコード記憶部１２２が記憶された位置を示す間接ポインタ１３２を記憶する。
【００２７】
間接レコード記憶部１２２は、対応するマスタレコードが記憶された位置を示すマスタポインタ１３３と、関連する他の間接レコードが記憶された位置を示す間接ポインタ１３２とを含む間接レコードを記憶する。
つまり、間接レコードは、イテレータ構造（チャンクポインタが示す実データを順番にアクセスできる構造）になっており、複数の間接レコードが間接ポインタ１３２によって関連付けられている。そのため、ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）におけるレコードのように、複数のデータ項目を１つのキーに対して対応付けることが可能となる。つまり、ＫＶＳ方式により、ＲＤＢと同様のデータ管理を実現することが可能となる。
【００２８】
マスタレコード記憶部１２３は、対応するリーフレコードが記憶された位置を示すリーフポインタ１３４と、最新の実データの改訂版を示すバージョン情報とを含むマスタレコードを記憶する。
【００２９】
リーフレコード記憶部１２４は、対応する実データが記憶された位置を示すデータポインタ１３５（実データの情報の一例）と、次の改訂版の実データに対応するリーフレコードが記憶された位置を示すリーフポインタ１３４とを含むリーフレコードを記憶する。
つまり、リーフレコードは、イテレータ構造になっており、複数のバージョンの実データに対応するリーフレコードがリーフポインタ１３４によって関連付けられている。そのため、新しいバージョンの実データが格納された場合に、古いバージョンの実データを削除することなく、キーに対応付けたままにすることが可能となる。
【００３０】
実データ記憶部１２５は、実データ１３６を記憶する。
【００３１】
間接レコード記憶部１２２に記憶された間接レコードは、アプリケーションからアクセスされる項目名を有する。つまりアプリケーション側から参照されるのは、間接レコードのみで、間接レコードから関連付けられるその他の記憶部の情報はアプリケーション側からは参照されない。間接レコードを経由しないでアプリケーションがマスタレコードへアクセスした場合、アプリケーションのアクセスにより、マスタレコード、リーフレコード、実データが破壊される可能性がある。間接レコード記憶部１２２がマスタレコード記憶部１２３と同じ構成を有し２重構成にしているのは、そのためであり、万が一、間接レコード記憶部１２２や間接レコードが破壊された場合は、マスタレコード記憶部１２３やマスタレコードから復元可能となる。
マスタレコード記憶部１２３に記憶されたマスタレコードは、実データに対して１つ存在するデータであり、バージョンに関わらない管理単位である。
リーフレコード記憶部１２４に記憶されたリーフレコードは、マスタレコードに対して複数存在し、バージョン毎に管理される。
【００３２】
間接ポインタ１３２、マスタポインタ１３３、リーフポインタ１３４、データポインタ１３５を総称してチャンクポインタと呼ぶ。
アプリケーション側から参照される間接レコードの項目名は、これらチャンクポインタによって実データ記憶部１２５に記憶された実データと関連づけられる。なおマスタレコード記憶部１２３の構成を省略し、間接レコード記憶部１２２のマスタポインタ１３３がリーフポインタ１３４と同等の動作を行うことで、間接レコードからリーフレコードが関連づけられるように構成することができる。この場合、間接レコードはマスタレコードの代わりにマスタ管理機能を有することになる。
また実データ記憶部１２５および実データポインタ１３５の構成を省略し、リーフレコード記憶部１２４内に実データ１３６（実データの情報の一例）を保持することにより、図７に示す構成による処理と同様の処理を行うことができる。
【００３３】
図８は、コミット処理及びロールバック処理におけるリーフレコードの状態推移を示す図である。
上述した通り、トランザクションによって生成されたデータは更新状態として一旦格納され、トランザクションの完了後にコミット処理が実行され確定状態に変更される。一方、コミット処理ではなく、ロールバック処理が実行された場合、更新状態のデータが削除される。
データが更新状態又は確定状態として管理されると説明したが、具体的には、リーフレコードが更新状態又は確定状態として管理される。
【００３４】
図８では、あるキーに対応して、バージョン１とバージョン２との２つのリーフレコードが確定状態になっているときに、実データが更新された場合を想定している。
実データが更新されると、データ管理部１１２は、既に記憶されている実データに上書きすることなく、更新された実データを新たに実データ記憶部１２５に格納する。また、データ管理部１１２は、格納した実データが記憶された位置を示すデータポインタ１３５を含むリーフレコードを更新状態としてリーフレコード記憶部１２４に格納する。さらに、データ管理部１１２は、格納したリーフレコードが記憶された位置を示すリーフポインタ１３４を、確定状態のリーフレコードのうち最新バージョンのリーフレコード（ここでは、バージョン２のリーフレコード）に含める。
【００３５】
その後、コミット処理が実行されると、データ管理部１１２は、更新状態のリーフレコードを確定状態に変更する。また、データ管理部１１２は、マスタレコードに含まれるバージョン情報を最新の版に（ここでは、バージョン２からバージョン３に）更新する。
【００３６】
一方、コミット処理ではなく、ロールバック処理が実行されると、データ管理部１１２は、更新状態のリーフレコードと、そのリーフレコードに対応する実データとを削除する。これにより、インメモリデータベース１２０が、トランザクションの実行前の状態に戻る。
【００３７】
なお、データ管理部１１２は、更新状態のリーフレコードに対しては、更新元のトランザクション以外からのアクセスを拒絶する。一方、データ管理部１１２は、確定状態のリーフレコードに対しては、どのトランザクションからのアクセスも受理する。但し、データ管理部１１２は、あるキーに対応する更新状態のリーフレコードが存在する場合には、他のトランザクションからそのキーに対応する実データへの参照のみ許可し、更新は拒絶する。これにより、排他制御が実現される。
【００３８】
また、ここでは、データが更新される場合について説明した。しかし、データが新規に格納される場合についても、同様にロールバック処理や排他制御を実現することができる。
但し、データが新規に格納される場合には、実データが実データ記憶部１２５に格納される際、リーフレコード記憶部１２４だけでなく、ハッシュテーブル１２１と間接レコード記憶部１２２とマスタレコード記憶部１２３とにも対応するレコードが格納される。そして、ロールバック処理では、更新状態のリーフレコードと、そのリーフレコードに対応する実データとともに、ハッシュテーブル１２１と間接レコード記憶部１２２とマスタレコード記憶部１２３とに格納された、対応するレコードも削除される。
【００３９】
図９は、チャンクポインタ及びデータコピーの説明図である。
チャンクポインタは、上述したとおり、インメモリデータベース１２０において予め定められた基準アドレスを基準とした相対的な位置を示す論理アドレス情報である。
図９では、データ管理装置１００Ａにおいては、インメモリデータベース１２０の“０ｘ００１０”が基準アドレスとされている。ここでは、スラブ１３０とチャンク１３１との番号は、左上から右下へ１から順に数えられるとする。
データＸについてのチャンクポインタは、基準アドレスを基準として、６番目のスラブ１３０における、６番目のチャンク１３１を示している。また、データＹについてのチャンクポインタは、基準アドレスを基準として、１１番目のスラブ１３０における、５番目のチャンク１３１を示している。
【００４０】
図９では、データ管理装置１００Ｂにおいては、インメモリデータベース１２０の“０ｘ０１００”が基準アドレスとされている。この場合に、例えば、データＸ，Ｙがデータ管理装置１００Ａからデータ管理装置１００Ｂにコピーされたとする。すると、データ管理部１１２は、データ管理装置１００Ｂのインメモリデータベース１２０の基準アドレスを基準とする、６番目のスラブ１３０における、６番目のチャンク１３１に、データＸを格納する。同様に、データ管理部１１２は、データ管理装置１００Ｂのインメモリデータベース１２０の基準アドレスを基準とする、１１番目のスラブ１３０における、５番目のチャンク１３１に、データＹを格納する。
つまり、データのコピーが行われる場合、コピー元のデータのチャンクポインタが示す位置にデータが格納される。
【００４１】
これにより、データ管理装置１００間のデータコピーの際に、チャンクポインタの再計算等が不要であり、データコピーの処理を高速に行うことが可能である。また、サービスがデータを参照する際も、チャンクポインタを介してデータを参照すれば、動作するデータ管理装置１００を意識せずデータ参照を行うことが可能である。
【００４２】
以上のように、実施の形態１に係る分散システム１０では、インメモリデータベース１２０のデータ構造を工夫した。これにより、キュー構造を有するメモリ領域を利用することなく、ロールバック処理及び排他制御を実現することが可能である。また、ＲＤＢのように、１つのキーに対して複数のデータ項目を管理することが可能である。
【００４３】
また、実施の形態１に係る分散システム１０では、データ管理装置１００間でトランザクションデータを受け渡して、トランザクションを処理し、コミット処理及びロールバック処理を行う。これにより、複数のデータ管理装置１００でトランザクションを処理する場合に、コミット処理及びロールバック処理を実現することが可能である。
【００４４】
また、実施の形態１に係る分散システム１０では、サービスの実行順序や、サービスを実行するデータ管理装置１００が実行命令において規定されている。そのため、サービスの実行順序や実行するデータ管理装置１００を容易に変更可能である。
なお、サービスの実行順序や、サービスを実行するデータ管理装置１００は、実行命令内に規定せず、外部の記憶装置等に記憶しておき、実行部１１１に参照させるようにしてもよい。
【００４５】
また、実施の形態１に係る分散システム１０では、データ管理装置１００間のデータコピーの際に、コピー元のデータのチャンクポインタが示す位置にデータを格納する。これにより、データコピーの際にチャンクポインタの再計算が不要であり、データコピーを高速に行うことが可能である。
【００４６】
図１０は、実施の形態１に示したデータ管理装置１００のハードウェア構成の例を示す図である。
データ管理装置１００は、コンピュータである。データ管理装置１００の各要素をプログラムで実現することができる。
データ管理装置１００のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００４７】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ
Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置等である。主記憶装置９０３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。通信装置９０４は、例えば通信ボード等である。入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
インメモリデータベース１２０は、外部記憶装置９０２や主記憶装置９０３によって構成される。
【００４８】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、実行部１１１、データ管理部１１２、データ送信部１１３として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、上記プログラムを実行する。
また、実施の形態１の説明において、インメモリデータベース１２０が記憶するデータ等が主記憶装置９０３にファイルとして記憶されている。
【００４９】
なお、図１０の構成は、あくまでもデータ管理装置１００のハードウェア構成の一例を示すものであり、データ管理装置１００のハードウェア構成は図１０に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００５０】
１０  分散システム、１００  データ管理装置、１１０  ＴＰＭ、１１１  実行部、１１２  データ管理部、１１３  データ送信部、１２０  インメモリデータベース、１２１  ハッシュテーブル、１２２  間接レコード記憶部、１２３  マスタレコード記憶部、１２４  リーフレコード記憶部、１２５  実データ記憶部、１３０  スラブ、１３１  チャンク、１３２  間接ポインタ、１３３  マスタポインタ、１３４  リーフポインタ、１３５  データポインタ、１３６  実データ。
【図１】
2015228165.tif 000003
【図２】
2015228165.tif 000004
【図３】
2015228165.tif 000005
【図４】
2015228165.tif 000006
【図５】
2015228165.tif 000007
【図６】
2015228165.tif 000008
【図７】
2015228165.tif 000009
【図８】
2015228165.tif 000010
【図９】
2015228165.tif 000011
【図１０】
2015228165.tif 000012