JP2007304898A - 分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 - Google Patents
分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2007304898A JP2007304898A JP2006133175A JP2006133175A JP2007304898A JP 2007304898 A JP2007304898 A JP 2007304898A JP 2006133175 A JP2006133175 A JP 2006133175A JP 2006133175 A JP2006133175 A JP 2006133175A JP 2007304898 A JP2007304898 A JP 2007304898A
- Authority
- JP
- Japan
- Prior art keywords
- update
- database
- distribution
- command
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】運用制約が小さく、更新性能がよく、可用性の高い分散データベースシステムを得る。
【解決手段】データの更新権を持つデータベース(DB)1を根とし、根から葉へ方向を持つ有向木構造にDB2〜7を結合した配信木を作成し、DB1の更新結果を他のDBに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのDBの内容を同一に保つ。またDB1に対して、更新権を要求する第1のコマンドを配信し、DB1と更新権を要求するDB3とを結ぶ経路上のDB2が、第1のコマンドを受信した後で、受信した配信木の弧の向き(矢印方向)を逆にし、第1のコマンドを配信する手順を、更新権を要求したDB3に達するまで繰り返すことで更新権を移譲する。加えて更新結果の差分を吸収する操作を、更新結果の差分がなくなるまで行う。
【選択図】図1
【解決手段】データの更新権を持つデータベース(DB)1を根とし、根から葉へ方向を持つ有向木構造にDB2〜7を結合した配信木を作成し、DB1の更新結果を他のDBに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのDBの内容を同一に保つ。またDB1に対して、更新権を要求する第1のコマンドを配信し、DB1と更新権を要求するDB3とを結ぶ経路上のDB2が、第1のコマンドを受信した後で、受信した配信木の弧の向き(矢印方向)を逆にし、第1のコマンドを配信する手順を、更新権を要求したDB3に達するまで繰り返すことで更新権を移譲する。加えて更新結果の差分を吸収する操作を、更新結果の差分がなくなるまで行う。
【選択図】図1
Description
本発明は、複数のデータベース上に同じデータを重複配置し、何れかのデータベースにおける更新結果を他のデータベースに反映することで、すべてのデータベースの内容を同一に保つ分散データベースシステムに関するものである。
データベースの可用性向上や負荷分散を目的として、複数のデータベース上に同じデータを重複配置し、何れかのデータベースにおける更新結果を他のデータベースに反映することで、すべてのデータベースの内容を同一に保つための方式として、以下の2つの方式が利用されている。
(a)マルチキャスト方式
データベースを木構造に結合し、根の位置にあるデータベース(マスタ)の更新内容を子孫の位置にあるデータベース(スレーブ)に反映する。
データベースを木構造に結合し、根の位置にあるデータベース(マスタ)の更新内容を子孫の位置にあるデータベース(スレーブ)に反映する。
(b)トークンリング方式
データベースをリング構造に結合し、更新命令を載せたトークンを巡回させ、トークンを受け取ったデータベースはトークンに載せられた更新命令を実行する。
データベースをリング構造に結合し、更新命令を載せたトークンを巡回させ、トークンを受け取ったデータベースはトークンに載せられた更新命令を実行する。
例えば、[非特許文献1]のSlony−Iは、上記マルチキャスト方式を採用しており、図14に示すようにデータの更新権を持つマスタ(データベース1)に更新が発生すると、あらかじめ設定しておいたトリガが一定間隔で更新を検出し、スレーブへ転送する更新データをマスタのテーブルに記録し、一定間隔であらかじめ設定しておいたスレーブ(データベース2およびデータベース4)に更新データを転送し、その更新データを各スレーブで反映し、各スレーブは更新データの反映が完了したことをマスタに通知し、マスタはスレーブへの転送のために記録していた更新データをテーブルから削除するという手順によって、マスタからスレーブへ更新結果を反映する。また、図14のデータベース2とデータベース3のようにスレーブ同士をカスケード接続して、マスタとスレーブ1との間で行った手順と同様の手順を、カスケード接続した2つのデータベース(データベース2とデータベース3)の間で行うことにより、スレーブ1からスレーブ2へ更新結果を反映する。このように、木構造の根から葉の方向に、木構造の親子関係にあるすべてのデータベースの内容を同一にすることを繰り返し行うことにより、すべてのデータベースの内容を同一に保つ。
また、[特許文献1]の分散データベースの同時実行制御システムは、上記トークンリング方式を採用しており、図15に示すように、すべてのデータベースで論理的なリングを構成し、リングを構成するデータベース間で、データベース1→データベース2→データベース3→・・・→データベース6→データベース1の順にトークンを巡回させ、あるデータに対する更新の要求があると、巡回しているトークンに(i)更新対象のデータを指定する情報と(ii)更新操作の内容と(iii)リングを構成する各データベースにおいて該当する更新操作が完了したかどうかを表す情報を格納し、各データベースは、トークンを受け取ったときに、(iii)で指定される情報に基づき、該当するデータの更新を行っていない場合は、(i)で指定されるデータに対して、(ii)で指定される更新操作を実行し、(iii)の情報を更新し、トークンを次のデータベースに送信し、リングを構成するすべてのデータベースにおいて更新操作が完了した場合に、トークンから(i)(ii)(iii)の情報を削除することにより、すべてのデータベースの内容を同一に保つ。
Slony−I PostgreSQL レプリケーションシステム概念、Jan Wieck、AfiliasUSAINK、Version1.0、P.3〜17、[2006年1月25日検索]、インターネット<URL:http://www.postgresql.jp/wg/jpugdoc/slony/1.1.0/Slony−I−conceptJ.pdf> 特開2003−58404号公報(第2頁)
Slony−I PostgreSQL レプリケーションシステム概念、Jan Wieck、AfiliasUSAINK、Version1.0、P.3〜17、[2006年1月25日検索]、インターネット<URL:http://www.postgresql.jp/wg/jpugdoc/slony/1.1.0/Slony−I−conceptJ.pdf>
しかし、上記マルチキャスト方式には、以下(1)〜(2)に示す問題点がある。
(1)データを更新できるデータベースがマスタに限定されるため、スレーブではデータを更新することができない。
(2)更新結果を他のデータベースに転送しているデータベースの故障や脱退に伴ってトポロジーの変更が生じた場合に、最も多くの更新データを反映しているデータベースが木の根以外の位置に位置していると、木全体として最新の状態に同期を取るのが困難である。
(1)データを更新できるデータベースがマスタに限定されるため、スレーブではデータを更新することができない。
(2)更新結果を他のデータベースに転送しているデータベースの故障や脱退に伴ってトポロジーの変更が生じた場合に、最も多くの更新データを反映しているデータベースが木の根以外の位置に位置していると、木全体として最新の状態に同期を取るのが困難である。
また、上記トークンリング方式には、以下(3)に示す問題点がある。
(3)複数のデータベースで同時に更新操作ができない。また、1つの更新操作が完了するまで次の更新操作を始めることができない。
(3)複数のデータベースで同時に更新操作ができない。また、1つの更新操作が完了するまで次の更新操作を始めることができない。
本発明の目的は、複数のデータベース上に同じデータを重複配置する分散データベースシステムにおいて、(1)任意のデータベースでデータを更新することができ、(2)複数のデータベースで同時に更新結果を反映することができ、また、1つの更新操作の完了を待たずに次の更新操作を開始することができ、(3)木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることにより、運用制約が小さく、更新性能がよく、可用性の高い分散データベースシステムを実現することにある。
前記の課題を解決した本発明は、以下のシステム、方法、プログラムおよび記録媒体を特徴とする。
(システムの発明)
(1)複数のデータベース上に同じデータを重複して配置し、更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成する配信木作成手段と、配信木のトポロジーを変更する配信木変更手段と、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向に従ってバケツリレー方式で配信する更新結果配信手段と、配信木を構成する何れかのデータベースに更新権を移譲する更新権移譲手段と、配信木のトポロジーが変更された場合に親子関係にあるデータベースにおける受信済みの更新結果の差分を吸収する更新結果同期手段とを有することを特徴とする。
(1)複数のデータベース上に同じデータを重複して配置し、更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成する配信木作成手段と、配信木のトポロジーを変更する配信木変更手段と、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向に従ってバケツリレー方式で配信する更新結果配信手段と、配信木を構成する何れかのデータベースに更新権を移譲する更新権移譲手段と、配信木のトポロジーが変更された場合に親子関係にあるデータベースにおける受信済みの更新結果の差分を吸収する更新結果同期手段とを有することを特徴とする。
(2)上記(1)記載の発明において、前記更新権移譲手段は、
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信手段を使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信手段を使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
(3)上記(1)記載の発明において、前記更新権移譲手段を使用して更新権を移譲する場合に、前記更新権を要求する第1のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする。
(4)上記(1)記載の発明において、前記更新結果同期手段は、
前記受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
前記受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
(方法の発明)
(5)複数のデータベース上に同じデータを重複配置する分散データベース方法であって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成ステップと、
前記配信木のトポロジーを変更する配信木変更ステップと、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信ステップと、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲ステップと、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期ステップと、
を具備することを特徴とする。
(5)複数のデータベース上に同じデータを重複配置する分散データベース方法であって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成ステップと、
前記配信木のトポロジーを変更する配信木変更ステップと、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信ステップと、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲ステップと、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期ステップと、
を具備することを特徴とする。
(6)上記(5)記載の発明において、前記更新権移譲ステップは、
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信ステップを使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信ステップを使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする。
(7)上記(5)記載の発明において、前記更新権移譲ステップを使用して更新権を移譲する場合に、前記更新権を要求する第1のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする。
(8)上記(5)記載の発明において、前記更新結果同期ステップは、
受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする。
(プログラムの発明)
上記(5)乃至(8)のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたことを特徴とする。
上記(5)乃至(8)のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたことを特徴とする。
(記録媒体の発明)
上記(5)乃至(8)のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたプログラムを、該コンピュータが読み取り可能な記録媒体に記録したことを特徴とする。
上記(5)乃至(8)のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたプログラムを、該コンピュータが読み取り可能な記録媒体に記録したことを特徴とする。
(作用)
データの更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成し、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのデータベースの内容を同一に保つことができる。
データの更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成し、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのデータベースの内容を同一に保つことができる。
また、更新権を保有するデータベースに対して、更新権を要求する第1のコマンドを発行し、データの更新結果の配信と同様に、第1のコマンドを配信し、更新権を保有するデータベースと更新権を要求するデータベースとを結ぶ配信木の経路上のデータベースが、第1のコマンドを受信した後で、受信した配信木の弧の向きを逆にし、データの更新結果の配信と同様に第1のコマンドを配信する手順を、更新権を要求したデータベースに達するまで繰り返すことで更新権を移譲する。
加えて、受信済みの更新結果に差分があれば、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことで、(1)任意のデータベースでデータを更新することができ、(2)複数のデータベースで同時に更新操作を開始することができ、また、1つの更新操作の完了を待たずに次の更新操作を開始することができ、(3)木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができることにより、すべてのデータベースの内容を同一に保つことができる。
(1)任意のデータベースでデータを更新することができる。
(2)複数のデータベースで同時に更新操作を開始することができ、また、1つの更新操作の完了を待たずに次の更新操作を開始することができる。
(3)木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができる。
(4)すべてのデータベースの内容を同一に保つことができる分散データベースシステムを実現することが可能である。
(2)複数のデータベースで同時に更新操作を開始することができ、また、1つの更新操作の完了を待たずに次の更新操作を開始することができる。
(3)木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができる。
(4)すべてのデータベースの内容を同一に保つことができる分散データベースシステムを実現することが可能である。
本発明の実施の形態について図面を参照して説明する。
(実施の形態1)
図1は、実施の形態1に係る分散データベースシステムの構成例を示す。この分散データベースシステムDDBSは、図2の構成を持つ複数のデータベース1〜7上に同じデータを重複配置し、図1のように、データの更新権を持つデータベース1を根とし、根から葉へ方向を持つ有向木構造状にデータベース2〜7を結合したものである。根を除く各データベース2〜7は、根となるデータベース1が保有しているデータの一部またはすべての複製を保有している。
図1は、実施の形態1に係る分散データベースシステムの構成例を示す。この分散データベースシステムDDBSは、図2の構成を持つ複数のデータベース1〜7上に同じデータを重複配置し、図1のように、データの更新権を持つデータベース1を根とし、根から葉へ方向を持つ有向木構造状にデータベース2〜7を結合したものである。根を除く各データベース2〜7は、根となるデータベース1が保有しているデータの一部またはすべての複製を保有している。
図2について、各データベース10(1〜7)は、データを格納する物理的なデータベース(データ格納部)11と、配信木のトポロジー情報を受信して、自身のデータベース10が所属する配信木を配信木のトポロジー情報17として作成する配信木作成手段12と、変更された配信木のトポロジー情報を受信して、自身のデータベースが所属する配信木のトポロジー情報17を変更する配信木変更手段13と、受信したデータの変更結果の更新順序を保持したまま、自身のデータベースが所属する配信木に従って、他のデータベースに配信する更新結果配信手段14と、更新権を要求する第1のコマンドを発行し、更新権を獲得したら更新権を獲得したことを通知する第2のコマンドを発行し、他のデータベースから更新権を要求する第1のコマンドを受信した場合は、更新権を破棄した後で更新結果配信手段14を使用して受信した第1のコマンドを配信し、配信木の弧の向きを逆にする更新権移譲手段15と、自身のデータベースが所属する配信木において親子関係にある各データベースの受信済みの更新結果と自身のデータベースの受信済みの更新結果とを比較し、差分があれば更新結果の差分を配信する更新結果同期手段16とより構成されている。
図3は、分散データベースシステムのデータベース間で更新結果とコマンドをやりとりするためのパケットの構成例を示す。このパケットはヘッダ情報とデータ本体とからなり、ヘッダ情報は、データの識別子、データ種別の識別子、配信木の識別子、送信元の識別子、配信先の識別子、更新結果配信時の時刻印、コマンドの種別の識別子で構成され、データ本体は、更新結果(SQL文)またはコマンド及びコマンドの引数で構成されている。
図4は、分散データベースシステムのデータベースが保持する配信木のトポロジー情報の構成例を示す。各データベースが保有する配信木のトポロジー情報は、当該データベースが所属する配信木ごとに、配信木の識別子および当該配信木における各データベースから見た送信元の識別子および当該配信木における配信先の識別子を組にして保持している。
図5は、各データベースがデータの更新結果を受け取った際の動作をフローチャートで示したものである。
図1の分散データベースシステムがデータの更新結果を受け取った際の動作について、図3〜図5を用いて説明する。
(1)図1の配信木1におけるデータの更新権を持った図1のデータベース1がデータを更新する。
(2)データを更新したデータベース1は、図4の配信木のトポロジー情報を確認し、当該配信木における配信先が登録されていると判定し、図1の配信木1における根から葉の方向(図1のデータベース2およびデータベース5)に、図1のデータベース1で実行されたSQL文を更新結果として格納した図3のデータを、更新順序を保持したまま配信する(S4、S5)。
(3)更新結果を格納したデータを受け取ったデータベース2は、図5のフローに従って、図3のヘッダ情報に記載された配信木の識別子と送信元の識別子の組み合わせが、図4の配信木のトポロジー情報に登録されているかどうかを検査し(S2)、登録されていない場合は更新結果を破棄して処理を終了する(S6)。登録されている場合は、更新結果として受け取ったSQL文を受信した順序と同じ順序で実行してデータを更新し、図4の配信木のトポロジー情報に当該配信木における配信先が登録されている場合は、登録されている配信先に、受信した更新結果を格納した図3のデータを配信する(S3〜S5)。図1の構成例ではデータベース3およびデータベース4に配信する。図4の配信木のトポロジー情報に当該配信木における配信先が登録されていない場合は、当該データベースが配信木における葉であることを意味し、ステップS4の判定結果がNOとなり、処理を終了する。
(4)上記(3)の手順を図1のデータベース3〜データベース7でも同様に行い、すべてのデータベース上のデータを同じに保つ。
図6〜図8は、図1のデータベース1が根である分散データベースシステムDDBSにおいて、データベース3がデータの更新権を要求し、データベース1がデータベース3にデータの更新権を移譲する動作を示したものである。図9は、各データベースが更新権を要求する第1のコマンドを受け取った際の動作をフローチャートで示したものである。
図1の分散データベースシステムがデータの更新権を要求する第1のコマンドを受け取った際の更新権を移譲手段の動作について、図6〜図9を用いて説明する。
(1)図6のデータベース3がデータの更新権を持つ図6のデータベース1に更新権を要求する第1のコマンドを発行する。
(2)図6のデータベース1は、更新権を要求する第1のコマンドを受け取り、図9のフローに従って、自身が配信木の根であると判定し、更新権を破棄し、受け取った第1のコマンドまたは第1のコマンドおよびコマンドの引数を図3のパケットのデータ本体に格納し、図4の配信木のトポロジー情報の当該配信木に登録された配信先に配信する(S12〜S14)。図6ではデータベース2およびデータベース5に配信される。
(3)第1のコマンドを格納した図3のパケットを受け取った図6のデータベース2は、図9のフローに従って、自身が根と更新権要求元とを結ぶ経路上に存在するデータベースであると判定し、送信元であるデータベース1と自身を接続している配信木の弧の向きを逆にし、第1のコマンドを格納した図3のパケットを、図4の配信木のトポロジー情報の当該配信木において配信先が登録された宛先(データベース3およびデータベース4)に配信する(S12、S15〜S18)。
(4)第1のコマンドを格納した図3のパケットを受け取った図6のデータベース5は、図9のフローに従って、により自身が配信木の根ではなく、更新権の要求元ではなく、根と更新権要求元とを結ぶ経路上に存在するデータベースでもないと判定し(S12、S15、S16)、第1のコマンドを格納した図3のパケットを、図4の配信木のトポロジー情報の当該配信木において配信先が登録された宛先(データベース6およびデータベース7)には配信せず、処理を終了する。
(5)第1のコマンドを格納した図3のパケットを受け取った図7のデータベース3は、図9のフローに従って、自身が配信木の根ではないが、更新権の要求元であると判定し、送信元であるデータベース2と自身を接続している配信木の弧の向きを逆にし(図8)、更新権の移譲が完了した配信木の根から葉の方向に、更新権を獲得したことを通知する第2のコマンドを発行する(S12、S15、S19、S20)。
(6)第1のコマンドを格納した図4のパケットを受け取った図7のデータベース4は、上記(4)と同様、処理を終了する。
(7)第2のコマンドを格納した図3のパケットを受信したデータベースは更新権の移譲が完了したことを確認し、受信した図3のパケットを、図4の配信木のトポロジー情報の当該配信木において配信先が登録された宛先に配信する。
(8)なお、第1のコマンドの処理と、第1のコマンドの前に配信された更新結果の反映は同時並行して実施する。また、データベース3は、上記(5)の処理が終わると、第1のコマンドの前に配信された更新結果の反映が配信木の全てのデータベースで完了したことを確認することなく、即座に更新結果を配信する。
上記更新権移譲手段により更新権を移譲する場合に、更新権を要求する第1のコマンドの配信に失敗すれば、配信に失敗したデータベース2が更新権を獲得する。この場合の動作を図6、図7を用いて説明する。
図6は上述の通り、図1のデータベース1が根である分散データベースシステムにおいて、データベース3が、データの更新権を要求し、データベース1がデータベース3にデータの更新権を移譲する動作を示したものであり、図7はデータベース2が、データベース3に対して、第1のコマンドを格納した図3のパケットの配信に失敗した場合に、データベース3を当該配信木1から切り離し、配信失敗時点で更新権を持つデータベース2が当該配信木の新たな根となることを示している。
図10〜図12は、配信木のトポロジーが変更され、各データベースにおける受信済みの更新結果に差分が生じると、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収し、配信木を構成するすべてのデータベースにおける受信済みの更新結果の差分がなくなるまでのデータ同期処理の動作例を示している。
配信木に所属するデータベースが配信木から脱退したり、故障したデータベースを切り離した場合に、配信木の再構成が生じ、再構成後の各データベースにおける受信済みの更新結果に差分が生じる場合がある。例えば図11では、データベース5では更新結果1、2および3を受信済みであるのに対し、その他のデータベースでは更新結果1および2しか受信していないことを示している。
更新結果同期手段の動作について、図10〜図12を用いて説明する。
(1)図10のデータベース2が、親であるデータベース1と子であるデータベース3およびデータベース4との間で、例えば、受信済みの図3のパケットのヘッダ情報のデータの識別子を比較することで、受信した更新結果の差分の有無を検査し、差分がない場合は、図10の管理表の更新結果同期状況に「0(完了)」と記録する。差分がある場合は、更新結果の差分を持つデータベースから更新結果が足りないデータベースに受信順序を保ったまま更新結果を配信し、更新結果の差分を吸収した後で、管理表の更新結果同期状況に「0(完了)」と記録する。図10の管理表の更新結果同期状況が「1(未完了)」のデータベースの中から次の検査対象となるデータベースを選択する。
(2)図11では、データベース5を検査対象として選択した例を示す。データベース5が、親であるデータベース1と子であるデータベース6およびデータベース7との間で、前述の操作と同様の操作により、受信した更新結果の差分の有無を検査し、差分があると判定し、データベース5から親であるデータベース1と子であるデータベース6およびデータベース7に差分となる更新結果3を受信順序を保ったまま配信し、更新結果の差分を吸収した後で、管理表の更新結果同期状況に「0(完了)」と記録する。
(3)ただし、上記2の同期処理に伴い、管理表の更新結果同期状況が「0(完了)」であったデータベース2は再び、「1(未完了)」となる。
(4)図11の管理表の更新結果同期状況が「1(未完了)」のデータベースの中から次の検査対象となるデータベースを選択する。図12では、データベース2を検査対象として選択した例を示す。データベース2が、親であるデータベース1と子であるデータベース3およびデータベース4との間で、前述の操作と同様の操作により、再び受信した更新結果の差分の有無を検査し、差分があると判定し、親であるデータベース1からデータベース2に差分となる更新結果3を受信順序を保ったまま配信し、続いてデータベース2から子であるデータベース3およびデータベース4に前記手順と同様に、差分となる更新結果3を配信し、管理表の更新結果同期状況がすべて「0(完了)」になるまで、上記手順を繰り返すことで、すべてのデータベースにおける受信済みの更新結果の差分がなくなる。
以上説明したように、本発明によれば、データの更新権を持つデータベースを根とし、根から葉へ方向を持つ有向木構造にデータベースを結合した配信木を作成し、更新権を持つデータベースの更新結果を他のデータベースに更新順序を保持したまま配信木の方向にバケツリレー方式で配信し、すべてのデータベースの内容を同一に保つことができる。
また、更新権を保有するデータベースに対して、更新権を要求する第1のコマンドを発行し、データの更新結果の配信と同様に、第1のコマンドを配信し、更新権を保有するデータベースと更新権を要求するデータベースとを結ぶ配信木の経路上のデータベースが、第1のコマンドを受信した後で、受信した配信木の弧の向きを逆にし、データの更新結果の配信と同様に第1のコマンドを配信する手順を、更新権を要求したデータベースに達するまで繰り返すことで更新権を移譲する。加えて、受信済みの更新結果に差分があれば、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことで、(1)任意のデータベースでデータを更新することができ、(2)複数のデータベースで同時に更新操作を開始することができ、また、1つの更新操作の完了を待たずに次の更新操作を開始することができ、(3)木のトポロジーを変更した場合でもすべてのデータベース間で同期を取ることができることにより、すべてのデータベースの内容を同一に保つことができる分散データベースシステムを実現することが可能である。
(実施形態2)
図13は本発明の実施形態2の分散データベースシステムの構成図であり、2種類の配信木(配信木1および配信木2)を構成する分散データベースシステムである。図13では配信木1の根は、データベース1であり、配信木2の根はデータベース7である。この実施形態2は、上記実施形態1の手法を多重に実施することで可能な構成となっている。
図13は本発明の実施形態2の分散データベースシステムの構成図であり、2種類の配信木(配信木1および配信木2)を構成する分散データベースシステムである。図13では配信木1の根は、データベース1であり、配信木2の根はデータベース7である。この実施形態2は、上記実施形態1の手法を多重に実施することで可能な構成となっている。
なお、本発明は、図1,2、5,9及び図10〜12に示した方法の一部又は全部の処理機能をコンピュータで実行可能にしたプログラムとすることができる。また、コンピュータにその処理手順を実行させるためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、フレキシブルディスク、MO、ROM、メモリカード、CD、DVD、リムーバブルディスクなどに記録して、保存したり、提供したりすることが可能であり、また、インターネットのような通信ネットワークを介して配布したりすることが可能である。
DDBS…分散データベースシステム
1〜7、10…データベース
11…データベース(データ格納部)
12…配信木作成手段
13…配信木変更手段
14…更新結果配信手段
15…更新権移譲手段
16…更新結果同期手段
17…配信木のトポロジー情報
1〜7、10…データベース
11…データベース(データ格納部)
12…配信木作成手段
13…配信木変更手段
14…更新結果配信手段
15…更新権移譲手段
16…更新結果同期手段
17…配信木のトポロジー情報
Claims (10)
- 複数のデータベース上に同じデータを重複配置する分散データベースシステムであって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成手段と、
前記配信木のトポロジーを変更する配信木変更手段と、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信手段と、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲手段と、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期手段と
を具備することを特徴とする分散データベースシステム。 - 前記更新権移譲手段は、
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信手段を使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信手段を使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする請求項1記載の分散データベースシステム。 - 前記更新権移譲手段を使用して更新権を移譲する場合に、前記更新権を要求する第1のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする請求項2記載の分散データベースシステム。
- 前記更新結果同期手段は、
前記受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする請求項1記載の分散データベースシステム。 - 複数のデータベース上に同じデータを重複配置する分散データベース方法であって、
データの更新権を持つ前記データベースを根として根から葉へ方向を持つ有向木構造に前記データベースを結合した配信木を作成する配信木作成ステップと、
前記配信木のトポロジーを変更する配信木変更ステップと、
前記更新権を持つ前記データベースの指定されたデータの更新結果を他のデータベースに更新順序を保持したまま前記配信木の方向に従ってバケツリレー方式で配信する更新結果配信ステップと、
前記配信木を構成する何れかのデータベースに前記更新権を移譲する更新権移譲ステップと、
前記配信木のトポロジーが変更された場合に親子関係にある前記データベースにおける受信済みの更新結果の差分を吸収する更新結果同期ステップと、
を具備することを特徴とする分散データベース方法。 - 前記更新権移譲ステップは、
更新権を要求する第1のデータベースが、前記更新権を保有する第2のデータベースに、前記更新権を要求する第1のコマンドを発行し、
前記第2のデータベースが、前記更新権を破棄した後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第2のデータベースと前記第1のデータベースとを結ぶ配信木の経路上に存在する第3のデータベースが、前記第1のコマンドを受信し、前記第1のコマンドを受信した配信木の弧の向きを逆にした後で、前記更新結果配信ステップを使用して、データの更新結果の配信と同様に前記第1のコマンドを配信し、
前記第1のデータベースが、前記第1のコマンドを受信した後で、前記第1のコマンドを受信した配信木の弧の向きを逆にして更新権を獲得してデータの更新結果を配信可能な状態に即座に移行し、
前記第1のデータベースが前記更新権を獲得したことを通知する第2のコマンドを、前記更新結果配信ステップを使用して他のデータベースに配信する、
という操作を、前記第1のコマンドの前に配信されたデータの更新結果の反映と同時並行に行なうことにより更新権を移譲することを特徴とする請求項5記載の分散データベース方法。 - 前記更新権移譲ステップを使用して更新権を移譲する場合に、前記更新権を要求する第1のコマンドの配信に失敗すれば、配信に失敗したデータベースが更新権を獲得することを特徴とする請求項6記載の分散データベース方法。
- 前記更新結果同期ステップは、
受信した更新結果を、受信順序を保ったまま保存しておき、配信木のトポロジーが変更された場合に、トポロジー変更後の配信木における親であるデータベースと子であるデータベースにおいて、保存している受信済みの更新結果に差分があれば、更新結果の差分を配信することにより、親であるデータベースと子であるデータベースにおける受信済みの更新結果の差分を吸収する操作を、配信木を構成するすべてのデータベースにおいて、受信済みの更新結果の差分がなくなるまで繰り返すことを特徴とする請求項5記載の分散データベース方法。 - 請求項5乃至8のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたことを特徴とするプログラム。
- 請求項5乃至8のいずれかに記載の分散データベース方法における各ステップをコンピュータで実行可能にしたプログラムを、該コンピュータが読み取り可能な記録媒体に記録したことを特徴とする記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006133175A JP2007304898A (ja) | 2006-05-12 | 2006-05-12 | 分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006133175A JP2007304898A (ja) | 2006-05-12 | 2006-05-12 | 分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007304898A true JP2007304898A (ja) | 2007-11-22 |
Family
ID=38838766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006133175A Pending JP2007304898A (ja) | 2006-05-12 | 2006-05-12 | 分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007304898A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010129088A (ja) * | 2008-11-25 | 2010-06-10 | Internatl Business Mach Corp <Ibm> | 分散データ・レプリカを利用する情報サービスのデータ保全性及びデータ精度を管理するための方法、装置及びコンピュータ・プログラム |
JP2010271952A (ja) * | 2009-05-21 | 2010-12-02 | Toshiba Corp | 分散型制御システムのデータ管理装置 |
JP2012141891A (ja) * | 2011-01-05 | 2012-07-26 | Toshiba Corp | データベース・システム、並びにそのクライアント |
WO2014006713A1 (ja) * | 2012-07-04 | 2014-01-09 | 富士通株式会社 | システム、情報処理装置、取得方法および取得プログラム |
JP2020177562A (ja) * | 2019-04-22 | 2020-10-29 | 富士通株式会社 | 情報処理システム、情報処理装置およびデータベース管理プログラム |
-
2006
- 2006-05-12 JP JP2006133175A patent/JP2007304898A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010129088A (ja) * | 2008-11-25 | 2010-06-10 | Internatl Business Mach Corp <Ibm> | 分散データ・レプリカを利用する情報サービスのデータ保全性及びデータ精度を管理するための方法、装置及びコンピュータ・プログラム |
JP2010271952A (ja) * | 2009-05-21 | 2010-12-02 | Toshiba Corp | 分散型制御システムのデータ管理装置 |
JP2012141891A (ja) * | 2011-01-05 | 2012-07-26 | Toshiba Corp | データベース・システム、並びにそのクライアント |
WO2014006713A1 (ja) * | 2012-07-04 | 2014-01-09 | 富士通株式会社 | システム、情報処理装置、取得方法および取得プログラム |
JPWO2014006713A1 (ja) * | 2012-07-04 | 2016-06-02 | 富士通株式会社 | システム、情報処理装置、取得方法および取得プログラム |
JP2020177562A (ja) * | 2019-04-22 | 2020-10-29 | 富士通株式会社 | 情報処理システム、情報処理装置およびデータベース管理プログラム |
JP7227485B2 (ja) | 2019-04-22 | 2023-02-22 | 富士通株式会社 | 情報処理システム、情報処理装置およびデータベース管理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831720B2 (en) | Cloud storage distributed file system | |
US20190370362A1 (en) | Multi-protocol cloud storage for big data and analytics | |
US10817498B2 (en) | Distributed transactions in cloud storage with hierarchical namespace | |
US20190236081A1 (en) | Synchronization on reactivation of asynchronous table replication | |
Terrace et al. | Object storage on CRAQ: High-throughput chain replication for read-mostly workloads | |
TWI476610B (zh) | 同級間冗餘檔案伺服器系統及方法 | |
CA2413615C (en) | Conflict resolution for collaborative work system | |
CN108491504B (zh) | 用于分布式配置管理的方法及装置 | |
US9645753B2 (en) | Overlapping write detection and processing for sync replication | |
KR102441997B1 (ko) | 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법 | |
JP6931745B2 (ja) | 状態更新の一貫性に基づきコンピュータクラスタを管理すること | |
KR101670343B1 (ko) | 피어투피어 데이터 복제를 위한 방법, 장치, 및 시스템 및 마스터 노드 전환을 위한 방법, 장치, 및 시스템 | |
CA2913036A1 (en) | Index update pipeline | |
JP2012018449A (ja) | スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ | |
JP2021501399A6 (ja) | 永続性レベル表示器を使用してコンピュータクラスタを管理すること | |
JP2021501400A6 (ja) | コンピュータクラスタインターフェースを管理すること | |
JP2007304898A (ja) | 分散データベースシステムおよび方法、並びに、この方法のプログラムおよびこのプログラムを記録した記録媒体 | |
US20100145911A1 (en) | Serverless Replication of Databases | |
US11860828B2 (en) | Methods, devices and systems for writer pre-selection in distributed data systems | |
CN111522688B (zh) | 分布式系统的数据备份方法及装置 | |
KR20130043823A (ko) | 로그에 기반하여 데이터 정합성을 유지하는 분산 저장 시스템 및 방법 | |
JP5673234B2 (ja) | データベースのレプリケーション方法 | |
Emerson | Scalable coordination of distributed in-memory transactions | |
WO2018235348A1 (ja) | データベースサーバ、データベース管理方法、および記憶媒体 | |
Sovran | Building scalable geo-replicated storage backends for web applications. |