Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5483473B2 - データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム - Google Patents
[go: Go Back, main page]

JP5483473B2 - データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム - Google Patents

データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム Download PDF

Info

Publication number
JP5483473B2
JP5483473B2 JP2011170137A JP2011170137A JP5483473B2 JP 5483473 B2 JP5483473 B2 JP 5483473B2 JP 2011170137 A JP2011170137 A JP 2011170137A JP 2011170137 A JP2011170137 A JP 2011170137A JP 5483473 B2 JP5483473 B2 JP 5483473B2
Authority
JP
Japan
Prior art keywords
data
data server
server
operating state
information
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.)
Expired - Fee Related
Application number
JP2011170137A
Other languages
English (en)
Other versions
JP2013037384A (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.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
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 Nippon Telegraph and Telephone Corp, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011170137A priority Critical patent/JP5483473B2/ja
Publication of JP2013037384A publication Critical patent/JP2013037384A/ja
Application granted granted Critical
Publication of JP5483473B2 publication Critical patent/JP5483473B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ分散システムでのデータの書き込み及び稼動状態の監視に関する。
ICT(Information and Communication Technology)技術の発達に伴い、流通するデータの量が爆発的に増加している。これらを処理するために、分散ストレージや分散処理システムが使われている。
分散処理システムでは、複数配置された同様の働きをするサーバそれぞれが分担して処理を実行するため、サーバの台数を増やすことでシステムの規模を拡張することができる。すなわち、分散処理システムは、スケールアウトするシステムとなる。
クライアントからのデータの書き込みを分散させる場合は、複数のデータサーバが分担してデータの書き込みを受け付けることになる。その分担の方法は様々であるが、データのID(IDentification)のハッシュ値によって割り振る方法(非特許文献1)や、ランダムに選択する方法(非特許文献2)などがある。
いずれの方法でも、データサーバの故障が発生することを前提としたメカニズムを採用することが多く、そのために管理サーバがデータサーバの死活監視を行う。その上で、現在稼動しているものの中から、非特許文献1や非特許文献2に例示したルールによって書き込み先のデータサーバを選ぶことになる。
ここで、クライアントが管理サーバにデータを渡して書き込みを代替させた場合、管理サーバはクライアントからのアクセスに加えてデータの入出力も担うことになり、管理サーバの負荷が極端に高くなってしまい、システムがスケールアウトしなくなる。
そこで、クライアントが管理サーバからデータサーバの稼動状態の情報を取得し、クライアントが直接データサーバに書き込む場合、管理サーバはデータの入出力を担わず、管理サーバの負荷が低くなり、システムがスケールアウトする(非特許文献2)。
首藤一幸、「スケールアウトの技術」、情報処理、Vol.50、No.11、2009年11月 佐藤浩史、井上武、山崎敬広、片山陽平、清水敬司、小柳恵一、「センサデータのための分散サンプリングストレージとそのサンプルサイズ制御手法」、FIT2010、D−022、pp.141−142、2010年
ここで、管理サーバが自己の内部で管理するデータサーバの稼動状態の情報(内部用リスト)は、稼動状態が変化するたびに更新される。しかし、管理サーバがクライアントに公開するデータサーバの稼動状態の情報(公開用リスト)は、稼動状態が変化するたびに更新されるのではなく、有効期限が経過するたびに内部用リストに基づいて更新される。よって、内部用リスト及び公開用リストは、常には一致しない。
公開用リストの有効期限が経過するまでの間に、データサーバの稼動状態が変化することがある。従って、活きているとされているデータサーバが書き込み時には死んでいる可能性があり、その場合クライアントは書き込みに失敗してしまう。この可能性を低く抑えるために死活監視の頻度を上げると、やはり管理サーバの負荷が高くなってしまう。
データサーバの選択方法によっては、書き込みに失敗した際に改めて別個のデータサーバを選択し直すことも考えられる。しかし、例えばデータサーバのランダムな選択を求められており、全ての活きているデータサーバに対して確率均等に選択することが重要である場合は、そのような選び直しをすることで偏りが生じ均等性が失われてしまうため、選び直しは望ましくない。また、データサーバの選択が一意に決まる場合、例えばデータサーバが冗長化されていない環境でデータのIDのハッシュ値によって割り振る場合などは、そもそも選び直すこと自体が原理的に不可能である。
管理サーバを分散させてスケールアウトさせることも可能であるが、コストの問題から、集中させるか分散させるとしても少ない台数に抑えることが好ましい。いずれにせよ、管理サーバの負荷を小さく抑える技術が重要である。
そこで、前記課題を解決するために、本発明は、管理サーバの負荷低減のため、管理サーバによるデータサーバの監視の頻度を下げても、クライアントの書き込み失敗を増やすことなく、別個のデータサーバの選び直しをなくすことを目的とする。
上記目的を達成するために、クライアント装置は、各データサーバの稼動状態の情報に反して、選択したデータサーバにデータを書き込めないとき、管理サーバに、選択したデータサーバの稼動状態を、書き込み可能から書き込み不能へと更新させることとした。
具体的には、本発明は、複数のデータサーバと、各データサーバの稼動状態を監視し、前記各データサーバの稼動状態の情報を作成し閲覧可能に公開する管理サーバと、前記各データサーバの稼動状態の情報を前記管理サーバから取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないとき、前記選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させるクライアント装置と、を備えることを特徴とするデータ分散システムである。
また、本発明は、複数のデータサーバの稼動状態を監視する稼動状態監視部と、各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成部と、クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、その旨の通知に基づいて、前記クライアント装置が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと更新する稼動状態更新部と、を備えることを特徴とする管理サーバである。
また、本発明は、複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得部と、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択部と、前記各データサーバの稼動状態の情報に反して、前記データサーバ選択部が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択部が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させる書込不可通知部と、を備えることを特徴とするクライアント装置である。
また、本発明は、複数のデータサーバの稼動状態を監視する稼動状態監視手順と、各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成手順と、クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、その旨の通知に基づいて、前記クライアント装置が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと更新する稼動状態更新手順と、をコンピュータに順に実行させるための管理サーバプログラムである。
また、本発明は、複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得手順と、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択手順と、前記各データサーバの稼動状態の情報に反して、前記データサーバ選択手順が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択手順が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させる書込不可通知手順と、をコンピュータに順に実行させるためのクライアント装置プログラムである。
この構成によれば、管理サーバの負荷低減のため、管理サーバによるデータサーバの監視の頻度を下げても、クライアントが管理サーバと併せてデータサーバの稼動状態を監視するため、クライアントの書き込み失敗を増やさないことができる。さらに、管理サーバによるデータサーバの監視の頻度を下げたまま、データサーバの稼動状態の情報の更新頻度を上げることができるため、クライアントの書き込み失敗を減らすこともできる。
上記目的を達成するために、代理サーバは、選択されたデータサーバに代わりデータの書き込みを受け付け、管理サーバは、選択されたデータサーバの稼動回復を確認したとき、代理サーバに対して選択されたデータサーバにデータを書き戻させることとした。
具体的には、本発明は、複数のデータサーバと、各データサーバの稼動状態を監視し、前記各データサーバの稼動状態の情報を作成し閲覧可能に公開する管理サーバと、前記各データサーバの稼動状態の情報を前記管理サーバから取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記選択したデータサーバにデータを書き込むクライアント装置と、前記クライアント装置が、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバに前記データを書き込めないとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付け、前記クライアント装置が選択したデータサーバが、書き込み可能に復旧したとき、前記クライアント装置が選択したデータサーバに前記データを書き戻す代理サーバと、を備えることを特徴とするデータ分散システムである。
また、本発明は、複数のデータサーバの稼動状態を監視する稼動状態監視部と、各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成部と、クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、前記クライアント装置が選択したデータサーバの稼動回復を確認したとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに対して、前記クライアント装置が選択したデータサーバの稼動回復を通知し、前記クライアント装置が選択したデータサーバに前記データを書き戻させる稼動回復通知部と、を備えることを特徴とする管理サーバである。
また、本発明は、複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得部と、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択部と、前記各データサーバの稼動状態の情報に反して、前記データサーバ選択部が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択部が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに前記データを書き込むデータ書込部と、を備えることを特徴とするクライアント装置である。
また、本発明は、複数のデータサーバの稼動状態を監視する稼動状態監視手順と、各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成手順と、クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、前記クライアント装置が選択したデータサーバの稼動回復を確認したとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに対して、前記クライアント装置が選択したデータサーバの稼動回復を通知し、前記クライアント装置が選択したデータサーバに前記データを書き戻させる稼動回復通知手順と、をコンピュータに順に実行させるための管理サーバプログラムである。
また、本発明は、複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得手順と、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択手順と、前記各データサーバの稼動状態の情報に反して、前記データサーバ選択手順が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択手順が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに前記データを書き込むデータ書込手順と、をコンピュータに順に実行させるためのクライアント装置プログラムである。
この構成によれば、管理サーバの負荷低減のため、管理サーバによるデータサーバの監視の頻度を下げても、データを代理のサーバに退避させた後にデータを本来のサーバに書き戻すため、別個のデータサーバの選び直しをなくすことができる。
本発明は、管理サーバの負荷低減のため、管理サーバによるデータサーバの監視の頻度を下げても、クライアントの書き込み失敗を増やすことなく、別個のデータサーバの選び直しをなくすことができる。
データ分散システムの構成を示すブロック図である。 データ分散システムにおけるデータの書き込みの処理を示すブロック図である。 データ分散システムにおける稼動状態の監視の処理を示すシーケンスである。 クライアントの処理を示すフローチャートである。 データ分散システムにおけるデータの書き戻しの処理を示すブロック図である。 データ分散システムにおけるデータの書き戻しの処理を示すシーケンスである。 代理サーバの第1のデータ構造を示す図である。 代理サーバの第2のデータ構造を示す図である。
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
(データ分散システムの構成の概要)
データ分散システムの構成を示すブロック図を図1に示す。データ分散システムは、分散データベース1、管理サーバ2、クライアント3及び代理サーバ4から構成される。分散データベース1は、複数のデータベース部11、12、13を備える。
管理サーバ2は、死活監視部21、稼動状態管理部22、稼動状態リスト公開部23、報告受付部24及びデータベース制御部25から構成される。
死活監視部21は、稼動状態監視部として、複数のデータベース部11、12、13の稼動状態を監視する。稼動状態作成部として、稼動状態管理部22は、各データベース部11、12、13の稼動状態の情報を作成し、稼動状態リスト公開部23は、各データベース部11、12、13の稼動状態の情報を閲覧可能に公開する。
報告受付部24は、クライアント3が、各データベース部11、12、13の稼動状態の情報を取得し、各データベース部11、12、13の稼動状態の情報に基づいて、書き込み可能であるいずれかのデータベース部を選択し、各データベース部11、12、13の稼動状態の情報に反して、選択したいずれかのデータベース部にデータを書き込めないときにおいて、その旨の通知を受ける。稼動状態管理部22は、稼動状態更新部として、その旨の通知に基づいて、クライアント3が選択したいずれかのデータベース部の稼動状態を書き込み可能から書き込み不能へと更新する。
データベース制御部25は、稼動回復通知部として、クライアント3が選択したいずれかのデータベース部の稼動回復を確認したとき、クライアント3が選択したいずれかのデータベース部に代わりデータの書き込みを受け付ける代理サーバ4に対して、クライアント3が選択したいずれかのデータベース部の稼動回復を通知し、クライアント3が選択したいずれかのデータベース部にデータを書き戻させる。
クライアント3は、管理サーバ対応部31、稼動状態リスト管理部32、サーバ選択部33及びデータ入出力部34から構成される。
管理サーバ対応部31は、稼動状態取得部として、複数のデータベース部11、12、13の稼動状態を監視する管理サーバ2から、各データベース部11、12、13の稼動状態の情報を取得する。稼動状態リスト管理部32は、各データベース部11、12、13の稼動状態の情報を保持する。サーバ選択部33は、データサーバ選択部として、各データベース部11、12、13の稼動状態の情報に基づいて、書き込み可能であるいずれかのデータベース部を選択する。データ入出力部34は、データ書込部として、書き込み可能であるいずれかのデータベース部にデータを書き込む。
管理サーバ対応部31は、書込不可通知部として、各データベース部11、12、13の稼動状態の情報に反して、サーバ選択部33が選択したいずれかのデータベース部にデータを書き込めないとき、サーバ選択部33が選択したいずれかのデータベース部の稼動状態を書き込み可能から書き込み不能へと管理サーバ2に更新させる。
データ入出力部34は、データ書込部として、サーバ選択部33が選択したデータベース部に代わりデータの書き込みを受け付ける代理サーバ4にデータを書き込む。
代理サーバ4は、クライアント3が選択したいずれかのデータベース部に代わりデータの書き込みを受け付け、データ入出力部41、データベース部42、管理サーバ対応部43及びテーブル管理部44から構成される。
データ入出力部41は、クライアント3が選択したいずれかのデータベース部が書き込み不能となったとき、クライアント3からデータを入力し、クライアント3が選択したいずれかのデータベース部が書き込み可能となったとき、そのデータベース部にデータを出力する。データベース部42は、クライアント3からのデータを格納する。
管理サーバ対応部43は、クライアント3が選択したいずれかのデータベース部が書き込み可能となったとき、管理サーバ2のデータベース制御部25からその旨の通知を受ける。管理サーバ対応部43は、クライアント3が選択したいずれかのデータベース部に書き戻しが終了したとき、管理サーバ2の報告受付部24にその旨を通知する。テーブル管理部44は、クライアント3が選択したデータベース部がいずれであるかに応じて、クライアント3が出力したデータをデータベース部42の適切な領域において管理する。
図1に説明した各装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
発明が解決しようとする課題において記載したように、公開用リストの有効期限が経過するまでの間に、データサーバの稼動状態が変化する場合には、活きているとされているデータベース部が書き込み時には死んでいる可能性がある。
しかし、図1のように、クライアント3は、各データベース部11、12、13の稼動状態の情報に反して、選択したいずれかのデータベース部にデータを書き込めないとき、管理サーバ2に、選択したいずれかのデータベース部の稼動状態を、書き込み可能から書き込み不能へと更新させる。つまり、クライアント3が管理サーバ2と併せてデータベース部11、12、13の稼動状態を監視するため、管理サーバ2の負荷を高くすることなくクライアント3の書き込み失敗を減らすことができる。
そして、図1のように、代理サーバ4は、選択されたいずれかのデータベース部に代わりデータの書き込みを受け付け、管理サーバ2は、選択されたいずれかのデータベース部の稼動回復を確認したとき、代理サーバ4に対して選択されたいずれかのデータベース部にデータを書き戻させる。つまり、データを代理のサーバに退避させた後にデータを本来のサーバに書き戻すため、別個のデータサーバの選び直しをなくすことができる。
(データの書き込みに成功する場合の処理)
次に、データの書き込みに成功する場合の処理について説明する。データ分散システムにおけるデータの書き込みの処理を示すブロック図を図2に示す。
管理サーバ2は、各データベース部11、12、13にpingを送信し、各データベース部11、12、13の稼動状態を監視する。そして、管理サーバ2は、各データベース部11、12、13の稼動状態の情報を示す公開用リストPを公開する。ここで、公開用リストPのうち{1、2、3}は、DB1、DB2、DB3とマークされたデータベース部11、12、13に書き込み可能であることを示す。クライアント3は、管理サーバ2に公開用リストPを要求し、管理サーバ2から公開用リストPを取得する。そして、クライアント3は、公開用リストPに基づいて、データベース部11、12、13に書き込み可能であることを確認し、データベース部13にデータDを書き込む。
データ分散システムにおける稼動状態の監視の処理を示すシーケンスを図3に示す。稼動状態管理部22は、稼動状態リストを2つ保持しており、1つは内部用(internal)リストIで、もう1つは公開用(publish)リストPである。
死活監視部21は、定期的にデータベース部11、12、13の稼動状態をチェックする。稼動状態には、「正常」、「準備中」、「異常」の3種類がある。「正常」は、正常に動いており、クライアント3からの書き込みを受け付けられる状態、「準備中」は、正常に動いているが、クライアント3からの書き込みを受け付けられない状態、「異常」は、正常に動いておらず、クライアント3からの書き込みを受け付けられない状態を表す。
死活監視部21は、データベース部11、12、13に対してpingを投げる。そして、正しく返ってきた場合、今まで「正常」であったデータベース部は引き続き「正常」と判断し、今まで「異常」であったデータベース部は「準備中」と判断する。しかし、正しく返らなかった場合、今まで「異常」であったデータベース部は引き続き「異常」と判断し、今まで「正常」であったデータベース部は「異常」と判断する。稼動状態管理部22は、内部用リストIを更新する。このチェックを例えば5分おきに行う。
また、前述したように、クライアント3がデータベース部の異常を報告してくる場合がある。この場合、報告受付部24がその報告を受け、稼動状態管理部22が内部用リストIの該当する稼動状態を「異常」に更新する。
また、前述したように、代理サーバ4がデータベース部の復旧を報告してくる場合がある。この場合、報告受付部24がその報告を受け、稼動状態管理部22が内部用リストIの該当する稼動状態を「正常」に更新する。
稼動状態管理部22は、例えば5分おきに内部用リストIのうち「正常」状態にあるデータベース部のリストを公開用リストPとして作成する。稼動状態リスト公開部23は、有効期限を例えば5分後までとして公開用リストPを公開する。
図3においては、初期状態では、内部用リストIも公開用リストP1も、{1、2、3}を示している。まず、稼動状態管理部22は、データベース部13の異常の報告を受けたとき、内部用リストIを{1、2、3}から{1、2}へと更新し、内部用リストI1を作成する。しかし、稼動状態リスト公開部23は、有効期限が経過していないため、公開用リストP1を更新するわけではない。次に、稼動状態リスト公開部23は、有効期限が経過しているため、内部用リストI1に基づいて、公開用リストP1を{1、2、3}から{1、2}へと更新し、公開用リストP2を公開する。以下、内部用リストI2、I3、I4、I5及び公開用リストP3、P4、P5が、内部用リストI1及び公開用リストP1、P2と同様にして、作成されて公開される。
このように、稼動状態リストは、内部用と公開用で常には一致しない。ここで、管理サーバ2がクライアント3に、内部用リストIではなく公開用リストPを公開する理由を説明する。管理サーバ2は、クライアント3がいずれのデータベース部の集合からデータベース部を選択したかを把握する必要があり、少なくともクライアント3が何台のデータベース部の集合からデータベース部を選択したかを把握する必要がある。管理サーバ2は、データベース部13の集合であるいくつの分散データベース1からデータベース部13が選択されたかに基づいて、後に統計処理を実行するためである。
まず、管理サーバ2がクライアント3に内部用リストIを公開する場合を考える。内部用リストIは、稼動状態が変化するたび更新されるため、同一の時刻において、各クライアント3が保持している稼動状態リストは、それぞれ異なることがある。よって、クライアント3がいずれの時点で更新された内部用リストIに基づいてデータベース部を選択したのかを、管理サーバ2は把握することが負担になる。
次に、管理サーバ2がクライアント3に公開用リストPを公開する場合を考える。公開用リストPは、有効期限が経過してから更新されるため、同一の時刻において、各クライアント3が保持している稼動状態リストは、それぞれ同一と保証される。よって、クライアント3が有効期限満了で更新された公開用リストPに基づいてデータベース部を選択したことを、管理サーバ2は把握することが容易になる。
そこで、管理サーバ2はクライアント3に、内部用リストIではなく公開用リストPを公開する。しかし、公開用リストの有効期限が経過するまでの間に、データサーバの稼動状態が変化する可能性があり、活きているとされているデータベース部が書き込み時には死んでいる可能性がある。そこで、本発明が適用されるのである。
クライアントの処理を示すフローチャートを図4に示す。クライアント3において、データが発生する(ステップS1)。稼動状態リスト管理部32は、稼動状態リストが有効期限内にあるか、又は稼動状態リストが保持されているかを確認する(ステップS2)。
稼動状態リスト管理部32が、稼動状態リストが有効期限内にあることを確認したとき(ステップS2においてYES)について説明する。サーバ選択部33は、稼動状態リストに基づいて、データベース部を選択する(ステップS5)。データ入出力部34は、そのデータベース部にデータを書き込むことを試みる(ステップS6)。
稼動状態リスト管理部32が、稼動状態リストが有効期限内にないこと、又は稼動状態リストが保持されていないことを確認したとき(ステップS2においてNO)について説明する。管理サーバ対応部31は、管理サーバ2から稼動状態リストを取得する(ステップS3)。稼動状態リスト管理部32は、その稼動状態リストを保持する(ステップS4)。ステップS5、S6については、前述と同様にして実行される。
データ入出力部34が、データベース部にデータを書き込むことができたとき(ステップS7においてYES)、一連の処理は終了する。データ入出力部34が、データベース部にデータを書き込むことができないとき(ステップS7においてNO)、管理サーバ対応部31は、その旨を管理サーバ2に報告し(ステップS8)、データ入出力部34は、データを代理サーバ4に書き込む(ステップS9)。ステップS8、S9については、データの書き込みに失敗する場合の処理の項目で詳述する。
(データの書き込みに失敗する場合の処理)
次に、データの書き込みに失敗する場合の処理について説明する。データ分散システムにおけるデータの書き戻しの処理を示すブロック図を図5に示す。
クライアント3は、公開用リストPに基づいて、データベース部11、12、13に書き込み可能であることを確認し、データベース部13にデータDを書き込もうとする。しかし、クライアント3は、公開用リストPに反して、データベース部13にデータDを書き込めない。そこで、クライアント3は、データベース部13に書き込み不能であることを、管理サーバ2に通知する。さらに、クライアント3は、データベース部13の識別子IDを紐付けたデータDを、代理サーバ4に書き込む。
管理サーバ2は、内部用リストIを更新する。つまり、内部用リストIのうち、{1、2、3}は{1、2}に更新される。代理サーバ4は、データDを格納する。管理サーバ2は、データベース部13にpingを送信し、データベース部13の稼動状態を監視する。管理サーバ2は、データベース部13に書き込み可能であることを確認したとき、その旨を代理サーバ4に通知する。代理サーバ4は、その旨の通知を受けたとき、データDをデータベース部13に書き戻す。クライアント3は、書き戻しの際に関与していない。
データ分散システムにおけるデータの書き戻しの処理を示すシーケンスを図6に示す。管理サーバ対応部31は、稼動状態リスト公開部23に稼動状態リストを要求する(ステップS11)。稼動状態リスト公開部23は、管理サーバ対応部31に稼動状態リストを公開する(ステップS12)。このとき、内部用リストI11は、{1、2、3}を示している。その後、データベース部13は、異常状態になっている。しかし、内部用リストI11は、{1、2、3}を示したままである。
データ入出力部34は、データベース部13にデータを書き込むことを試みるが、データベース部13にデータを書き込めない(ステップS13)。管理サーバ対応部31は、その旨を報告受付部24に報告する(ステップS14)。稼動状態管理部22は、内部用リストI11を{1、2、3}から{1、2}へと更新し、内部用リストI12を作成する。報告受付部24は、代理サーバ4のアドレスを管理サーバ対応部31に通知するが(ステップS15)、稼動状態リスト公開部23が、代理サーバ4のアドレスを管理サーバ対応部31に公開することもできる。データ入出力部34は、データベース部13の識別子IDを紐付けたデータを、代理サーバ4に書き込む(ステップS16)。
稼動状態管理部22は、死活監視部21が内部用リストI12で「異常」となっているデータベース部13からpingを正常に受け取った時点で、または、運用者がデータベース部13を復旧させた旨を稼動状態管理部22へ直接登録した時点で、内部用リストI12のデータベース部13の稼動状態を「準備中」に更新する(ステップS17)。データベース制御部25は、管理サーバ対応部43に、データベース部13の稼動状態が「準備中」になったことを通知する(ステップS18)。
テーブル管理部44は、データベース部13へ紐付けられているテーブルを選び、その全データをデータベース部42から読み込み、データ入出力部41を通してデータベース部13へ書き戻す(ステップS19)。その後、テーブル管理部44は、データベース部13へ紐付けられているテーブルをテーブル管理部44及びデータベース部42から削除する。そして、管理サーバ対応部43は、処理が終了したことを報告受付部24へ報告する(ステップS20)。稼動状態管理部22は、代理サーバ4からの処理終了の報告を受けてデータベース部13が復旧したと判断し、内部用リストI12を{1、2}から{1、2、3}へと更新し、内部用リストI13を作成する。
なお、書き戻し中にデータベース部13に異常が発生した場合は、データ入出力部41は書き戻し処理を中止し、テーブル管理部44はデータを削除せず、管理サーバ対応部43は報告受付部24にその旨を伝え、稼動状態管理部22は内部用リストIのうちデータベース部13の稼動状態を「異常」に戻し、死活監視部21は監視を続ける。
また、データベース部13の異常が、クライアント3からの報告ではなく死活監視部21のチェックにより気付いたものであり、その後もクライアント3から一度もデータベース部13の異常について報告が無いまま、データベース部13が復旧する場合がある。この場合、代理サーバ4にはデータベース部13に紐付けられているデータは無いと判断することも可能である。そこで、死活監視部21がデータベース部13の復旧に気付いた時点で、前述した書き戻し処理を実行することなく、稼動状態管理部22は内部用リストIのうちデータベース部13の稼動状態を「正常」に戻すことにしても良い。
代理サーバの第1のデータ構造を示す図を図7に示す。データベース部11、12、13に紐付けられたデータが、一括のテーブルによって管理されている。データベース部の識別用のカラムが存在しており、データの読み込みおよび削除の前にデータベース部の識別子で全データをフィルタする処理が必要であるが、テーブル管理部44は不要である。
代理サーバの第2のデータ構造を示す図を図8に示す。データベース部11、12、13に紐付けられたデータが、別個のテーブルによって管理されている。データベース部毎にテーブルが管理されており、テーブル管理部44は必要であるが、データの読み込みおよび削除の前にデータベース部の識別子で全データをフィルタする処理は不要である。なお、テーブルではなくデータベースを別個にすることも可能である。
本発明に係るデータ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラムは、流通するデータの量の爆発的な増加に関わらず、管理サーバの負荷や書き込みの偏りを軽減するときに適用することができる。
1:分散データベース
2:管理サーバ
3:クライアント
4:代理サーバ
11、12、13:データベース部
21:死活監視部
22:稼動状態管理部
23:稼動状態リスト公開部
24:報告受付部
25:データベース制御部
31:管理サーバ対応部
32:稼動状態リスト管理部
33:サーバ選択部
34:データ入出力部
41:データ入出力部
42:データベース部
43:管理サーバ対応部
44:テーブル管理部
I:内部用リスト
P:公開用リスト
D:データ
ID:識別子

Claims (10)

  1. 複数のデータサーバと、
    各データサーバの稼動状態を監視し、前記各データサーバの稼動状態の情報を作成し閲覧可能に公開する管理サーバと、
    前記各データサーバの稼動状態の情報を前記管理サーバから取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないとき、前記選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させるクライアント装置と、
    を備えることを特徴とするデータ分散システム。
  2. 複数のデータサーバと、
    各データサーバの稼動状態を監視し、前記各データサーバの稼動状態の情報を作成し閲覧可能に公開する管理サーバと、
    前記各データサーバの稼動状態の情報を前記管理サーバから取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記選択したデータサーバにデータを書き込むクライアント装置と、
    前記クライアント装置が、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバに前記データを書き込めないとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付け、前記クライアント装置が選択したデータサーバが、書き込み可能に復旧したとき、前記クライアント装置が選択したデータサーバに前記データを書き戻す代理サーバと、
    を備えることを特徴とするデータ分散システム。
  3. 複数のデータサーバの稼動状態を監視する稼動状態監視部と、
    各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成部と、
    クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、その旨の通知に基づいて、前記クライアント装置が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと更新する稼動状態更新部と、
    を備えることを特徴とする管理サーバ。
  4. 複数のデータサーバの稼動状態を監視する稼動状態監視部と、
    各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成部と、
    クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、前記クライアント装置が選択したデータサーバの稼動回復を確認したとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに対して、前記クライアント装置が選択したデータサーバの稼動回復を通知し、前記クライアント装置が選択したデータサーバに前記データを書き戻させる稼動回復通知部と、
    を備えることを特徴とする管理サーバ。
  5. 複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得部と、
    前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択部と、
    前記各データサーバの稼動状態の情報に反して、前記データサーバ選択部が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択部が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させる書込不可通知部と、
    を備えることを特徴とするクライアント装置。
  6. 複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得部と、
    前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択部と、
    前記各データサーバの稼動状態の情報に反して、前記データサーバ選択部が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択部が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに前記データを書き込むデータ書込部と、
    を備えることを特徴とするクライアント装置。
  7. 複数のデータサーバの稼動状態を監視する稼動状態監視手順と、
    各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成手順と、
    クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、その旨の通知に基づいて、前記クライアント装置が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと更新する稼動状態更新手順と、
    をコンピュータに順に実行させるための管理サーバプログラム。
  8. 複数のデータサーバの稼動状態を監視する稼動状態監視手順と、
    各データサーバの稼動状態の情報を作成し閲覧可能に公開する稼動状態作成手順と、
    クライアント装置が、前記各データサーバの稼動状態の情報を取得し、前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択し、前記各データサーバの稼動状態の情報に反して、前記選択したデータサーバにデータを書き込めないときにおいて、前記クライアント装置が選択したデータサーバの稼動回復を確認したとき、前記クライアント装置が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに対して、前記クライアント装置が選択したデータサーバの稼動回復を通知し、前記クライアント装置が選択したデータサーバに前記データを書き戻させる稼動回復通知手順と、
    をコンピュータに順に実行させるための管理サーバプログラム。
  9. 複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得手順と、
    前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択手順と、
    前記各データサーバの稼動状態の情報に反して、前記データサーバ選択手順が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択手順が選択したデータサーバの稼動状態を書き込み可能から書き込み不能へと前記管理サーバに更新させる書込不可通知手順と、
    をコンピュータに順に実行させるためのクライアント装置プログラム。
  10. 複数のデータサーバの稼動状態を監視する管理サーバから、各データサーバの稼動状態の情報を取得する稼動状態取得手順と、
    前記各データサーバの稼動状態の情報に基づいて、書き込み可能であるデータサーバを選択するデータサーバ選択手順と、
    前記各データサーバの稼動状態の情報に反して、前記データサーバ選択手順が選択したデータサーバにデータを書き込めないとき、前記データサーバ選択手順が選択したデータサーバに代わり前記データの書き込みを受け付ける代理サーバに前記データを書き込むデータ書込手順と、
    をコンピュータに順に実行させるためのクライアント装置プログラム。
JP2011170137A 2011-08-03 2011-08-03 データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム Expired - Fee Related JP5483473B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011170137A JP5483473B2 (ja) 2011-08-03 2011-08-03 データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011170137A JP5483473B2 (ja) 2011-08-03 2011-08-03 データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム

Publications (2)

Publication Number Publication Date
JP2013037384A JP2013037384A (ja) 2013-02-21
JP5483473B2 true JP5483473B2 (ja) 2014-05-07

Family

ID=47886978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011170137A Expired - Fee Related JP5483473B2 (ja) 2011-08-03 2011-08-03 データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム

Country Status (1)

Country Link
JP (1) JP5483473B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175449A (ja) * 1997-12-15 1999-07-02 Matsushita Electric Ind Co Ltd サーバ装置
JP2002149459A (ja) * 2000-11-10 2002-05-24 Mitsubishi Electric Corp 冗長化データベース管理・検索システム
JP2003248669A (ja) * 2002-02-22 2003-09-05 Mitsubishi Electric Corp 分散型データ蓄積サーバシステム及び分散型データ蓄積サーバのデータ送信方法
JP2009110439A (ja) * 2007-10-31 2009-05-21 Nec Corp データベースアクセスシステム及びデータベースアクセス方法,プログラム
JP5461215B2 (ja) * 2010-02-01 2014-04-02 日本電信電話株式会社 データベースシステム

Also Published As

Publication number Publication date
JP2013037384A (ja) 2013-02-21

Similar Documents

Publication Publication Date Title
EP2575045B1 (en) Distributed computing backup and recovery system
US7778984B2 (en) System and method for a distributed object store
US9471585B1 (en) Decentralized de-duplication techniques for largescale data streams
US9639589B1 (en) Chained replication techniques for large-scale data streams
KR101042908B1 (ko) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
US20120271795A1 (en) Scalable row-store with consensus-based replication
US20190384674A1 (en) Data processing apparatus and method
US20140164329A1 (en) Dynamically Varying the Number of Database Replicas
KR101527634B1 (ko) 샤딩 서비스를 제공하는 방법 및 장치
EP3629522B1 (en) Systems and methods for testing resilience of a distributed network
JP2022500730A (ja) 分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
JP6028641B2 (ja) 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
CN113168404A (zh) 用于在分布式数据库系统中复制数据的系统和方法
CN115552377A (zh) 用于主选择的混合租约
US9251189B2 (en) Update of data structure configured to store metadata associated with a database system
CN110502460B (zh) 数据处理的方法和节点
JP5483473B2 (ja) データ分散システム、管理サーバ、クライアント装置、管理サーバプログラム及びクライアント装置プログラム
CN120030087A (zh) 一种基于Redis的实时数据同步的方法及系统
US10728326B2 (en) Method and system for high availability topology for master-slave data systems with low write traffic
AU2019244116B2 (en) Techniques for scheduled anti-entropy repair design
JP6085266B2 (ja) サーバリソース管理装置
US12259795B2 (en) Method and systems for providing back up for a database
US20250110718A1 (en) Isolated testing platform for cloud database production queries
CN116074382B (zh) 内容分发网络中的渐进式对象刷新
CN110493326B (zh) 基于zookeeper管理集群配置文件的系统和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130712

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140207

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: 20140212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140213

R150 Certificate of patent or registration of utility model

Ref document number: 5483473

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees