(57)【要約】【課題】運用制約が小さく、更新性能がよく、可用性の高い分散データベースシステムを得る。【解決手段】データの更新権を持つデータベース（ＤＢ）１を根とし、根から葉へ方向を持つ有向木構造にＤＢ２〜７を結合した配信木を作成し、ＤＢ１の更新結果を他のＤＢに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのＤＢの内容を同一に保つ。またＤＢ１に対して、更新権を要求する第１のコマンドを配信し、ＤＢ１と更新権を要求するＤＢ３とを結ぶ経路上のＤＢ２が、第１のコマンドを受信した後で、受信した配信木の弧の向き（矢印方向）を逆にし、第１のコマンドを配信する手順を、更新権を要求したＤＢ３に達するまで繰り返すことで更新権を移譲する。加えて更新結果の差分を吸収する操作を、更新結果の差分がなくなるまで行う。【選択図】図１
2007304898.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベース上に同じデータを重複配置する分散データベースシステムであって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成手段と、
前記配信木のトポロジーを変更する配信木変更手段と、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信手段と、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲手段と、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期手段と
を具備することを特徴とする分散データベースシステム。
【請求項２】
前記更新権移譲手段は、
更新権を要求する第１のデータベースが、前記更新権を保有する第２のデータベースに、前記更新権を要求する第１のコマンドを発行し、
前記第２のデータベースが、前記更新権を破棄した後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第２のデータベースと前記第１のデータベースとを結ぶ配信木の経路上に存在する第３のデータベースが、前記第１のコマンドを受信し、前記第１のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第１のデータベースが、前記第１のコマンドを受信した後で、前記第１のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第１のデータベースが前記更新権を獲得したことを通知する第２のコマンドを、前記更新結果配信手段を使用して他のデータベースに配信する、
という操作を、前記第１のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする請求項１記載の分散データベースシステム。
【請求項３】
前記更新権移譲手段を使用して更新権を移譲する場合に、前記更新権を要求する第１のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする請求項２記載の分散データベースシステム。
【請求項４】
前記更新結果同期手段は、
前記受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする請求項１記載の分散データベースシステム。
【請求項５】
複数のデータベース上に同じデータを重複配置する分散データベース方法であって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成ステップと、
前記配信木のトポロジーを変更する配信木変更ステップと、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信ステップと、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲ステップと、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期ステップと、
を具備することを特徴とする分散データベース方法。
【請求項６】
前記更新権移譲ステップは、
更新権を要求する第１のデータベースが、前記更新権を保有する第２のデータベースに、前記更新権を要求する第１のコマンドを発行し、
前記第２のデータベースが、前記更新権を破棄した後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第２のデータベースと前記第１のデータベースとを結ぶ配信木の経路上に存在する第３のデータベースが、前記第１のコマンドを受信し、前記第１のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第１のデータベースが、前記第１のコマンドを受信した後で、前記第１のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第１のデータベースが前記更新権を獲得したことを通知する第２のコマンドを、前記更新結果配信ステップを使用して他のデータベースに配信する、
という操作を、前記第１のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする請求項５記載の分散データベース方法。
【請求項７】
前記更新権移譲ステップを使用して更新権を移譲する場合に、前記更新権を要求する第１のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする請求項６記載の分散データベース方法。
【請求項８】
前記更新結果同期ステップは、
受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする請求項５記載の分散データベース方法。
【請求項９】
請求項５乃至８のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたことを特徴とするプログラム。
【請求項１０】
請求項５乃至８のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたプログラムを、該コンピュータが読み取り可能な記録媒体に記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータベース上に同じデータを重複配置し、何れかのデータベースにおける更新結果を他のデータベースに反映することで、すべてのデータベースの内容を同一に保つ分散データベースシステムに関するものである。
【背景技術】
【０００２】
データベースの可用性向上や負荷分散を目的として、複数のデータベース上に同じデータを重複配置し、何れかのデータベースにおける更新結果を他のデータベースに反映することで、すべてのデータベースの内容を同一に保つための方式として、以下の２つの方式が利用されている。
【０００３】
（ａ）マルチキャスト方式  
データベースを木構造に結合し、根の位置にあるデータベース（マスタ）の更新内容を子孫の位置にあるデータベース（スレーブ）に反映する。
【０００４】
（ｂ）トークンリング方式  
データベースをリング構造に結合し、更新命令を載せたトークンを巡回させ、トークンを受け取ったデータベースはトークンに載せられた更新命令を実行する。
【０００５】
例えば、[非特許文献１]のＳｌｏｎｙ−Ｉは、上記マルチキャスト方式を採用しており、図１４に示すようにデータの更新権を持つマスタ（データベース１）に更新が発生すると、あらかじめ設定しておいたトリガが一定間隔で更新を検出し、スレーブへ転送する更新データをマスタのテーブルに記録し、一定間隔であらかじめ設定しておいたスレーブ（データベース２およびデータベース４）に更新データを転送し、その更新データを各スレーブで反映し、各スレーブは更新データの反映が完了したことをマスタに通知し、マスタはスレーブへの転送のために記録していた更新データをテーブルから削除するという手順によって、マスタからスレーブへ更新結果を反映する。また、図１４のデータベース２とデータベース３のようにスレーブ同士をカスケード接続して、マスタとスレーブ１との間で行った手順と同様の手順を、カスケード接続した２つのデータベース（データベース２とデータベース３）の間で行うことにより、スレーブ１からスレーブ２へ更新結果を反映する。このように、木構造の根から葉の方向に、木構造の親子関係にあるすべてのデータベースの内容を同一にすることを繰り返し行うことにより、すべてのデータベースの内容を同一に保つ。
【０００６】
また、[特許文献１]の分散データベースの同時実行制御システムは、上記トークンリング方式を採用しており、図１５に示すように、すべてのデータベースで論理的なリングを構成し、リングを構成するデータベース間で、データベース１→データベース２→データベース３→・・・→データベース６→データベース１の順にトークンを巡回させ、あるデータに対する更新の要求があると、巡回しているトークンに（ｉ）更新対象のデータを指定する情報と（ｉｉ）更新操作の内容と（ｉｉｉ）リングを構成する各データベースにおいて該当する更新操作が完了したかどうかを表す情報を格納し、各データベースは、トークンを受け取ったときに、（ｉｉｉ）で指定される情報に基づき、該当するデータの更新を行っていない場合は、（ｉ）で指定されるデータに対して、（ｉｉ）で指定される更新操作を実行し、（ｉｉｉ）の情報を更新し、トークンを次のデータベースに送信し、リングを構成するすべてのデータベースにおいて更新操作が完了した場合に、トークンから（ｉ）（ｉｉ）（ｉｉｉ）の情報を削除することにより、すべてのデータベースの内容を同一に保つ。
【非特許文献１】Ｓｌｏｎｙ−Ｉ  ＰｏｓｔｇｒｅＳＱＬ  レプリケーションシステム概念、Ｊａｎ  Ｗｉｅｃｋ、ＡｆｉｌｉａｓＵＳＡＩＮＫ、Ｖｅｒｓｉｏｎ１．０、Ｐ．３〜１７、[２００６年１月２５日検索]、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｐｏｓｔｇｒｅｓｑｌ．ｊｐ／ｗｇ／ｊｐｕｇｄｏｃ／ｓｌｏｎｙ／１．１．０／Ｓｌｏｎｙ−Ｉ−ｃｏｎｃｅｐｔＪ．ｐｄｆ＞
【特許文献１】特開２００３−５８４０４号公報（第２頁）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記マルチキャスト方式には、以下（１）〜（２）に示す問題点がある。
（１）データを更新できるデータベースがマスタに限定されるため、スレーブではデータを更新することができない。  
（２）更新結果を他のデータベースに転送しているデータベースの故障や脱退に伴ってトポロジーの変更が生じた場合に、最も多くの更新データを反映しているデータベースが木の根以外の位置に位置していると、木全体として最新の状態に同期を取るのが困難である。  
【０００８】
また、上記トークンリング方式には、以下（３）に示す問題点がある。  
（３）複数のデータベースで同時に更新操作ができない。また、１つの更新操作が完了するまで次の更新操作を始めることができない。
【０００９】
本発明の目的は、複数のデータベース上に同じデータを重複配置する分散データベースシステムにおいて、（１）任意のデータベースでデータを更新することができ、（２）複数のデータベースで同時に更新結果を反映することができ、また、１つの更新操作の完了を待たずに次の更新操作を開始することができ、（３）木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることにより、運用制約が小さく、更新性能がよく、可用性の高い分散データベースシステムを実現することにある。
【課題を解決するための手段】
【００１０】
前記の課題を解決した本発明は、以下のシステム、方法、プログラムおよび記録媒体を特徴とする。
【００１１】
（システムの発明）  
（１）複数のデータベース上に同じデータを重複して配置し、更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成する配信木作成手段と、配信木のトポロジーを変更する配信木変更手段と、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向に従ってバケツリレー方式で配信する更新結果配信手段と、配信木を構成する何れかのデータベースに更新権を移譲する更新権移譲手段と、配信木のトポロジーが変更された場合に親子関係にあるデータベースにおける受信済みの更新結果の差分を吸収する更新結果同期手段とを有することを特徴とする。
【００１２】
（２）上記（１）記載の発明において、前記更新権移譲手段は、
更新権を要求する第１のデータベースが、前記更新権を保有する第２のデータベースに、前記更新権を要求する第１のコマンドを発行し、
前記第２のデータベースが、前記更新権を破棄した後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第２のデータベースと前記第１のデータベースとを結ぶ配信木の経路上に存在する第３のデータベースが、前記第１のコマンドを受信し、前記第１のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第１のデータベースが、前記第１のコマンドを受信した後で、前記第１のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第１のデータベースが前記更新権を獲得したことを通知する第２のコマンドを、前記更新結果配信手段を使用して他のデータベースに配信する、
という操作を、前記第１のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
【００１３】
（３）上記（１）記載の発明において、前記更新権移譲手段を使用して更新権を移譲する場合に、前記更新権を要求する第１のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする。
【００１４】
（４）上記（１）記載の発明において、前記更新結果同期手段は、
前記受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
【００１５】
（方法の発明）  
（５）複数のデータベース上に同じデータを重複配置する分散データベース方法であって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成ステップと、
前記配信木のトポロジーを変更する配信木変更ステップと、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信ステップと、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲ステップと、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期ステップと、
を具備することを特徴とする。
【００１６】
（６）上記（５）記載の発明において、前記更新権移譲ステップは、
更新権を要求する第１のデータベースが、前記更新権を保有する第２のデータベースに、前記更新権を要求する第１のコマンドを発行し、
前記第２のデータベースが、前記更新権を破棄した後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第２のデータベースと前記第１のデータベースとを結ぶ配信木の経路上に存在する第３のデータベースが、前記第１のコマンドを受信し、前記第１のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第１のコマンドを配信し、
前記第１のデータベースが、前記第１のコマンドを受信した後で、前記第１のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第１のデータベースが前記更新権を獲得したことを通知する第２のコマンドを、前記更新結果配信ステップを使用して他のデータベースに配信する、
という操作を、前記第１のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
【００１７】
（７）上記（５）記載の発明において、前記更新権移譲ステップを使用して更新権を移譲する場合に、前記更新権を要求する第１のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする。
【００１８】
（８）上記（５）記載の発明において、前記更新結果同期ステップは、
受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
【００１９】
（プログラムの発明）  
上記（５）乃至（８）のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたことを特徴とする。
【００２０】
（記録媒体の発明）  
上記（５）乃至（８）のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたプログラムを、該コンピュータが読み取り可能な記録媒体に記録したことを特徴とする。
【００２１】
（作用）  
データの更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成し、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのデータベースの内容を同一に保つことができる。
【００２２】
また、更新権を保有するデータベースに対して、更新権を要求する第１のコマンドを発行し、データの更新結果の配信と同様に、第１のコマンドを配信し、更新権を保有するデータベースと更新権を要求するデータベースとを結ぶ配信木の経路上のデータベースが、第１のコマンドを受信した後で、受信した配信木の弧の向きを逆にし、データの更新結果の配信と同様に第１のコマンドを配信する手順を、更新権を要求したデータベースに達するまで繰り返すことで更新権を移譲する。
【００２３】
加えて、受信済みの更新結果に差分があれば、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことで、（１）任意のデータベースでデータを更新することができ、（２）複数のデータベースで同時に更新操作を開始することができ、また、１つの更新操作の完了を待たずに次の更新操作を開始することができ、（３）木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができることにより、すべてのデータベースの内容を同一に保つことができる。
【発明の効果】
【００２４】
（１）任意のデータベースでデータを更新することができる。  
（２）複数のデータベースで同時に更新操作を開始することができ、また、１つの更新操作の完了を待たずに次の更新操作を開始することができる。  
（３）木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができる。  
（４）すべてのデータベースの内容を同一に保つことができる分散データベースシステムを実現することが可能である。
【発明を実施するための最良の形態】
【００２５】
本発明の実施の形態について図面を参照して説明する。
【００２６】
（実施の形態１）  
図１は、実施の形態１に係る分散データベースシステムの構成例を示す。この分散データベースシステムＤＤＢＳは、図２の構成を持つ複数のデータベース１〜７上に同じデータを重複配置し、図１のように、データの更新権を持つデータベース１を根とし、根から葉へ方向を持つ有向木構造状にデータベース２〜７を結合したものである。根を除く各データベース２〜７は、根となるデータベース１が保有しているデータの一部またはすべての複製を保有している。
【００２７】
図２について、各データベース１０（１〜７）は、データを格納する物理的なデータベース（データ格納部）１１と、配信木のトポロジー情報を受信して、自身のデータベース１０が所属する配信木を配信木のトポロジー情報１７として作成する配信木作成手段１２と、変更された配信木のトポロジー情報を受信して、自身のデータベースが所属する配信木のトポロジー情報１７を変更する配信木変更手段１３と、受信したデータの変更結果の更新順序を保持したまま、自身のデータベースが所属する配信木に従って、他のデータベースに配信する更新結果配信手段１４と、更新権を要求する第１のコマンドを発行し、更新権を獲得したら更新権を獲得したことを通知する第２のコマンドを発行し、他のデータベースから更新権を要求する第１のコマンドを受信した場合は、更新権を破棄した後で更新結果配信手段１４を使用して受信した第１のコマンドを配信し、配信木の弧の向きを逆にする更新権移譲手段１５と、自身のデータベースが所属する配信木において親子関係にある各データベースの受信済みの更新結果と自身のデータベースの受信済みの更新結果とを比較し、差分があれば更新結果の差分を配信する更新結果同期手段１６とより構成されている。
【００２８】
図３は、分散データベースシステムのデータベース間で更新結果とコマンドをやりとりするためのパケットの構成例を示す。このパケットはヘッダ情報とデータ本体とからなり、ヘッダ情報は、データの識別子、データ種別の識別子、配信木の識別子、送信元の識別子、配信先の識別子、更新結果配信時の時刻印、コマンドの種別の識別子で構成され、データ本体は、更新結果（ＳＱＬ文）またはコマンド及びコマンドの引数で構成されている。
【００２９】
図４は、分散データベースシステムのデータベースが保持する配信木のトポロジー情報の構成例を示す。各データベースが保有する配信木のトポロジー情報は、当該データベースが所属する配信木ごとに、配信木の識別子および当該配信木における各データベースから見た送信元の識別子および当該配信木における配信先の識別子を組にして保持している。
【００３０】
図５は、各データベースがデータの更新結果を受け取った際の動作をフローチャートで示したものである。
【００３１】
図１の分散データベースシステムがデータの更新結果を受け取った際の動作について、図３〜図５を用いて説明する。
【００３２】
（１）図１の配信木１におけるデータの更新権を持った図１のデータベース１がデータを更新する。  
【００３３】
（２）データを更新したデータベース１は、図４の配信木のトポロジー情報を確認し、当該配信木における配信先が登録されていると判定し、図１の配信木１における根から葉の方向（図１のデータベース２およびデータベース５）に、図１のデータベース１で実行されたＳＱＬ文を更新結果として格納した図３のデータを、更新順序を保持したまま配信する（Ｓ４、Ｓ５）。
【００３４】
（３）更新結果を格納したデータを受け取ったデータベース２は、図５のフローに従って、図３のヘッダ情報に記載された配信木の識別子と送信元の識別子の組み合わせが、図４の配信木のトポロジー情報に登録されているかどうかを検査し（Ｓ２）、登録されていない場合は更新結果を破棄して処理を終了する（Ｓ６）。登録されている場合は、更新結果として受け取ったＳＱＬ文を受信した順序と同じ順序で実行してデータを更新し、図４の配信木のトポロジー情報に当該配信木における配信先が登録されている場合は、登録されている配信先に、受信した更新結果を格納した図３のデータを配信する（Ｓ３〜Ｓ５）。図１の構成例ではデータベース３およびデータベース４に配信する。図４の配信木のトポロジー情報に当該配信木における配信先が登録されていない場合は、当該データベースが配信木における葉であることを意味し、ステップＳ４の判定結果がＮＯとなり、処理を終了する。  
【００３５】
（４）上記（３）の手順を図１のデータベース３〜データベース７でも同様に行い、すべてのデータベース上のデータを同じに保つ。
【００３６】
図６〜図８は、図１のデータベース１が根である分散データベースシステムＤＤＢＳにおいて、データベース３がデータの更新権を要求し、データベース１がデータベース３にデータの更新権を移譲する動作を示したものである。図９は、各データベースが更新権を要求する第１のコマンドを受け取った際の動作をフローチャートで示したものである。
【００３７】
図１の分散データベースシステムがデータの更新権を要求する第１のコマンドを受け取った際の更新権を移譲手段の動作について、図６〜図９を用いて説明する。
【００３８】
（１）図６のデータベース３がデータの更新権を持つ図６のデータベース１に更新権を要求する第１のコマンドを発行する。  
【００３９】
（２）図６のデータベース１は、更新権を要求する第１のコマンドを受け取り、図９のフローに従って、自身が配信木の根であると判定し、更新権を破棄し、受け取った第１のコマンドまたは第１のコマンドおよびコマンドの引数を図３のパケットのデータ本体に格納し、図４の配信木のトポロジー情報の当該配信木に登録された配信先に配信する（Ｓ１２〜Ｓ１４）。図６ではデータベース２およびデータベース５に配信される。
【００４０】
（３）第１のコマンドを格納した図３のパケットを受け取った図６のデータベース２は、図９のフローに従って、自身が根と更新権要求元とを結ぶ経路上に存在するデータベースであると判定し、送信元であるデータベース１と自身を接続している配信木の弧の向きを逆にし、第１のコマンドを格納した図３のパケットを、図４の配信木のトポロジー情報の当該配信木において配信先が登録された宛先（データベース３およびデータベース４）に配信する（Ｓ１２、Ｓ１５〜Ｓ１８）。
【００４１】
（４）第１のコマンドを格納した図３のパケットを受け取った図６のデータベース５は、図９のフローに従って、により自身が配信木の根ではなく、更新権の要求元ではなく、根と更新権要求元とを結ぶ経路上に存在するデータベースでもないと判定し（Ｓ１２、Ｓ１５、Ｓ１６）、第１のコマンドを格納した図３のパケットを、図４の配信木のトポロジー情報の当該配信木において配信先が登録された宛先（データベース６およびデータベース７）には配信せず、処理を終了する。
【００４２】
（５）第１のコマンドを格納した図３のパケットを受け取った図７のデータベース３は、図９のフローに従って、自身が配信木の根ではないが、更新権の要求元であると判定し、送信元であるデータベース２と自身を接続している配信木の弧の向きを逆にし（図８）、更新権の移譲が完了した配信木の根から葉の方向に、更新権を獲得したことを通知する第２のコマンドを発行する（Ｓ１２、Ｓ１５、Ｓ１９、Ｓ２０）。  
【００４３】
（６）第１のコマンドを格納した図４のパケットを受け取った図７のデータベース４は、上記（４）と同様、処理を終了する。
【００４４】
（７）第２のコマンドを格納した図３のパケットを受信したデータベースは更新権の移譲が完了したことを確認し、受信した図３のパケットを、図４の配信木のトポロジー情報の当該配信木において配信先が登録された宛先に配信する。  
【００４５】
（８）なお、第１のコマンドの処理と、第１のコマンドの前に配信された更新結果の反映は同時並行して実施する。また、データベース３は、上記（５）の処理が終わると、第１のコマンドの前に配信された更新結果の反映が配信木の全てのデータベースで完了したことを確認することなく、即座に更新結果を配信する。
【００４６】
上記更新権移譲手段により更新権を移譲する場合に、更新権を要求する第１のコマンドの配信に失敗すれば、配信に失敗したデータベース２が更新権を獲得する。この場合の動作を図６、図７を用いて説明する。
【００４７】
図６は上述の通り、図１のデータベース１が根である分散データベースシステムにおいて、データベース３が、データの更新権を要求し、データベース１がデータベース３にデータの更新権を移譲する動作を示したものであり、図７はデータベース２が、データベース３に対して、第１のコマンドを格納した図３のパケットの配信に失敗した場合に、データベース３を当該配信木１から切り離し、配信失敗時点で更新権を持つデータベース２が当該配信木の新たな根となることを示している。
【００４８】
図１０〜図１２は、配信木のトポロジーが変更され、各データベースにおける受信済みの更新結果に差分が生じると、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収し、配信木を構成するすべてのデータベースにおける受信済みの更新結果の差分がなくなるまでのデータ同期処理の動作例を示している。
【００４９】
配信木に所属するデータベースが配信木から脱退したり、故障したデータベースを切り離した場合に、配信木の再構成が生じ、再構成後の各データベースにおける受信済みの更新結果に差分が生じる場合がある。例えば図１１では、データベース５では更新結果１、２および３を受信済みであるのに対し、その他のデータベースでは更新結果１および２しか受信していないことを示している。
【００５０】
更新結果同期手段の動作について、図１０〜図１２を用いて説明する。  
【００５１】
（１）図１０のデータベース２が、親であるデータベース１と子であるデータベース３およびデータベース４との間で、例えば、受信済みの図３のパケットのヘッダ情報のデータの識別子を比較することで、受信した更新結果の差分の有無を検査し、差分がない場合は、図１０の管理表の更新結果同期状況に「０（完了）」と記録する。差分がある場合は、更新結果の差分を持つデータベースから更新結果が足りないデータベースに受信順序を保ったまま更新結果を配信し、更新結果の差分を吸収した後で、管理表の更新結果同期状況に「０（完了）」と記録する。図１０の管理表の更新結果同期状況が「１（未完了）」のデータベースの中から次の検査対象となるデータベースを選択する。
【００５２】
（２）図１１では、データベース５を検査対象として選択した例を示す。データベース５が、親であるデータベース１と子であるデータベース６およびデータベース７との間で、前述の操作と同様の操作により、受信した更新結果の差分の有無を検査し、差分があると判定し、データベース５から親であるデータベース１と子であるデータベース６およびデータベース７に差分となる更新結果３を受信順序を保ったまま配信し、更新結果の差分を吸収した後で、管理表の更新結果同期状況に「０（完了）」と記録する。  
【００５３】
（３）ただし、上記２の同期処理に伴い、管理表の更新結果同期状況が「０（完了）」であったデータベース２は再び、「１（未完了）」となる。
【００５４】
（４）図１１の管理表の更新結果同期状況が「１（未完了）」のデータベースの中から次の検査対象となるデータベースを選択する。図１２では、データベース２を検査対象として選択した例を示す。データベース２が、親であるデータベース１と子であるデータベース３およびデータベース４との間で、前述の操作と同様の操作により、再び受信した更新結果の差分の有無を検査し、差分があると判定し、親であるデータベース１からデータベース２に差分となる更新結果３を受信順序を保ったまま配信し、続いてデータベース２から子であるデータベース３およびデータベース４に前記手順と同様に、差分となる更新結果３を配信し、管理表の更新結果同期状況がすべて「０（完了）」になるまで、上記手順を繰り返すことで、すべてのデータベースにおける受信済みの更新結果の差分がなくなる。
【００５５】
以上説明したように、本発明によれば、データの更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成し、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのデータベースの内容を同一に保つことができる。
【００５６】
また、更新権を保有するデータベースに対して、更新権を要求する第１のコマンドを発行し、データの更新結果の配信と同様に、第１のコマンドを配信し、更新権を保有するデータベースと更新権を要求するデータベースとを結ぶ配信木の経路上のデータベースが、第１のコマンドを受信した後で、受信した配信木の弧の向きを逆にし、データの更新結果の配信と同様に第１のコマンドを配信する手順を、更新権を要求したデータベースに達するまで繰り返すことで更新権を移譲する。加えて、受信済みの更新結果に差分があれば、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことで、（１）任意のデータベースでデータを更新することができ、（２）複数のデータベースで同時に更新操作を開始することができ、また、１つの更新操作の完了を待たずに次の更新操作を開始することができ、（３）木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができることにより、すべてのデータベースの内容を同一に保つことができる分散データベースシステムを実現することが可能である。
【００５７】
（実施形態２）  
図１３は本発明の実施形態２の分散データベースシステムの構成図であり、２種類の配信木（配信木１および配信木２）を構成する分散データベースシステムである。図１３では配信木１の根は、データベース１であり、配信木２の根はデータベース７である。この実施形態２は、上記実施形態１の手法を多重に実施することで可能な構成となっている。
【００５８】
なお、本発明は、図１，２、５，９及び図１０〜１２に示した方法の一部又は全部の処理機能をコンピュータで実行可能にしたプログラムとすることができる。また、コンピュータにその処理手順を実行させるためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、フレキシブルディスク、ＭＯ、ＲＯＭ、メモリカード、ＣＤ、ＤＶＤ、リムーバブルディスクなどに記録して、保存したり、提供したりすることが可能であり、また、インターネットのような通信ネットワークを介して配布したりすることが可能である。
【図面の簡単な説明】
【００５９】
【図１】分散データベースシステム例を示す構成図。
【図２】配信木を構成するデータベース例を示す構成図。
【図３】データベースの間でやりとりするためのパケット例を示す図。
【図４】データベースが保持する配信木のトポロジー情報例を示す図。
【図５】データベースがデータの更新結果を受け取った際のフロー図。
【図６】更新権を変更する前の分散データベースシステム例を示す構成図。
【図７】更新権を変更途中の分散データベースシステム例を示す構成図。
【図８】更新権の変更を完了した分散データベースシステム例を示す構成図。
【図９】データベースが更新権を要求する第１のコマンドを受け取った際のフロー図。
【図１０】配信木のトポロジーが変更された場合に配信木に所属するすべてのデータベース間でデータの同期処理を行い、更新結果の差分がなくなった例を示す説明図。
【図１１】配信木のトポロジーが変更された場合に配信木に所属するすべてのデータベース間でデータの同期処理を行い、更新結果の差分がなくなったこと、ただしデータベース１と２との間で新に更新結果の差分が発生したことの例を示す説明図。
【図１２】配信木のトポロジーが変更された場合に配信木に所属するすべてのデータベース間でデータの同期処理を行い、配信木全体において更新結果に差分がなくなったことを示す説明図。
【図１３】実施形態２に係る分散データベースシステム例を示す構成図。
【図１４】従来マルチキャスト方式に係るデータベースシステムの構成図。
【図１５】従来トークンリング方式に係るデータベースシステムの構成図。
【符号の説明】
【００６０】
ＤＤＢＳ…分散データベースシステム
１〜７、１０…データベース
１１…データベース（データ格納部）
１２…配信木作成手段
１３…配信木変更手段
１４…更新結果配信手段
１５…更新権移譲手段
１６…更新結果同期手段
１７…配信木のトポロジー情報
【図１】
2007304898.tif 000003
【図２】
2007304898.tif 000004
【図３】
2007304898.tif 000005
【図４】
2007304898.tif 000006
【図５】
2007304898.tif 000007
【図６】
2007304898.tif 000008
【図７】
2007304898.tif 000009
【図８】
2007304898.tif 000010
【図９】
2007304898.tif 000011
【図１０】
2007304898.tif 000012
【図１１】
2007304898.tif 000013
【図１２】
2007304898.tif 000014
【図１３】
2007304898.tif 000015
【図１４】
2007304898.tif 000016
【図１５】
2007304898.tif 000017