JP6131907B2 - 分散データベース、データ共有方法、プログラム、装置 - Google Patents

分散データベース、データ共有方法、プログラム、装置 Download PDF

Info

Publication number
JP6131907B2
JP6131907B2 JP2014089700A JP2014089700A JP6131907B2 JP 6131907 B2 JP6131907 B2 JP 6131907B2 JP 2014089700 A JP2014089700 A JP 2014089700A JP 2014089700 A JP2014089700 A JP 2014089700A JP 6131907 B2 JP6131907 B2 JP 6131907B2
Authority
JP
Japan
Prior art keywords
node
nodes
information
group
list
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.)
Active
Application number
JP2014089700A
Other languages
English (en)
Other versions
JP2015210550A5 (ja
JP2015210550A (ja
Inventor
秀行 鳥海
秀行 鳥海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2014089700A priority Critical patent/JP6131907B2/ja
Priority to US14/633,233 priority patent/US9936011B2/en
Priority to CN201510119438.6A priority patent/CN105049463B/zh
Publication of JP2015210550A publication Critical patent/JP2015210550A/ja
Publication of JP2015210550A5 publication Critical patent/JP2015210550A5/ja
Application granted granted Critical
Publication of JP6131907B2 publication Critical patent/JP6131907B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1059Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/50Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
    • H04M3/51Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2203/00Aspects of automatic or semi-automatic exchanges
    • H04M2203/40Aspects of automatic or semi-automatic exchanges related to call centers
    • H04M2203/402Agent or workforce management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2203/00Aspects of automatic or semi-automatic exchanges
    • H04M2203/55Aspects of automatic or semi-automatic exchanges related to network data storage and management
    • H04M2203/558Databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Environmental & Geological Engineering (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)

Description

本発明は、複数のノードを構成する複数のデータベースサーバで構成されるピアツーピア型の分散データベースの技術に関する。
背景技術として、ピアツーピアコンピュータ環境の分散データベースを利用するものがある。典型的なピアツーピアコンピュータ環境は、それぞれ様々な接続能力を有するノードとして知られるピアコンピュータシステムにより構成することができる(例えば、特許文献1参照)。
特許文献1に記載されるような代表的な分散データベースは、データを共有するために、ピアツーピアコンピュータ環境と接続する。ユーザコンピュータは、ピアツーピアコンピュータ環境のノードとなることにより、ピアツーピアコンピュータ環境に参加する。ユーザコンピュータは、インターネットを介して他のサーバにアクセスするために、ウェブブラウザアプリケーションにインターネットプロトコル(IP:Internet Protocol)アドレスを入力する。ウェブブラウザアプリケーションは、ユーザからドメイン名を受信し、ドメイン名システム(DNS:Domain Name System)サーバに最初にコンタクトし、そして二値識別子を利用して実際のIPアドレスにリダイレクトされる。ウェブブラウザアプリケーションは、サーバファームでホストされたウェブページにアクセスするために利用され、サーバファームの代りにウェブページや他のサービスをホスティングするピアツーピアコンピュータ環境に参加する。
他方、複数のノードと呼ばれる分散データベースを構成する1つ1つのデータベースサーバで構成されるピアツーピア型の分散データベースにおいては、個々のノードがそれぞれですべての他ノードの死活状態を把握する必要がある。動作中のノードにデータを分散させて保存し、停止中のノードには分散対象から除外する。そのため、それぞれのノードがすべてのノードの死活状態等の情報を把握しておく必要がある。
ノード間での情報共有の手法として、ゴシッププロトコルが使われているものがある(例えば、特許文献2参照)。
また、ピアツーピア型のネットワークシステム内において、グループ内の複数のピア(ノード)が他のピアに問い合わせ、登録されているピアのメンバシップ・リストを記憶し情報を共通する技術を開示しているものがある(例えば、特許文献3参照)。
特表2013−516900号公報 特許第5118059号 特開2012−146312号公報
上述したような一般的な分散データベースによれば、複数のノードで1つのグループを構成して、そのグループの中で1つのノードが他のノードと通信することにより、通信先のノードが別のノードと通信したときの情報も取得することで、少ない回数の通信によって多数のノードの情報を取得することができる。これを繰り返すことによってグループ全体の情報をそれぞれのノードが取得することができる。通信先の選択はランダムに選択することで一様に広がる。
しかしながら、接続するノードをランダムに選択することによってノード数が増加した場合に、一部のノードに集中して負荷がかかる可能性が考えられる。そのため、負荷のかかったノードのレスポンスが悪くなったり、停止したりする可能性がでてくる場合がある。逆に一部のノードが選択されずなかなか情報共有されない可能性も考えられ、効率がよくないという課題があった。
図5、図6を用いて一般的な情報問い合わせ動作の例について説明しておく。
図5と図6は対応している。図6(a)において、ノードが4つと仮定し、ノード(N1)から他のノード(N2〜N4)への情報への問合せR1、R2、R3は、順序はランダムで定期的に実行する。他のノード(N2〜N4)からも同様に実行される。
図5において、図5(f)に凡例として示すように、マーク■は未取得、不明状態、マーク○は取得済み、マーク□は取得予定(リクエスト)、マーク◇は取得予定(被リクエスト)を示す。図5において、各ノード間の問い合わせ状態、情報取得状態を示したリスト10をノード状態リストという。
図5(a)は4つのノード(N1〜N4)が、まだどのノードとも情報を共有していない最初の状態を示す。
図5(b)、図6(b)は、次の状態を示し、ノード(N1)はノード(N2)に問い合わせ(所得予定(リクエスト))、ノード(N2)はノード(N4)に問い合わせ、ノード(N3)はノード(N1)に問い合わせ、ノード(N4)はノード(N3)に問い合わせる状態を示す。
図5(c)、図6(c)は、更に次の状態を示し、ノード(N1)はノード(N3)に問い合わせ、ノード(N2)はノード(N1)に問い合わせ、ノード(N3)はノード(N4)に問い合わせ、ノード(N4)はノード(N2)に問い合わせる状態を示す。
図5(d)、図6(d)は、更に次の状態を示し、ノード(N1)はノード(N4)に問い合わせ、ノード(N2)はノード(N3)に問い合わせ、ノード(N3)はノード(N2)に問い合わせ、ノード(N4)はノード(N1)に問い合わせる状態を示す。
図5(e)は、ノード(N1〜N4)がすべてのノードの情報を取得し、安定状態になったことを示す。
問い合わせ先はランダムに選択されるので、選択によっては図6(e)に示すように、ノード(N1)にノード2からノード(N2〜N4)の問合せが集中する可能性があり、ノード(N1)に負荷がかかることが考えられる。ランダムなので連続して同じノードに問合せる可能性もあり、短期的にみると効率が良くない。
本発明は、上記課題を解決するためになされたもので、複数のノードで構成されるピアツーピア型の分散データベースにおいて、個々のノードが他ノードの状態を効率よく取得して共有することを目的とする。
請求項1記載の発明は、
複数のノードでグループが構成されるピアツーピア型の分散データベースにおいて、前記各ノードはノード状態リストを有し、 個々のノードが他ノードの前記ノード状態リストの所定の情報を問い合わせて取得して共有する共有手段と、
決まったルートで前記情報を伝播させていく伝搬手段と、
ノードのグループ登録時に登録された順序で前記ノード状態リストを更新し、前記順序
で最後にあたるノードは前記順序の先頭から前記所定の情報を取得してノードをリング状に接続する手段と、
ノード数が上限値Mになったとき、ノード[1]からノード[M/2]を第1グループ、ノード[M/2+1]からノード[M]を第2グループとして分割し、ノード[M/2]はノード[1]と接続し、ノード[M]はノード[M/2+1]と接続することによって前記グループを分割する分割手段と、
各グループのノードがグループ内で情報共有したら、別グループのノードに接続先を変更する手段と、
を有することを特徴とする分散データベース。
を、提供するものである。
本発明によれば、複数のノードで構成されるピアツーピア型の分散データベースにおいて、個々のノードが他ノードの状態を効率よく取得して共有することができる。
本発明の一実施の形態におけるノードの登録動作のフローチャートである。 本発明の一実施の形態におけるノードの情報共有処理(リクエスト送信)動作のフローチャートである。 本発明の一実施の形態におけるノードの情報共有処理(リクエスト受信)についてのフローチャートである。 本発明の一実施の形態におけるネットワーク接続構成の概要のブロック図である。 一般的なノード状態リストを示す図である。 一般的な情報問い合わせ動作について説明するための図である。 本発明の一実施の形態におけるノード数4の場合のノード状態リストを示す図である。 本発明の一実施の形態におけるノード数4の場合の情報問い合わせ動作について説明するための図である。 本発明の一実施の形態におけるノード数8の場合のノード状態リストを示す図である。 本発明の一実施の形態におけるノード数8の場合の情報問い合わせ動作について説明するための図である。
以下、複数のノードで構成されるピアツーピア型の分散データベースにおいて、個々のノードが他ノードの死活状態等の情報を取得する手段並びに方法について説明する。
<構成>
図4は本発明の一実施の形態であるネットワーク接続構成の概要についてのブロック図である。図4のA1〜A4、Bは、ネットワーク100上に接続されたPC(パーソナルコンピュータ)あるいはサーバであり、以降はノード(Node)と称呼する。ノードA1からA4は、同じグループ(グループA)を構成するノードを意味する。ノードBは、グループAに所属しないノードを意味する。
ノードA1、A2、A3、A4は、ノード状態リスト11、12、13、14、リクエスト送信用ノード情報処理プログラム21、22、23、24、リクエスト受信用ノード情報処理プログラム31、32、33.34、CPU41、42、43、44、データメモリ51、52、53、54を有する。
ノード状態リスト11、12、13、14は、図5、7、9で説明に使用するように、各ノードが、どのノードに問い合わせ予定(リクエスト)か、どのノードから問い合わせられるのか(被リクエスト)、死活状態等の情報を未取得なのか、取得済みなのか、という状態リストを記憶している。
CPU41〜44は通信プロトコルを有し、各ノードを制御するもので、リクエスト送信用ノード情報処理プログラム21〜24並びにリクエスト受信用ノード情報処理プログラム31〜34を実行し、後述するノード情報共有処理を定期的に実行する。このリクエスト送信用ノード情報処理プログラム21〜24並びにリクエスト受信用ノード情報処理プログラム31〜34は便宜上分けて記載しているが、実際は一体化された1つのプログラムとして構成することができる。このリクエスト送信用ノード情報処理プログラム21〜24並びにリクエスト受信用ノード情報処理プログラム31〜34は、各ノードにインストールされている。
また、NTP(Network Time Protocol)によって各ノードの時刻同期をはかっている。別々のノード で同時期に別の状態のリストを持った場合のコンフリクトを整合化するために、情報を取得したときの時刻も合わせて情報と共に記録しておき、複数のノード情報が入ってきて状態が異なる場合は、取得時刻の新しい方を採用する。
データメモリ51〜54は、通常に各種データを記憶すると共に、各ノードから取得したメモリ残量情報、パフォーマンス情報等の一覧も記憶する。その際、情報を取得した時刻も併せて記憶する。前記ノード状態リスト11、12、13、14をデータメモリ51〜54内に構成してもよい。また逆に、各ノードから取得したメモリ残量情報、パフォーマンス情報、時刻情報等をノード状態リスト11、12、13、14に記憶させてもよい。
<動作>
本実施の形態の動作についてはフローチャートを用いて後述するが、はじめに概略説明をする。
1.ノードの登録
(0)ノードの登録は既にグループに登録されているノードから行う。
(1)ノードをグループに登録する。全ノード数をNとして登録する際に、グループ内で識別するための識別番号を指定する。
(例:Node[1]、Node[2]、Node[3]、…、Node[N]、…、Node[M])
(2)各ノードは全ノードの情報(ノードの死活状態)を保存するリストを持つ。ノードのグループ登録時にリストを作成する。
ノードと接続し情報を取得するのは、Node[N]→Node[N+1]のように順序を決める。
順序で最後にあたるノードは順序の先頭から取得する(Node[N]→Node[1])、としてリング状にする。
(3)新たなノード状態リストをすべてのノードに配信する。
2.ノードの処理
(4)Node[N]は、Node[N+1]の情報を取得するリクエストを送信する。その際、Node[N]の持つリストも合わせて送信する。
(5)Node[N+1]は、Node[N]から取得したリストに、Node[N+1]の持つリストの情報を追記してレスポンスとして返信する。
(6)Node[N]は、Node[N+1]から取得した情報を自分のリストに追記する。
(7)Node[N]は、Node[N−1]から同様にリクエストされるので、上記(5)に該当する部分を行い、レスポンスを返信する。
(8)(4)に戻って繰り返す。
3.ノード数が増加した場合
(9) ノード数Nは、ノードを追加していき、ノード数の上限値Mになったとき、Node[1]からNode[M/2]をAグループ、Node[M/2+1]からNode[M]をBグループとして2つのグループに分割する。
(10)Node[M/2]はNode[1]と接続し、Node[M]はNode[M/2+1]と接続することでリングを2つに分割する。情報共有は分割する前と同様に行う。
(11)一定期間(各グループのノードが情報共有できたぐらい、上記の例ならばM/2回以上)したら、別グループのノードに接続先を変更する。例えば、AグループのNode[N]は、BグループのNode[N+M/2]に接続する。
4.ノードからレスポンスが返らない場合
(12)K回以上レスポンスが返ってこないNode[x]は、停止したとみなして次の順序のノードに変更(Node[x−1]→Node[x+1])して、リクエストを行う。
(13)同様にK回以上、正常ではないレスポンスが返ってきた場合のNode[x]は、データ保存できない状態とみなして次の順序のノードに変更(Node[x−1]→Node[x+1])して、リクエストを行う。
(14)停止ノードNode[x]には、別途接続を試行して、復活した場合は変更する。
図7はこの実施の形態におけるノード数4の場合のノード状態リストを示す図である。また、図8は同実施の形態におけるノード数4の場合の情報問い合わせ動作について説明するための図である。更に、図9は同実施の形態におけるノード数8の場合のノード状態リストを示す図である。また、図10は同実施の形態におけるノード数8の場合の情報問い合わせ動作について説明するための図である。
図5、6の一般的なプロトコルの情報問い合わせ動作と対比しやすいように、図7〜10により本実施の形態における情報問い合わせ動作について説明する。
図7と図8は対応している。図8(a)において、ノードが4つと仮定し、ノード(N1)からノード(N2)への情報への問合せR1、ノード(N2)からノード(N3)への情報への問合せR2、ノード(N3)からノード(N4)への情報への問合せR3、ノード(N4)からノード(N1)への情報への問合せR4は、対等である。
ノード状態リスト10と、図7(e)に示す凡例は図6と同じである。
図7(a)は4つのノード(N1〜N4)が、まだどのノードとも情報を共有していない最初の状態を示す。
図7(b)、図8(b)は、次の状態を示し、ノード(N1)はノード(N2)に問い合わせ(所得予定(リクエスト))、ノード(N2)はノード(N3)に問い合わせ、ノード(N3)はノード(N4)に問い合わせ、ノード(N1)はノード(N3)に問い合わせる状態を示す。同時にノード(N1)はノード(N4)から被リクエストを受け、ノード(N2)はノード(N1)から被リクエストを受け、ノード(N3)はノード(N2)から被リクエストを受け、ノード(N4)はノード(N3)から被リクエストを受けている。
図7(c)、図8(c)は、更に次の状態を示す。
図7(d)は、ノード(N1〜N4)がすべてのノードの情報を取得し、安定状態になったことを示す。問い合わせ(リクエスト)、被リクエストの関係は、図8(b)(c)(d)に示されるように、すべて同じになる。
図8(a)から分かるように、この実施の形態によれば、ノード(N1)から見た場合、ノード(N2)へ問い合わせて、ノード(N4)から問合せられる。他のノードも同様に行われる。どのノードからみても問合せる数と問合せられる数は一定になる。
ノード(N1)にノード(N4)のード情報が入ってくるときは、ノード(N2)とノード(N3)経由で入ってくる。各ノードはNTPで同期が取られており、基本的に同時期に取得したものが入ってくる。一般的には、ノード状態リスト10に取得したときの時刻も合わせて記録しておき、複数のノード情報が入ってきて状態が異なる場合は、取得時刻の新しい方を採用する。
図9、図10は、ノード数が増加した場合の情報問い合わせ動作について説明するもので、上限値Mを8とし、ノード数が8になった場合について説明する。
図9(a)は、ノード数が分割前の状態を表す。8つのノード(N1〜N8)が、まだどのノードとも情報を共有していない最初の状態を示す。ノード状態リスト10が、ノード数がN1〜N8に対応して8個に増えている。
図9(b1)は2つのグループに分割した状態を表す。ノード状態リスト10は、グループ分けする前の状態を保持する。最初の段階のノード情報の取得はノード(N1〜N4)のグループで領域200の情報を更新し、ノード(N5〜N8)のグループで領域300の情報を更新する。
図9(b2)は、グループ内で一通りノード状態を共有した状態を表す。図9(b1)の状態から図9(b2)の状態へ移行する途中の過程は、ノード(N1〜N4)については図7(a)から図7(d)と同じである。ノード(N5〜N8)についても図7(a)から図7(d)をN1→N5、N2→N6、N3→N7、N4→N8と読み替えれば同様とみなせる。ノード状態リスト10は、領域200を更新した結果が領域210となり、領域300を更新した結果が領域310となる。
図9(c)は、図9(b2)の状態に達した後で、各ノードが別グループのノードに問合せることを表す。
図9(c1)は、問合せる前の状態を表しており、ノード(N1)はノード(N5)に、ノード(N6)はノード(N2)に問合せていることを表す。ノード(N2)とノード(N6)、ノード(N3)とノード(N7)、ノード(N4)とノード(N8)も同様である。
図9(c2)は問合せた後の状態を表しており、ノード(N1)はノード(N5)の持つノード状態リスト10のノード(N5〜N8)の領域240の情報を領域230から取得したことを表す。同様にノード(N5)は、ノード(N1)の持つノード状態リスト10の(N1〜N4)の領域340の情報を領域330から取得したことを表す。ノード(N2)とノード(N6)、ノード(N3)とノード(N7)、ノード(N4)とノード(N8)も同様である。
これにより、すべてのノードはすべてのノード状態を取得したことになる。以降は、図9(b1)に戻って繰り返していく。
図10は、図9(a)(b1)(b2)(c)(c1)(c2)の問い合わせ関係を図示したものである。図10(a)が図9(a)に、図10(b)が図9(b1)(b2)に、図10(c)が図9(c1)(c2)にそれぞれ対応する。ノードが一定数を越えた場合に、点線400で分割して2つのグループに分ける。グループを分けた場合、点線401、402のように、ノード(N4→N6)はノード(N4→N1)へ、ノード(N8→N1)はノード(N8→N5)へつなぎ直しとなる。すなわち、ノード数に応じて複数のグループに分割し、グループ内で一回りしたら別グループのノードに問い合わせる。そして再度同じグループ内で問い合わせる。
なお、いずれかのグループのノード数が8を超えたら更に分割し、3つのグループとなる。自グループ内の問い合わせが完了したら他グループへ問い合わせていくことは、グループ数が増えても同じ原理である。上限値8は限定されるものではない。情報を伝搬する決まったルートは、上述した「1.ノードの登録」で説明したように順序を決めるが、これに限定されるものではない。
次に、フローチャートを参照して本実施の形態の動作の詳細について説明する。フローチャートは各ノードのCPUが実行するものである。
図1はノードの登録についてのフローチャートである。
ステップS101は、グループへノードを登録する処理で、例えば図4のグループAにノードを登録する処理であり、登録された順にノードに識別番号を付与していく。識別情報はデータメモリ51〜54に記憶される。この処理は、NoSQL(Not only SQL)によって複数のサーバ(ノード)を使って1つのデータベースを作る手法である。
続くステップS102は、ノード状態リストとして、図6のノード状態リスト10に相当するもので、ステップS101で登録されたノードの状態を表す配列として保存し、識別番号に該当する配列を追加する。
続くステップS103は、変更されたノード状態リストをグループに所属するノードに配信して、すべてのノードで共有する。すべてのノードでノード状態リストを共有したら終了(ステップS104)となる。
以上がノードの登録となる。
図2は、ノードの情報共有処理(リクエスト送信)についてのフローチャートである。リクエストは定期的に繰り返すものとする。
ステップS201は、リクエスト用データを作成するために、自分の持つノード状態リスト情報を取得する。
続くステップS202は、自ノード(Node[N])からリクエスト先ノード(Node[N+1])にリクエストを送信する。
続くステップS203は、リクエスト先からのレスポンスを待ち、レスポンスが返ってきたらステップS204へ、レスポンスが返ってこなければステップS212へそれぞれ進む。
ステップS204は、レスポンスが返ってきた際の結果が、OKならばステップS205へ、NGならばステップS207へ、それぞれ進む。
ステップS205は、レスポンスが正常としてステップS206へ進む。
ステップS206は、受信したレスポンスのノード状態リストのデータで更新された部分のデータを自分のノード状態リストに上書き保存して終了する(ステップS215)。
ステップS207は、レスポンスが異常としてステップS208へ進む。
ステップS208は、受信したレスポンスのノード状態リストのデータでリクエスト先ノードの部分をNGとし、他のデータのノード状態リストには更新しない。そしてステップS209へ進む。
ステップS209は、連続して失敗した回数のカウンターEを更新して、ステップS210へ進む。
ステップS210は、連続して失敗した回数のカウンター値Eが、連続して失敗した回数の上限値K以上の場合はステップS211へ、より小さい場合は次の処理(ステップS215)へ、それぞれ進む。
ステップS211は、連続して失敗した回数が連続して失敗した回数の上限値以上の場合はノード状態リストからそのリクエスト先のノードを除外して、次のノードを設定する処理である。設定後は終了する(ステップS215)。
ステップS203でレスポンス無しのときは、レスポンスが(一定時間)返ってこないのでノード停止として(ステップS212)、ステップS213へ進む。
ステップS213は、レスポンスが受信できないのでリクエスト先ノードの部分を停止とし、他のデータのノード状態リストには更新しない。
続くステップS214は、連続して失敗した回数のカウンターを更新する。そしてステップS210へ進む。
以上がノードの情報共有処理(リクエスト送信)となる。
図3は、ノードの情報共有処理(リクエスト受信)についてのフローチャートである。リクエストは待ち受けるものとする。
ステップS301は、リクエストを監視して待ち受ける処理で、リクエストを受信した場合はステップS302へ、受信しない場合はステップS301へ戻る。
ステップS302は、リクエストに付加されたノード状態リスト情報を取得する。
続くステップS303は、自ノードのチェックをして状態取得する。
続くステップS304は、ステップS302、ステップS303で取得したノード状態リスト情報並びに自ノードの状態についてのエラーチェックを行い、問題なければOKとしてステップS305へ進み、問題があればNGとしてステップS306へ進む。
ステップS305は、チェック結果がOKであることをノード状態リストへ書き込み、ステップS306はチェック結果がNGであることをノード状態リストへ書き込む。
続くステップS307は、保存していたノード状態リストからステップS304の結果を反映してレスポンス作成する。
続くステップS308は、ステップS307で作成したレスポンスを送信する。
続くステップS309は、ステップS302で取得したノード状態リスト情報のデータで更新された部分のデータを自分のノード状態リストに上書き保存して終了する(ステップS310)。
以上がノードの情報共有処理(リクエスト受信)となる。
このようにして、複数のノードで構成されるピアツーピア型のデータベースにおいて情報の共有化を実現する。
<実施の形態の効果>
本実施の形態によれば、決まったルートで情報を伝播させていくことにより、ノード数が増加してもネットワークの負荷を増やさないことと、ノード数が増えた場合はグループを分割することで一定の時間内に情報共有をすることができる。
また、特定のルートで情報交換を行うことで一部のノードに負荷がかからない。あるいは、すべてのノードに対して一定間隔で情報を共有できる。
更に、リクエストの際リクエスト側からもノード情報を送ることで双方向の情報収集ができて、かつそれぞれの蓄積した情報を共有できる。
以上、この発明の実施形態について説明したが、この発明はこれらに限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
以下に、本願出願時の特許請求の範囲を付記する。
<付記>
[請求項1]
複数のノードでグループが構成されるピアツーピア型の分散データベースにおいて、
個々のノードが他ノードの所定の情報を問い合わせて取得して共有する共有手段と、
決まったルートで前記情報を伝播させていく伝搬手段と、
ノード数が所定以上増えた場合は前記グループを分割する分割手段と
を有することを特徴とする分散データベース。
[請求項2]
前記分割手段は、前記グループ内で前記情報が伝搬したら、別のグループのノードに前記情報を問い合わせることを特徴とする請求項1記載の分散データベース。
[請求項3]
前記共有手段が問い合わせる前記情報は、ノードの死活情報であることを特徴とする請求項1又は2記載の分散データベース。
[請求項4]
前記共有手段がノードの死活情報問い合わせた結果、不活ノードと判定されたノードは前記グループから排除することを特徴とする請求項3記載の分散データベース。
[請求項5]
前記共有手段が問い合わせる前記情報は、ノードのメモリ残量情報又はノードのパフォーマンス情報であることを特徴とする請求項1又は2記載の分散データベース。
[請求項6]
複数のノードで構成されるピアツーピア型の分散データベースのデータ共有方法であって、
複数のノードをグループに登録する第1工程と、
個々のノードが他ノードの情報を取得して前記グループで共有するために前記グループ内で決まったルートで情報を伝播させていく第2工程と、
ノード数が所定以上増えた場合は前記グループを分割する第3工程と
を実行することを特徴とする方法。
[請求項7]
前記第1工程は、以下の工程を含むことを特徴とする請求項6記載の方法。
(1)ノードを前記グループに登録する工程であって、全ノード数をNとして登録する際に、グループ内で識別するための識別番号を指定する工程、
(2)各ノードは全ノードの所定の情報を保存するリストを持ち、ノードのグループ登録時に登録された順序でリストを更新し、前記順序で最後にあたるノードは前記順序の先頭から前記所定の情報を取得してリング状にする工程。
(3)前記更新されたリストをすべてのノードに配信する工程。
[請求項8]
前記第2工程は、以下の工程を含むことを特徴とする請求項6記載の方法。
(4)ノード[N]は、ノード[N+1]の情報を取得するリクエストを送信し、該ノード[N]の持つリストも合わせて送信する工程、
(5)ノード[N+1]は、ノード[N]から取得したリストに、ノード[N+1]の持つリストの情報を追記してレスポンスとして返信する工程、
(6)ノード[N]は、ノード[N+1]から取得した情報を自分のリストに追記する工程、
(7)ノード[N]は、ノード[N−1]からのリクエストに応じ、前記工程(5)を実行しレスポンスを返信する工程、
(8)前記工程(4)に戻って繰り返す工程。
[請求項9]
前記第3工程は、以下の工程を含むことを特徴とする請求項6記載の方法。
(9) ノード数Nは、ノードを追加していき、ノード数の上限値Mになったとき、ノード[1]からノード[M/2]を第1グループ、ノード[M/2+1]からノード[M]を第2グループとして分割する工程、
(10)ノード[M/2]はノード[1]と接続し、ノード[M]はノード[M/2+1]と接続する工程、
(11)各グループのノードが情報共有できたら、別グループのノードに接続先を変更する工程。
[請求項10]
前記第2工程は、以下の工程を含むことを特徴とする請求項6記載の方法。
(12)K回以上レスポンスが返ってこないか、正常ではないレスポンスが返ってきた場合のノード[x]は、次の順序のノードに変更して、リクエストを行う工程。
[請求項11]
複数のノードで構成されるピアツーピア型の分散データベースの情報を共有するためのプログラムであって、
ノード[N]のコンピュータに、
複数のノードをグループに登録する登録工程と、
ノード[N+1]の情報を取得するリクエストを送信し、該ノード[N]の持つノードの状態を示すリストも合わせて送信する送信工程と、
ノード[N+1]から、ノード[N]から取得したリストに、ノード[N+1]の持つリストの情報を追記したレスポンスを受信する受信工程と、
ノード[N+1]から取得した情報を自分のリストに追記する追記工程と、
ノード[N−1]からのリクエストに応じ、ノード[N−1]から取得したリストに、当該ノード[N]の持つリストの情報を追記してレスポンスとしてノード[N−1]に返信する返信工程と、
ノード数が所定以上増えた場合は前記グループを分割する分割工程と
を実行させることを特徴とするプログラム。
[請求項12]
複数のノードでグループが構成されるピアツーピア型の分散データベースにおいて、
請求項11記載のプログラムを実行するコンピュータを備えることを特徴とする装置。
10、11、12、13、14 ノード状態リスト
21、22、23、34 リクエスト送信用ノード情報処理プログラム
31、32、33、34 リクエスト受信用ノード情報処理プログラム
41、42、43、44 CPU
51、52、53、54 データメモリ
100 ネットワーク
A1〜A4 サーバ
N1〜N8 ノード
A、B グループ

Claims (10)

  1. 複数のノードでグループが構成されるピアツーピア型の分散データベースにおいて、
    前記各ノードはノード状態リストを有し、
    個々のノードが他ノードの前記ノード状態リストの所定の情報を問い合わせて取得して共有する共有手段と、
    決まったルートで前記情報を伝播させていく伝搬手段と、
    ノードのグループ登録時に登録された順序で前記ノード状態リストを更新し、前記順序で最後にあたるノードは前記順序の先頭から前記所定の情報を取得してノードをリング状に接続する手段と、
    ノード数が上限値Mになったとき、ノード[1]からノード[M/2]を第1グループ、ノード[M/2+1]からノード[M]を第2グループとして分割し、ノード[M/2]はノード[1]と接続し、ノード[M]はノード[M/2+1]と接続することによって前記グループを分割する分割手段と、
    各グループのノードがグループ内で情報共有したら、別グループのノードに接続先を変更する手段と、
    を有することを特徴とする分散データベース。
  2. 前記共有手段が問い合わせる前記情報は、ノードの死活情報であることを特徴とする請求項1記載の分散データベース。
  3. 前記共有手段がノードの死活情報問い合わせた結果、不活ノードと判定されたノードは前記グループから排除することを特徴とする請求項2記載の分散データベース。
  4. 前記共有手段が問い合わせる前記情報は、ノードのメモリ残量情報又はノードのパフォーマンス情報であることを特徴とする請求項1記載の分散データベース。
  5. ノード状態リストを有する複数のノードで構成されるピアツーピア型の分散データベースのデータ共有方法であって、前記ノードのCPUが、
    複数のノードをグループに登録する第1工程と、
    個々のノードが前記他ノードのノード状態リストから所定の情報を取得して前記グループで共有するために、前記グループ内で決まったルートで情報を伝播させていく第2工程と、
    ノード数が所定以上増えた場合は前記グループを分割する第3工程と、
    を含み、
    前記第3工程は、
    (9)ノード数が上限値Mになったとき、ノード[1]からノード[M/2]を第1グループ、ノード[M/2+1]からノード[M]を第2グループとして分割する工程、
    (10)ノード[M/2]はノード[1]と接続し、ノード[M]はノード[M/2+1]と接続する工程、
    (11)各グループのノードがグループ内で情報共有したら、別グループのノードに接続先を変更する工程、
    を実行することを特徴とする方法。
  6. 前記第1工程は、以下の工程を含むことを特徴とする請求項5記載の方法。
    (1)ノードを前記グループに登録する工程であって、全ノード数をNとして登録する際に、グループ内で識別するための識別番号を指定する工程、
    (2)各ノードの前記ノード状態リストは全ノードの所定の情報を保存し、ノードのグループ登録時に登録された順序で前記リストを更新し、前記順序で最後にあたるノードは前記順序の先頭から前記所定の情報を取得して複数のノードを前記ノードのグループ登録時に登録された順序で前記ノードをリング状に接続する工程、
    (3)前記更新されたリストをすべてのノードに配信する工程。
  7. 前記第2工程は、以下の工程を含むことを特徴とする請求項5記載の方法。
    (4)ノード[N]は、ノード[N+1]の情報を取得するリクエストを送信し、該ノード[N]の持つリストも合わせて送信する工程、
    (5)ノード[N+1]は、ノード[N]から取得したリストに、ノード[N+1]の持つリストの情報を追記してレスポンスとして返信する工程、
    (6)ノード[N]は、ノード[N+1]から取得した情報を自分のリストに追記する工程、
    (7)ノード[N]は、ノード[N−1]からのリクエストに応じ、ノード[N−1]から取得したリストに、ノード[N]の持つリストの情報を追記してレスポンスとして返信する工程、
    (8)前記工程(4)に戻って繰り返す工程。
  8. 前記第2工程は、以下の工程を含むことを特徴とする請求項5記載の方法。
    (12)ノード[x]からK回以上レスポンスが返ってこないか、正常ではないレスポンスが返ってきた場合は、ノード[x−1]は、次の順序のノード[x+1]へリクエストを行う工程。
  9. 複数のノードで構成されるピアツーピア型の分散データベースの情報を共有するためのプログラムであって、
    ノード[N]のCPUに、
    複数のノードをグループに登録する登録工程と、
    ノード[N+1]の情報を取得するリクエストを送信し、該ノード[N]の持つノードの状態を示すリストも合わせて送信する送信工程と、
    ノード[N+1]から、ノード[N]から取得したリストに、ノード[N+1]の持つリストの情報を追記したレスポンスを受信する受信工程と、
    ノード[N+1]から取得した情報を自分のリストに追記する追記工程と、
    ノード[N−1]からのリクエストに応じ、ノード[N−1]から取得したリストに、当該ノード[N]の持つリストの情報を追記してレスポンスとしてノード[N−1]に返信する返信工程と、
    ノード数が上限値Mになったとき、ノード[1]からノード[M/2]を第1グループ、ノード[M/2+1]からノード[M]を第2グループとして分割する工程と、
    各グループのノードがグループ内で情報共有したら、別グループのノードに接続先を変更する工程と、
    を実行させることを特徴とするプログラム。
  10. 複数のノードでグループが構成されるピアツーピア型の分散データベースにおいて、
    請求項9記載のプログラムを実行するコンピュータを備えることを特徴とする装置。
JP2014089700A 2014-04-24 2014-04-24 分散データベース、データ共有方法、プログラム、装置 Active JP6131907B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014089700A JP6131907B2 (ja) 2014-04-24 2014-04-24 分散データベース、データ共有方法、プログラム、装置
US14/633,233 US9936011B2 (en) 2014-04-24 2015-02-27 Distributed database, method of sharing data, program storing medium, and apparatus for a distributed database
CN201510119438.6A CN105049463B (zh) 2014-04-24 2015-03-18 分散数据库、数据共享方法、用于分散数据库的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014089700A JP6131907B2 (ja) 2014-04-24 2014-04-24 分散データベース、データ共有方法、プログラム、装置

Publications (3)

Publication Number Publication Date
JP2015210550A JP2015210550A (ja) 2015-11-24
JP2015210550A5 JP2015210550A5 (ja) 2016-01-07
JP6131907B2 true JP6131907B2 (ja) 2017-05-24

Family

ID=54335907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014089700A Active JP6131907B2 (ja) 2014-04-24 2014-04-24 分散データベース、データ共有方法、プログラム、装置

Country Status (3)

Country Link
US (1) US9936011B2 (ja)
JP (1) JP6131907B2 (ja)
CN (1) CN105049463B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105872003A (zh) * 2015-12-21 2016-08-17 乐视云计算有限公司 基于p2p网络的数据处理方法、装置及系统
JP6816072B2 (ja) * 2018-08-27 2021-01-20 株式会社日立製作所 分散データベースシステム、分散データベース管理方法、及び分散データベース管理プログラム
US11163551B1 (en) 2020-10-13 2021-11-02 Argo AI, LLC Systems and methods for improved smart infrastructure data transfer
US11537383B2 (en) 2020-10-13 2022-12-27 Argo AI, LLC Systems and methods for improved smart infrastructure data transfer

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895931A (ja) * 1994-09-26 1996-04-12 Mitsubishi Electric Corp 分散計算機システムの故障検出方法
US7792982B2 (en) * 2003-01-07 2010-09-07 Microsoft Corporation System and method for distributing streaming content through cooperative networking
US7593333B2 (en) * 2004-07-07 2009-09-22 Microsoft Corporation Efficient one-to-many content distribution in a peer-to-peer computer network
US8250230B2 (en) 2004-09-30 2012-08-21 Microsoft Corporation Optimizing communication using scalable peer groups
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
WO2007121611A1 (fr) * 2006-04-21 2007-11-01 Yongmin Zhang Procédé et dispositif de transmission de contenu dans un réseau poste à poste
JP5228369B2 (ja) * 2007-04-27 2013-07-03 日本電気株式会社 通信システム、通信方法、及び通信プログラム
US10084856B2 (en) * 2009-12-17 2018-09-25 Wsou Investments, Llc Method and apparatus for locating services within peer-to-peer networks
US8832281B2 (en) 2010-01-08 2014-09-09 Tangome, Inc. Utilizing resources of a peer-to-peer computer environment
JP2011221625A (ja) * 2010-04-06 2011-11-04 Mitsubishi Electric Corp 通信装置及び共用情報更新方法及びプログラム
JP2013005270A (ja) * 2011-06-17 2013-01-07 Casio Comput Co Ltd データ転送システム、発信元端末、受信端末、およびデータ転送方法
US9900432B2 (en) * 2012-11-08 2018-02-20 Genesys Telecommunications Laboratories, Inc. Scalable approach to agent-group state maintenance in a contact center

Also Published As

Publication number Publication date
US20150312334A1 (en) 2015-10-29
US9936011B2 (en) 2018-04-03
CN105049463A (zh) 2015-11-11
CN105049463B (zh) 2018-10-16
JP2015210550A (ja) 2015-11-24

Similar Documents

Publication Publication Date Title
JP6131907B2 (ja) 分散データベース、データ共有方法、プログラム、装置
US9367261B2 (en) Computer system, data management method and data management program
US8176200B2 (en) Distributed aggregation on an overlay network
JP5599943B2 (ja) サーバクラスター
US10754843B2 (en) Method and apparatus for information management
JP2010074604A (ja) データアクセスシステム、データアクセス方法およびデータアクセス用プログラム
Xu et al. A cloud computing platform based on p2p
JP3944176B2 (ja) 探索要求送信装置およびプログラム
JP5845877B2 (ja) 情報処理装置、データ制御方法およびデータ制御プログラム
US10817512B2 (en) Standing queries in memory
Biswas et al. A novel leader election algorithm based on resources for ring networks
US20170011078A1 (en) Reconciler for a Distributed Storage System
JP5526780B2 (ja) 負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラム
US20170286540A1 (en) Local and remote execution of standing queries
US10749957B2 (en) Method and apparatus for information management
JP5783008B2 (ja) ストレージ装置、ストレージシステム、データ更新方法およびデータ管理プログラム
JP2013114623A (ja) ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
JP6203963B2 (ja) 経路解決システム及び経路解決方法
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
US20170286490A1 (en) Implicit subscriptions in the connection protocol of a network switch
US10284673B2 (en) Interface for a client of a network device
JP4228193B2 (ja) 情報共有方法、ネットワークシステム及びノード装置
US10783144B2 (en) Use of null rows to indicate the end of a one-shot query in network switch
US10860568B2 (en) External data source linking to queries in memory
US20170286500A1 (en) Non-materialized tables with standing queries

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151002

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170403

R150 Certificate of patent or registration of utility model

Ref document number: 6131907

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150