(57)【特許請求の範囲】
【請求項１】
データを格納する複数のノードを備える分散型データベースと、当該複数のノードに格納されたデータを管理するデータ管理装置とを備える分散型データベースシステムであって、
前記分散型データベースが備える各ノードは、
タイムスタンプによって記憶された時刻が関連付けられたデータと当該データを識別するためのキーとを記憶するデータ記憶部と、
データを更新するデータ更新部と、
前記データ記憶部に記憶されたデータを取得するデータ送信部と、
前記データを取得する要求があった際、前記データ送信部が取得したデータに含まれるタイムスタンプおよび前記管理情報記憶部に記憶された当該データに関する最新のタイムスタンプを用いた、前記データ送信部が取得したデータが最新のデータであるか否かの判定の結果に基づいて、前記取得されたデータが最新のデータでない場合に、他のノードから前記最新のタイムスタンプに関連づけられた最新のデータを取得し、前記データ更新部に対して、前記データ記憶部に記憶されたデータの前記最新のデータへの更新を要求するデータ更新促進部と、
を備え、
前記データ管理装置は、
前記データ記憶部に記憶されたデータの前記キーと、前記タイムスタンプとを含む管理情報を記憶する管理情報記憶部と、
前記データ記憶部のデータが更新されると、当該データに関する前記管理情報を更新する管理情報更新部と、
を備えた分散型データベースシステム。
【請求項２】
前記管理情報記憶部は、前記データ記憶部に記憶されたデータの更新状況を含む管理情報を記憶し、
前記管理情報更新部は、前記データ記憶部がデータ更新要求を受信すると、更新対象のデータに関する前記更新状況を「更新中」に変更し、前記更新対象のデータの更新が終了すると前記更新状況を「完了」に変更し、
前記データ送信部は、取得対象のデータに関する前記更新状況が「更新中」である場合、前記データ記憶部からデータを取得しない請求項１に記載の分散型データベースシステム。
【請求項３】
データを格納するデータ記憶部を具備する複数のノードを備える分散型データベースと、当該複数のノードに格納されたデータを管理するデータ管理装置とを備える分散型データベースシステムのプログラムであって、
コンピュータに、
前記データ記憶部にタイムスタンプによって記憶された時刻が関連付けられたデータと当該データを識別するためのキーとを記憶する機能と、
データを更新する機能と、
前記データ記憶部に記憶されたデータを取得する機能と、
前記データを取得する要求があった際、前記取得されたデータに含まれるタイムスタンプおよび前記管理情報に含まれる当該データに関する最新のタイムスタンプを用いた、前記取得されたデータが最新のデータであるか否かの判定の結果に基づいて、前記取得されたデータが最新のデータでない場合に、他のノードから前記最新のタイムスタンプに関連づけられた最新のデータを取得し、前記データ記憶部に記憶されたデータの前記最新のデータへの更新を要求する機能と、
前記データ記憶部に記憶されたデータの前記キーと、前記タイムスタンプとを含む管理情報を記憶する機能と、
前記データ記憶部に記憶されたデータが更新されると、当該データに関する前記管理情報を更新する機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、分散型データベースシステム及びプログラムに関する。
【背景技術】
【０００２】
一般に、データストアとも呼ばれる分散型データベースシステムは、処理の高速化を目的として、複数のノード装置にデータを分散して保存し、管理している。以下データを保存するノード装置をデータストレージノードといい、ノードと記載する。
【０００３】
どのノードにどのデータが格納されているかは、データ毎に振られたデータ識別情報と格納先ノードとの組を、データ管理機能を持つサーバやノードが保持して管理している。
【０００４】
このような分散型データベースシステムには、同じデータレコードのコピーが複数のノードに格納されている。こうすることで、各ノードが個別にクライアント端末やシステムからの要求に応えてデータを送信できるため、同じデータレコードへの大量のアクセスを分散して対応することができる。
【０００５】
このような分散型データベースシステムの場合、あるデータレコードの値を更新しようとしたときに、同じデータレコードを保持している他のノードの情報を同時に書き換えることは、アクセスの分散によるメリットを阻害するため、行われない。通常は、ある１つのノード上のデータレコードの値を書き換えた後、他のノードに記憶されたデータの値は、最初のノードからデータ交換のプロトコルを用いて、順番に伝播して、置き換わっていく。
【０００６】
そのため、データレコードの値を更新する場合に全ての関係するノードのデータが最新の値になるまである程度の時間を要する。その結果、全てのノードのデータが書き換わる前に、このデータストアにアクセスしたクライアント端末やシステムは、古いデータを入手する可能性がある。
【０００７】
また、データレコードを更新している最中にデータを取得したアプリケーションも、取得直後にデータが更新されても、それを知ることができない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平８−１１５２４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題の目的は、データの管理情報を別のデータストアで管理して、最新のデータを取得しやすくすることができる分散型データベースシステムを提供することである。具体的には、データのアクセスの際にその管理情報に基づいてデータの更新を要求する際、アクセス頻度が高いデータレコードについては、データの更新タイミングを早くすることによって行なうことによって提供する。
【課題を解決するための手段】
【００１０】
実施形態の分散型データベースシステムは、データを格納する複数のノードを備える分散型データベースと、当該複数のノードに格納されたデータを管理するデータ管理装置とを備える。ノードは、タイムスタンプによって記憶された時刻が関連付けられたデータと当該データを識別するためのキーとを記憶するデータ記憶部と、データを更新するデータ更新部と、データ記憶部に記憶されたデータを取得するデータ送信部と、データを取得する要求があった際、データ送信部が取得したデータに含まれるタイムスタンプおよび管理情報記憶部に記憶された当該データに関する最新のタイムスタンプを用いた、データ送信部が取得したデータが最新のデータであるか否かの判定の結果に基づいて、取得されたデータが最新のデータでない場合に、他のノードから最新のタイムスタンプに関連づけられた最新のデータを取得し、データ更新部に対して、データ記憶部に記憶されたデータの最新のデータへの更新を要求するデータ更新促進部とを備える。データ管理装置は、データ記憶部に記憶されたデータのキーと、タイムスタンプとを含む管理情報を記憶する管理情報記憶部と、データ記憶部のデータが更新されると、当該データに関する管理情報を更新する管理情報更新部とを備える。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る分散型データベースシステムの構成の一例を示す図。
【図２】本実施形態に係る分散型データベースシステムの機能構成の一例を示す図。
【図３】本実施形態に係る分散型データベースシステムのデータ記憶部に記憶されたデータレコードの一例を示す図。
【図４】本実施形態に係る分散型データベースシステムの管理情報記憶部に記憶された管理情報の一例を示す図。
【図５】本実施形態に係る分散型データベースシステムのデータ更新処理の一例を示すシーケンス図。
【図６】本実施形態に係る分散型データベースシステムのデータ更新処理の一例を示すシーケンス図。
【図７】本実施形態に係る分散型データベースシステムの管理情報記憶部に記憶された管理情報の一例を示す図。
【図８】本実施形態に係る分散型データベースシステムのデータ記憶部に記憶されたデータレコードの一例を示す図。
【図９】本実施形態に係る分散型データベースシステムの管理情報記憶部に記憶された管理情報の一例を示す図。
【図１０】本実施形態に係る分散型データベースシステムの管理情報記憶部に記憶された管理情報の一例を示す図。
【図１１】本実施形態に係る分散型データベースシステムのデータ記憶部に記憶されたデータレコードの一例を示す図。
【図１２】本実施形態に係る分散型データベースシステムの管理情報記憶部に記憶された管理情報の一例を示す図。
【図１３】本実施形態に係る分散型データベースシステムのデータ取得処理の一例を示すシーケンス図。
【図１４】本実施形態に係る分散型データベースシステムのデータ更新促進処理の一例を示すシーケンス図。
【図１５】本実施形態に係る分散型データベースシステムのデータ更新促進処理の処理動作の詳細を示す模式図。
【発明を実施するための形態】
【００１２】
以下、実施形態の分散型データベースシステムについて図面を参照して説明する。
【００１３】
図１は、本実施形態における、管理情報を管理するデータベース機能を別に持たせた分散型データベースシステム１の構成の一例を示す図である。
【００１４】
図１に示すように、本実施形態の分散型データベースシステム１は、値やデータであるバリューと当該バリューを識別するためのキー（ＩＤ）の組み合わせであるキー・バリュー要素を複数個単純に集めたデータベースである分散型データベース１００および分散型データベース１００に格納されたデータを管理するデータ管理装置２００で構成されている。以下、キーとバリューのセットをデータレコードという。
【００１５】
分散型データベースシステム１は、当該分散型データベースシステム１に接続されたクライアント端末３００や他のシステムからの要求を受信する。なお、本実施形態の分散型データベースシステム１は、インターネットなどのネットワークを介して分散型データベース１００、データ管理装置２００及びクライアント端末３００が接続されてもよい。また、同実施形態では、分散型データベース１００、データ管理装置２００、又はクライアント端末３００はそれぞれ１つとしたが、これに限定されない。例えば、複数のデータ管理装置２００又は複数のクライアント端末３００を含む分散型データベースシステムの構築は可能である。
【００１６】
分散型データベース１００は、データストレージノード１０（１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、１０Ｅ、１０Ｆ、１０Ｇ）を備え、データレコードと、当該データレコードの複製とこれらデータストレージノード１０に分散して記憶するデータベースである。なお、データストレージノード（以下、ノードと記載する）１０は１０Ａ〜１０Ｇ以外にも複数存在できるものとする。分散型データベース１００を構成するノード１０Ａ〜１０Ｇは他のノード１０のうちのいずれか１つと接続され、分散型データベースシステム１を構成するすべてのノード１０と通信が行える。
【００１７】
データ管理装置２００は、分散型データベースシステム１に記憶されるデータレコードの管理を行なう情報処理装置である。データ管理装置２００は一般的なデータベースで構成され、分散型以外の方法で構成されてもよい。
【００１８】
クライアント端末３００は、例えばＰＣ（パーソナルコンピュータ）であり、分散型データベースシステム１への要求を入力する。
【００１９】
図２は、分散型データベースシステム１の機能構成の一例を示す図である。
【００２０】
図２に示すように、分散型データベース１００は、ノード１０毎に、要求受信部１０１と、データ更新部１０２と、及びデータ送信部１０３と、データ更新促進部１０４と、データ記憶部１０５とを備える。図２には、代表としてひとつのノード１０に関する機能構成を示している。
【００２１】
要求受信部１０１は、クライアント端末３００からもしくは他のノード１０から要求を受信する。データ更新部１０２は、自ノード１０内データ記憶部１０５に記憶されたデータの更新処理を行う。図３にノード１０Ａのデータ記憶部１０５（以下、データ記憶部１０５Ａと記載する）に記憶されたデータレコードの一例を示す。
【００２２】
図３に示すように、データ記憶部１０５Ａに記憶されたデータレコードは、「ｋｅｙ（以下、キーと記載する）」１０６と、「ｖａｌｕｅ（以下、バリューと記載する）」１０７とを含む。キー１０６は、バリュー１０７の識別子（ＩＤ）である。
【００２３】
図３に示すように、キー１０６には、「ｋｅｙＡ」と「ｋｅｙＢ」が格納されている。以下、ｋｅｙＡを含むデータレコードをデータレコードＡといい、ｋｅｙＢを含むデータレコードをデータレコードＢという。
【００２４】
また、バリュー１０７には、データが記憶された時刻を示すタイムスタンプと実際のデータが共に格納されている。例えばバリュー１０７の一番上の欄には「５：ｖａｌＡＡ」と格納されており、これは、格納されたデータが「ｖａｌＡＡ」であり、データを格納した時刻を示すタイムスタンプが「５」であるという意味である。  なお、本実施形態ではタイムスタンプは数値が大きいほど遅い時刻に更新されたことを示している。すなわち、本実施形態ではタイムスタンプはデータレコードごとに格納された順番を示し、タイムスタンプが最も大きい数値であるデータレコードが最新のデータレコードである。
【００２５】
データ送信部１０３は、クライアント端末から３００もしくは他ノード１０からの要求に基づいて自ノード１０内のデータ記憶部１０５に記憶されたデータを要求元に送信する。
【００２６】
データ更新促進部１０４は、クライアント端末３００からもしくは他ノード１０からの要求に応じて該当するデータの更新を促進する。
【００２７】
データ管理装置２００は、要求受信部２０１と、管理情報更新部２０２と、管理情報送信部２０３と、管理情報記憶部２０４とを備え、分散型データベース１００に記憶されたデータレコードの管理を行なう情報処理装置である。
【００２８】
要求受信部２０１は、クライアント端末３００から要求を受信する。管理情報更新部２０２は、要求受信部２０１が受信した要求に基づいて、管理情報記憶部２０４に記憶された管理情報を更新する。
【００２９】
管理情報送信部２０３は、要求受信部２０１が受信した要求に基づいて管理情報記憶部２０４に記憶された管理情報を送信する。図４に管理情報記憶部２０４に記憶された管理情報２０５の一例を示す。
【００３０】
図４に示すように、管理情報２０５は、「Ｋｅｙ（以下、キーと記載する）」２０６、「ｓｔａｔｕｓ（以下、ステータスと記載する）」２０７、「ｔｉｍｅｓｔａｍｐ（以下、タイムスタンプと記載する）」２０８の３つの項目を含む。
【００３１】
キー２０５は、各ノード１０に格納されたデータレコードの識別子であり、データ記憶部１０５に格納されたキー１０５と同一である。
【００３２】
ステータス２０６は、データ記憶部１０５に記憶された、データの更新状況を示す。本実施形態ではステータス２０６は「ｌｏｃｋｅｄ（ロック中、更新中）」と「ｃｏｍｍｉｔｔｅｄ（処理完了）」の２種類である。
【００３３】
タイムスタンプ２０７は、データ記憶部１０５にデータレコードが記憶された時刻が格納される。タイムスタンプ２０７は、後述するデータ更新処理においデータレコードが更新された場合、更新時刻が格納される。
【００３４】
分散型データシステム１０は、キー１０５、キー２０５に格納された識別子や、バリュー１０７、タイムスタンプ２０７に格納されたタイムスタンプによってデータと管理情報の両方を検索して取得することができる。  
以下、図５乃至図１５を参照して、本実施形態の分散型データベースシステム１の動作の一例について説明する。分散型データベースシステム１が行なう主な動作は、データ更新処理、データ取得処理、及びデータ更新促進処理である。
【００３５】
まず、図５及び図１２を参照して、本実施形態におけるデータ更新処理について説明する。図５及び図６は、本実施形態の分散型データベースシステム１に係るデータ更新処理の一例を示すシーケンス図である。ここでは、分散型データベースシステム１において、クライアント端末３００から更新対象のデータレコードとして、キー「ｋｅｙＡ」とバリュー「６：ｖａｌＡＡＡ」とが入力された場合について、具体的に説明する。
【００３６】
また、ここでは、ノード１０Ｂにおけるデータ記憶部１０５Ｂが記憶する１つのデータレコード（データレコードＡ）のみ更新するとする。
【００３７】
クライアント端末３００は、まずデータ管理装置２００に対して、更新対象のデータレコードＡを示すキー「ｋｅｙＡ」と、当該データレコードＡに含まれるデータ「ｖａｌＡＡＡ」を含む管理情報更新要求を送信する（ステップＳ１）。データ管理装置２００の要求受信部２０１は、管理情報更新要求を受信すると管理情報更新部２０２に通知する（ステップＳ２）。管理情報更新部２０２は、管理情報更新要求に基づいて管理情報記憶部２０４に記憶された管理情報を更新する第１の管理情報更新処理を行う（ステップＳ３）。
【００３８】
具体的には、管理情報更新部２０２は、図７に示すように、受信した管理情報更新要求に含まれるキー「ｋｅｙＡ」をキー２０５に、当該管理情報更新要求を受信した時刻を示す「６」をタイムスタンプ２０７に、更新対象のデータレコードの状況を示す「ｌｏｃｋｅｄ」をスタータス２０６に、それぞれ対応付けて格納する。なお、タイムスタンプについては、クライアント端末３００から入力されるのではなく、例えば管理情報記憶部２０４に記憶されたデータレコードＡに関するタイムスタンプの最大値が「５」であるため、ここではその次の数値の「６」を格納するというような処理をすることも可能である。
【００３９】
すなわちステップＳ３では図７のドットで示す行が追加される。つまり、本実施形態では更新処理とは既に記憶された情報を上書きするのではなく、新たな管理情報を追加する処理を指す。
【００４０】
管理情報更新部２０２は、第１の管理情報更新処理が完了すると、第１の管理情報更新完了通知をクライアント端末３００に送信する（ステップＳ４）。クライアント端末３００は、第１の管理情報更新完了通知を受信すると、更新対象のデータレコードを示すキー「ｋｅｙＡ」と、バリュー「６：ｖａｌＡＡＡ」を含むデータ更新要求を分散型データベース１００に送信する（ステップＳ５）。
【００４１】
分散型データベース１００が備える複数のノード１０のうちの１つのノード１０における要求受信部１０１がデータ更新要求を受信すると（ステップＳ６）、データ更新部１０２は更新対象のデータレコードを示すキー「ｋｅｙＡ」と、更新するデータ「ｖａｌＡＡＡ」に基づいて、データ記憶部１０５に記憶されたデータを更新するデータ更新処理を行う（ステップＳ７）。なお、ここではノード１０Ｂがデータ更新要求を受信する。
【００４２】
具体的には、図８に示すようにデータレコードＡとして、キー１０６に「ｋｅｙＡ」、バリュー１０７に「６：ｖａｌＡＡＡ」を関連付けて追加する。このとき、分散型データベース１００の他のノード１０内のデータレコードＡの値は、同時には更新されない。
【００４３】
データ更新部１０２は、データレコードの更新が完了すると、データ更新完了通知をクライアント端末３００に送信する（ステップＳ８）。
【００４４】
クライアント端末３００はデータ更新完了通知を受信すると、管理情報更新要求をデータ管理装置２００に送信する（ステップＳ９）。データ管理装置２００の要求受信部２０１が管理情報更新要求を受信すると（ステップＳ１０）、管理情報更新部２０２が管理情報記憶部２０４に記憶された、更新対象のデータレコードに関する管理情報を更新する第２の管理情報更新処理を行う（ステップＳ１１）。具体的には、図９に示すように、管理情報記憶部２０４にステップＳ３で記憶された１行目の管理情報のステータス２０６に格納された更新状況を「ｃｏｍｍｉｔｔｅｄ」に更新する。
【００４５】
第２の管理情報更新処理が完了すると、管理情報更新部２０２はクライアント端末３００に第２の管理情報更新完了通知を送信する（ステップＳ１２）。これにより、本実施形態のデータ更新処理は終了する。
【００４６】
続いて、図１０乃至図１２を参照して、トランザクション処理のように２つ以上のデータレコード（データレコードＡ、データレコードＢ）について整合性を維持しながらデータ記憶部１０５Ｂを更新する場合のデータ更新処理について説明する。
【００４７】
この場合、ステップＳ３では、図１０に示すように、管理情報更新部２０２によって管理情報記憶部２０４に更新する予定の２つのデータレコードに関する管理情報が追加される。ここでは、データレコードＡに関しては、図１０の１行目に示すようにキー２０５に「ｋｅｙＡ」、タイムスタンプ２０６に「６」、ステータス２０５「ｌｏｃｋｅｄ」を追加される。
【００４８】
データレコードＢに関しては、管理情報更新部２０２によって図１０の４行目に示すようにキー２０５に「ｋｅｙＢ」、タイムスタンプ２０６に「７」、ステータス２０５「ｌｏｃｋｅｄ」を追加される。
【００４９】
また、ステップＳ７では、図１１に示すように、データレコードＡについてはデータ記憶部１０５Ｂに、キー１０６に「ｋｅｙＡ」を、バリュー１０７にタイムスタンプ６と共にデータ「ｖａｌＡＡＡ」を追加する（図１１の１行目）。データレコードＢについてはデータ記憶部１０５Ｂに、キー１０６に「ｋｅｙＢ」を、バリュー１０７にタイムスタンプ７と共にデータ「ｖａｌＢＢ＋α」を追加する（図１１の４行目）。このとき１つのデータレコードを更新するときと同様に、分散型データベース１００の他のノード１０内のデータレコードＡ及びデータレコードＢの値は、同時には更新されない。
【００５０】
ステップＳ１１では、図１２に示すように、管理情報記憶部２０４のステップＳ３で更新されたデータレコードＡおよびデータレコードＢの管理情報に含まれるステータス２０６に格納された「ｌｏｃｋｅｄ」を「ｃｏｍｍｉｔｔｅｄ」に変更する。
【００５１】
続いて、図１３乃至図１５を参照して本実施形態の分散型データベースシステム１において、分散型データベース１００が記憶するデータレコードをクライアント端末３００から取得するデータ取得処理について説明する。
【００５２】
図１３は、本実施形態のデータ取得処理の一例を示すシーケンス図である。以下、図１３を参照して、ノード１０Ａのデータ記憶部１０５Ａに図４に示したデータレコードが記憶され、ノード１０Ｂに図８に示したデータレコードが記憶されて、データ管理装置２００の管理情報記憶部２０４に図７に示す管理情報が記憶されている場合を例に、データレコードＡを取得する際のデータ取得処理について説明する。
【００５３】
まず、クライアント端末３００は、データ管理装置２００に対して、取得対象のデータレコードに関する管理情報要求を送信する（ステップＳ２１）。データ管理装置２００の要求受信部２０１が管理情報要求を受信すると（ステップＳ２２）、管理情報送信部２０２が図７に示す管理情報記憶部２０４から取得対象のデータレコードに関する管理情報を取得する（ステップＳ２３）。
【００５４】
管理情報送信部２０２は取得した管理情報をクライアント端末３００に送信する（ステップＳ２４）。このとき、管理情報送信部２０２は、取得した管理情報のうちタイムスタンプ２０７に格納された数値が最も大きい管理情報、すなわち最新のデータに関する管理情報を送信するようにしてもよい。
【００５５】
クライアント端末３００は管理情報を受信すると、分散型データベース１００へデータ送信要求を行なう（ステップＳ２５）。
【００５６】
なお、ステップＳ２５ではユーザが、クライアント端末３００が受信した管理情報を確認して取得対象のデータレコードに関する最新のタイムスタンプに対応付けられているステータスが「ｌｏｃｋｅｄ」である場合と、「ｃｏｍｍｉｔｔｅｄ」である場合で、データ送信要求を行なうか否かの判断を行うことができる。具体的には、取得対象のデータレコードに関する最新のタイムスタンプに対応付けられているステータスが「ｌｏｃｋｅｄ」である場合はデータ取得処理を終了し、所定の時間が経過後にデータ取得処理が再開されるとしてもよい。ここでは、最新のタイムスタンプに対応付けられているステータスが「ｃｏｍｍｉｔｔｅｄ」であり、データ取得処理が続行される。
【００５７】
分散型データベース１００が備えるノード１０Ａ〜Ｇのうちの１つのノード１０における要求受信部１０１がデータ送信要求を受信すると（ステップＳ２６）、データ送信部１０２がデータ記憶部１０５から取得対象のデータレコードのうちもっとも最新のタイムスタンプを含むデータレコードを取得する（ステップＳ２７）。
【００５８】
本実施形態ではノード１０Ａがデータ送信要求を受信したとする。すなわち、ステップＳ２７では、データ記憶部１０５Ａに記憶されたデータレコードにおける最新のタイムスタンプ「５」を含むデータレコードが取得される。なお、ノードＡに取得対象のデータレコードＡが記憶されていない場合はデータ送信部１０２によって当該要求の転送処理が行われ、同様の処理が行われる。
【００５９】
なお、この転送処理は、取得対象のデータレコードＡがどのノード１０にあるのかを示すデータレコードＡの位置情報をどこが記憶するかによって異なる方法で行なわれる。例えば、第１の転送方法では、クライアント端末３００が送信するデータ送信要求にデータレコードＡの位置情報が含まれている場合に、ノード１０Ａのデータ送信部１０２が当該データ送信要求に含まれるデータレコードＡの位置情報に基づいてデータレコードＡの保存先ノード１０を判定し、この保存先ノード１０に当該データ送信要求を転送する。
【００６０】
また、第２の転送方法では、データレコードＡの位置情報をノード１０Ａが記憶する場合に、ノード１０Ａのデータ送信部１０２が受信した当該データ送信要求を自身が記憶するデータレコードＡのＫｅｙ値に基づいて転送する。
【００６１】
そして、第３の転送方法では、クライアント端末３００から送信されるデータ送信要求にもノード１０Ａも、データレコードＡの保存先ノード１０を示す位置情報が記憶されていない場合に、ノード１０Ａのデータ送信部１０２が適当な近くのノード１０に当該データ送信要求を転送する。
【００６２】
ここで、転送されたデータ送信要求を受信したノード１０は自身がデータレコードＡの位置情報を記憶する場合は、ノード１０のデータ送信部１０２は第２の転送方法を実行する。一方、ノード１０がデータレコードＡの位置情報を記憶していない場合は、ノード１０のデータ送信部１０２は第３の転送方法を実行する。
【００６３】
データ送信部１０２は取得したデータレコードをクライアント端末３００に送信する（ステップＳ２８）。
【００６４】
クライアント端末３００はステップＳ２８でデータ送信部１０２から送信されたデータレコードに含まれるタイムスタンプと、ステップＳ２４で送信された管理情報に含まれる最新のタイムスタンプとを比較する管理情報確認処理を行う（ステップＳ２９）。ここでは、ステップＳ２４で送信された管理情報に含まれる最新のタイムスタンプは「６」である。
【００６５】
比較の結果、ステップＳ２４で送信された管理情報に含まれる最新のタイムスタンプが、ステップＳ２８で送信されたタイムスタンプよりも大きい場合、すなわち、ステップＳ２８で送信されたデータが古いデータである場合、クライアント端末３００は分散型データベース１００に対して、データ更新促進要求を行なう（ステップＳ３０）。なお、このとき、取得対象のデータレコードを示すキーと、ステップＳ２４で送信された最新のタイムスタンプとがデータ更新促進要求に含まれる。
【００６６】
本実施形態では、ノードＡのデータ記憶部１０５Ａに記憶されたデータレコードに含まれる最新のタイムスタンプは「５」であり、ステップＳ２４で送信された管理情報に含まれる最新のタイムスタンプが「６」であるため、ステップＳ３０においてデータ更新促進要求が実行される。
【００６７】
データ更新促進要求を受信すると、分散型データベース１００はデータ更新促進処理を行う（ステップＳ３１）。
【００６８】
図１４及び図１５を参照して、図１３のステップＳ３１におけるデータ更新促進処理について説明する。図１４は、本実施形態の分散型データベース１００に係るデータ更新促進処理の一例を示すシーケンス図であり、図１５は、本実施形態の分散型データベース１００に係るデータ更新促進処理の処理動作の詳細を示す模式図である。
【００６９】
まず、分散型データベース１００のノード１０Ａにおける要求受信部１０１Ａがデータ更新促進要求を受信する。（ステップＳ３１１）。
【００７０】
要求受信部１０１Ａがデータ更新促進要求を受信すると、データ更新促進部１０４Ａは、データ更新部１０２Ａにデータ更新要求を送信する（ステップＳ３１２）。データ更新部１０２Ａはデータ更新要求を受信すると、取得対象のデータレコードを記憶する他のノード１０に、取得対象のデータレコードを示すキーとステップＳ２４で送信された最新のタイムスタンプとを含む最新データ取得要求を送信する（ステップＳ３１３）。ここでは、ノード１０Ｂに最新データ取得要求を送信したとする。
【００７１】
ノード１０Ｂの要求受信部１０１Ｂが最新データ取得要求を受信すると（ステップＳ３１４）、データ送信部１０３Ｂは、取得対象のデータレコードを示すキーと、最新のタイムスタンプを含むデータとを含むデータレコード（以下、最新のデータレコードという）を、データ記憶部１０５Ｂから取得する（ステップＳ３１５）。なお、ステップＳ３１５において、ノード１０Ｂに最新のデータレコードが記憶されていない場合は他のノードに最新データ取得要求が転送される。ここでは、ノード１０Ｂに最新のデータレコードが記憶されているとする。
【００７２】
データ送信部１０３ＢはステップＳ３１５で取得した最新のデータレコードを、データ更新促進要求を行なったノード１０Ａに送信する（ステップＳ３１６）。
【００７３】
要求受信部１０１Ａは、データレコードを受信するとデータ更新部１０２Ａにデータ更新要求を行なう（ステップＳ３１７）。データ更新部１０２Ａは、受信した最新のデータレコードをデータ記憶部１０５Ａに追加し、データの更新を行なう（ステップＳ３１８）。これにより、本実施形態のデータ更新促進処理は終了する。
【００７４】
ここで、図１３の説明に戻る。ステップＳ３１のデータ更新促進処理が終了すると、分散型データベース１００は、更新されたデータをクライアント端末３００に送信し（ステップＳ３２）、データ取得処理を終了する。
【００７５】
なお、ステップＳ２９における比較の結果、ステップＳ２４で送信された最新のタイムスタンプと、ステップＳ２８送信されたタイムスタンプが等しい場合は、ステップＳ３０以降の処理は行わない。また、本実施形態のデータ取得処理は、クライアント端末３００がデータ更新促進要求を行なったあとに終了とし、データ更新促進処理後にクライアント端末が再度でデータ取得処理を行い、取得対象のデータレコードを要求してもよい。
【００７６】
以上のように、本実施形態の分散型データベースシステム１によると、複数のストレージノードにデータを格納し、管理する分散型データベースにおいて、データレコードの更新状況やデータレコードのタイムスタンプなどの管理情報を、他のデータベース上で管理することができる。これにより、データレコードが更新中の場合であっても、同データレコードの管理情報を取得することができる。
【００７７】
また、本実施形態の分散型データベースシステム１は、データ取得要求の際に管理情報を利用して、取得したデータが最新かどうかを確認し、最新でない場合は取得したデータを記憶するノードのデータ更新を要求する。これにより、アクセス頻度が高いデータレコードについては、データ更新タイミングが早くなるため、アクセス頻度が高いデータほど最新のデータを取得しやすい分散型データベースシステムを提供することが可能である。
【００７８】
また、本実施形態の分散型データベースシステム１によると、クライアント端末からのデータ要求対象のデータレコードが更新中である場合には、データ要求の実行を遅らせ、データレコードの更新が完了してからデータを送信することにより、最新のデータを取得しやすい、すなわちデータの整合性の高い分散型データベースシステムを提供することが可能である。
【００７９】
なお、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００８０】
例えば、データ取得処理における管理情報確認処理（ステップＳ２９）は、データの送信先のクライアント端末３００で実行されるのではなく、データ取得後（ステップＳ２７の後）にデータ送信部１０２がそのまま実行してもよい。その後、データ送信部１０２は更新された最新のデータをクライアント端末３００に送信する。
【００８１】
また、管理情報確認処理（ステップＳ２９）は、データ管理装置２００が実行しても良い。この場合、ステップＳ２８でのデータ送信先はクライアント端末３００ではなくデータ管理装置２００である。このときデータ管理装置２００は、管理情報確認処理を行う管理情報確認部を備えてもよい。
【符号の説明】
【００８２】
１…分散型データベースシステム、１０…ノード、１００…分散型データベース、１０１データ要求受信部、１０２…データ更新部、１０３…データ送信部、１０４…データ更新促進部、１０５…データ記憶部、２００データ管理装置、２０１…管理情報要求受信部、２０２…管理情報更新部、２０３…管理情報送信部、２０４…管理情報記憶部、３００…クライアント端末
【図１】
0005449462.tif 000002
【図２】
0005449462.tif 000003
【図３】
0005449462.tif 000004
【図４】
0005449462.tif 000005
【図５】
0005449462.tif 000006
【図６】
0005449462.tif 000007
【図７】
0005449462.tif 000008
【図８】
0005449462.tif 000009
【図９】
0005449462.tif 000010
【図１０】
0005449462.tif 000011
【図１１】
0005449462.tif 000012
【図１２】
0005449462.tif 000013
【図１３】
0005449462.tif 000014
【図１４】
0005449462.tif 000015
【図１５】
0005449462.tif 000016