JP5903022B2 - 分散データ管理プログラムおよび分散データ管理装置 - Google Patents

分散データ管理プログラムおよび分散データ管理装置 Download PDF

Info

Publication number
JP5903022B2
JP5903022B2 JP2012220477A JP2012220477A JP5903022B2 JP 5903022 B2 JP5903022 B2 JP 5903022B2 JP 2012220477 A JP2012220477 A JP 2012220477A JP 2012220477 A JP2012220477 A JP 2012220477A JP 5903022 B2 JP5903022 B2 JP 5903022B2
Authority
JP
Japan
Prior art keywords
data
node
data set
destination
identifier
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
JP2012220477A
Other languages
English (en)
Other versions
JP2014074944A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012220477A priority Critical patent/JP5903022B2/ja
Publication of JP2014074944A publication Critical patent/JP2014074944A/ja
Application granted granted Critical
Publication of JP5903022B2 publication Critical patent/JP5903022B2/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

本発明は、複数のノードが協調して動作する分散処理システムに於いて、システム全体で管理されるデータを各ノードが分担して管理するために実行される分散データ管理プログラム、および、各ノードである分散データ管理装置に関する。
一般的に、複数のノードが協調して動作する分散処理システムは、ノード台数の増大によって更なる処理性能を獲得する際に用いられる。分散処理システムは、例えば、大規模データベースのデータ管理に於いて有効である。
分散処理システムの各ノードで実行される分散データ管理プログラムは、一般的なデータの管理機能に加えて、その分散処理システムに於ける処理担当ノードの決定機能を有している。この分散データ管理プログラムが実行されたとき、各ノードは、分散処理システムに於ける処理の状態データを管理対象とする。
この分散データ管理プログラムに用いられる手法として、コンシステント・ハッシュ法を挙げることができる(非特許文献1)。
コンシステント・ハッシュ法は、複数のサーバが多量のデータを分担して管理する分散処理プログラムの一形態である。コンシステント・ハッシュ法の原理は、分散データ管理プログラムを実行するノードと、ノードによって管理されるデータのそれぞれに識別子を割り当て、あるノードが管理するデータの識別子の範囲を、ノード自身の識別子と、自身よりも値の小さい識別子を持つノードの中では最も大きい値の識別子を持つノードの識別子との間として定めるものである。
コンシステント・ハッシュ法を実装したソフトウェアプログラムのインタフェースは、データの保存要求と取得要求のみを受け付ける単純なものである。コンシステント・ハッシュ法を実行するノードは、受信した信号が要求するデータの識別子を参照して、複数のサーバのうち指定されたデータを管理しているサーバを特定し、特定したサーバに対して、データの保存要求や取得要求を転送する。
ここでは、分散データ管理プログラムに於いて、単体のデータを管理する機能だけでなく、データ間で関連性の高いデータ群について、データ集合の単位でデータを管理する機能を考える。
図10(a),(b)は、コンシステント・ハッシュ法に於けるID空間を示す図である。
図10(a)は、ID空間5とノードの識別子とデータ集合の識別子との関係を示す図である。
ID空間5は、円環状である。円環状のID空間5には、ノードの識別子6−1〜6−6と、データ集合の識別子7−1〜7−7が並んでいる。
データ集合の識別子7−1からノードの識別子6−1への矢印は、このデータ集合の識別子7−1の担当がノードの識別子6−1であることを示している。このとき、ノードの識別子6−1で示されるノードに、データ集合の識別子7−1で示されるデータ集合が格納される。
データ集合の識別子7−2からノードの識別子6−2への矢印は、このデータ集合の識別子7−2の担当がノードの識別子6−2であることを示している。このとき、ノードの識別子6−2で示されるノードに、データ集合の識別子7−2で示されるデータ集合が格納される。
データ集合の識別子7−3からノードの識別子6−4への矢印は、このデータ集合の識別子7−3の担当がノードの識別子6−4であることを示している。このとき、ノードの識別子6−4で示されるノードに、データ集合の識別子7−3で示されるデータ集合が格納される。
データ集合の識別子7−4〜7−6からノードの識別子6−5への矢印は、このデータ集合の識別子7−4〜7−6の担当がノードの識別子6−5であることを示している。このとき、ノードの識別子6−5で示されるノードに、データ集合の識別子7−4〜7−6で示されるデータ集合が格納される。
データ集合の識別子7−7からノードの識別子6−6への矢印は、このデータ集合の識別子7−7の担当がノードの識別子6−6であることを示している。このとき、ノードの識別子6−6で示されるノードに、データ集合の識別子7−7で示されるデータ集合が格納される。
以下、ノードの識別子6−1〜6−6を特に区別しないときには、単にノードの識別子6と記載する。データ集合の識別子7−1〜7−7を特に区別しないときには、単にデータ集合の識別子7と記載する。
図10(b)は、各データ集合の識別子と、データ集合が格納するデータとの関係を示す図である。
ノード(n)4−nは、識別子1740f0d5のデータ集合を有し、識別子1740f0d5のデータ集合は、複数のセッション状態データを含んでいる。このノード(n)4−nの識別子は、例えば、図10(a)のノードの識別子6のいずれかである。データ集合の識別子1740f0d5は、例えば図10(a)のデータ集合の識別子7のいずれかに対応している。
セッション状態データであるSession1は、データの識別子であるSession1.idの値が、例えば3c2af102であり、セッション状態データの実体かつセッション状態であるSession1.stateの値が、例えば「confirmed」(確立状態)である。データ集合の識別子1740f0d5は、ID空間5に存在している。各ノードは、データ集合の識別子1740f0d5を参照し、コンシステント・ハッシュ法による演算を行うことで、識別子1740f0d5のデータ集合を担当しているノードの識別子6を特定し、よって、識別子1740f0d5のデータ集合を格納しているノード(n)4−nを特定することができる。
ノードの識別子6やデータ集合の識別子7は、例えばハッシュ関数などの、無作為な値を返す演算方法によって算出される。ノードの識別子6の値およびデータ集合の識別子7の値は無作為なので、各ノードが担当するデータの量は平準化され、データ処理の負荷を分散することが可能となる。更に、1つの実際のノードに対して複数の仮想的な識別子(以下、仮想識別子)を割り当て、この仮想識別子それぞれの担当するID空間5上の領域の全てを実際のノードが管理することによって、負荷分散性を更に向上する方法もある。
コンシステント・ハッシュ法の特徴は、分散処理システムを構成するノードが増減した際に、各ノード間で分担していたデータの担当替えが一部に限定され、ノード数に依らず所定量のデータ移動しか発生しないことである。
このようなコンシステント・ハッシュ法の適用例の1つとして、SIP Servlet(非特許文献2)コンテナのようなセッション制御を行うアプリケーションサーバの実装が考えられる。
SIP Servletとは、セッション制御プロトコルの1つであるSIP(Session Initiation Protocol)を用いるサーバアプリケーションを簡易に実装可能にするJava(登録商標)用のAPI(Application Programming Interface)の規定であり、これを実装したものがSIP Servletコンテナである。このようなSIPのアプリケーションサーバに於いては、SIPに於いてB2BUA(Back-to-Back User Agent)と呼ばれる、2つのセッション状態を関連付けて管理する形態が用いられることが多い。SIP Servletではこの2つ(ないしそれ以上)の関連するセッション状態を、SAS(SIP Application Session)というデータ集合に格納するものとし、SIP Servletコンテナの多くの実装に於いて、このSAS(データ集合)の単位でデータを格納している。
コンシステント・ハッシュ法をSIP Servletコンテナに適用する場合には、このSAS(データ集合)を単位として、SAS(データ集合)の識別子に基づいて、どのノードにSAS(データ集合)を割り当てるかを判断する。更に、クライアントからのSIP信号にSAS(データ集合)の識別子をパラメータとして含ませる。これにより、指定したSAS(データ集合)を管理するノードに対して、信号を転送することができる。
D. Karger, E. Lehman, T. Leighton, M. Levine, D. Lewin, and R. Panigrahy、"Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web"、in Proceedings of the 29th ACM Symposium on Theory of Computing (STOC'97)、May 1997、pp.654-663、[online]、[平成24年9月26日検索]、インターネット<URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf> Java Community Process、"JSR 289: SIP Servlet v1.1"、[online]、Aug. 2008.[平成24年9月20日検索]、インターネット<URL:http://jcp.org/en/jsr/detail?id=289>
SIP Servletの規定では、データ集合(SAS)間のデータ(セッション状態データ)の移動は認められていない。一方で、サービスの可能性としては、例えばある端末A,B間の通話と、別の端末C,D間の通話が存在しているときに、一方の話者をスワップし、端末A,D間と端末C,B間の通話に切り替えるようなサービスというものが考えられる。これはSIP Servletを利用したSIPアプリケーション上では、端末Aに対するセッション状態データと端末Bに対するセッション状態データとを含むデータ集合であるSAS−αから、端末Cに対するセッション状態データと端末Dに対するセッション状態データとを含むSAS−βに、端末Bに対するセッション状態データを移動し、逆にSAS−βからSAS−αに端末Dに対するセッション状態データを移動する操作によって実現される。
このようなサービスを実現するために、前記した操作をSIP Servletの規定を拡張することで許容した場合も、SIP Servletコンテナの適用には実装上は困難が伴う。前記したように、コンシステント・ハッシュ法をSIP Servletコンテナに適用する場合は、一般にSAS(データ集合)の単位でデータを格納し、SAS(データ集合)の識別子を指定した信号を転送している。しかし、SAS(データ集合)間のデータ移動を許容した場合、SAS(データ集合)の識別子を指定した信号の転送を行っても、転送した先のSAS(データ集合)から指定したデータが移動してしまっている可能性があり、指定したデータを格納するノードに転送することができない。
本発明ではSIPのように、サーバ側でデータ集合間でのデータの移動があったことをクライアント側が関知しないプロトコルを扱うサーバを対象としている。そのためクライアントは、データの移動前後で変わらず移動前のSAS(データ集合)の識別子を指定した信号を送信する。
これに対し、最も単純にSAS(データ集合)間のデータの移動をSIP Servletコンテナに適用させるには、データ集合(SAS)の単位で転送する前に、個々のデータ(セッション状態データ)の単位で転送を行う方法が考えられる。
この方法に於いて、各ノードは、SAS(データ集合)の識別子に対応させて、そのSAS(データ集合)に関連するセッション状態データを格納する。それに加えて、各ノードは、セッション状態データの識別子に対応させて、そのセッション状態データを格納しているSAS(データ集合)の識別子を格納する。セッション状態データに対するアクセス要求信号を受信した際には、まずアクセス要求信号に含まれたパラメータである指定セッションの識別子を参照して、コンシステント・ハッシュ法により、指定セッション状態データを担当(格納)するノードを特定して、特定したノードに対してアクセス要求信号を転送する。次に、転送されたアクセス要求信号を受信したノードは、このノードが保持するセッション識別子に対応するSAS(データ集合)の識別子から、指定セッションを格納するSAS(データ集合)を担当(格納)するノードに対して、更にアクセス要求信号を転送する。
すなわち、初回はデータの識別子に基づく転送を行い、2回目は、当該データを格納するデータ集合の識別子に基づく転送を行う。これによって、データ集合間でデータが移動した場合も、移動先データ集合を保持するノードに対してアクセス要求信号を転送することが可能になる。
しかし、この方法では、データの移動の有無に関わらず、全てのデータに対する信号について2段階の転送が必要となり、全ての信号の処理時間が増大してしまうという欠点がある。
そこで、本発明は、データ集合間のデータ移動を許容した分散処理システムに於いて、データの転送回数を削減し、よってデータの処理時間を削減できる分散データ管理プログラムおよび分散データ管理装置を提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明では、散データ管理システム内で処理を実行する各ノードに搭載される分散データ管理プログラムであって、各前記ノードは、1または複数のデータを含むデータ集合および当該データ集合の識別子を格納するデータ部と、前記データ集合の識別子を参照して、前記データ集合がいずれのノードに格納されているかを特定する処理部と、を備えており、指定されたデータである指定データを移動先データ集合に移動する移動要求を受けるステップと、前記指定データを含むデータ集合である指定データ集合を格納する格納先ノードを特定するステップと、を各前記ノードの前記処理部に実行させ、更に前記格納先ノードが自ノードならば、前記移動先データ集合の識別子を参照して前記指定データの移動先である移動先ノードを特定するステップと、前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動するステップと、前記指定データに含まれる移動元データ集合の識別子の情報を参照して移動元ノードを特定するステップと、を各前記ノードの前記処理部に実行させ、更に前記自ノードが前記移動元ノードでないならば、前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するステップ、を各前記ノードの前記処理部に実行させるための分散データ管理プログラムとした。
請求項7に記載の発明では、複数のノードである分散データ管理装置が協調して動作する分散データ管理システムに於いて、1または複数のデータを含むデータ集合および当該データ集合の識別子を格納する記憶部と、指定データを移動先データ集合に移動する移動要求を受信すると、前記指定データを含む指定データ集合の格納先ノードを特定する転送先決定部と、前記格納先ノードが自ノード以外ならば、前記格納先ノードに前記移動要求を転送する信号転送部と、前記格納先ノードが前記自ノードならば、前記移動先データ集合の識別子を参照して前記指定データの移動先ノードを特定して、前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動して、前記指定データの移動元データ集合の識別子を参照して移動元ノードを特定するデータ移動部と、前記自ノードが前記移動元ノードでないならば、前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するデータ保存部と、を備えることを特徴とする分散データ管理装置とした。
このようにすることで、指定データを移動するたびに、当該指定データの移動元データに含まれる移動先情報を常に更新しているので、移動しているデータに係る要求を、2回以下の転送で処理することができる。これにより、データの移動の有無に関らず、そのデータを処理する要求(信号)の転送回数を削減し、データの処理時間を削減することができる。
請求項2に記載の発明では、前記移動元ノードに対して前記移動元データ集合に含まれる前記移動元データに、前記移動先データ集合の識別子の情報を設定する要求を送信するステップを前記処理部に実行させたのち、前記指定データ集合に含まれる前記指定データに係る情報を全て削除するステップ、を各前記ノードの前記処理部に実行させるための請求項1に記載の分散データ管理プログラムとした。
このようにすることで、指定データをデータ集合間で何回移動しても、当該指定データに係る情報を、移動元データ集合と移動先データ集合の2箇所のみに限定することができる。これにより、使用される記憶容量を削減することができる。
請求項3に記載の発明では、移動する前記指定データの実体を受信するステップを前記処理部に実行させ、前記移動先データ集合の識別子が前記移動元データ集合の識別子と異なるならば、前記移動先データ集合に前記指定データの実体を設定するステップと、前記移動先データ集合に前記指定データの前記移動元データ集合の識別子の情報を設定するステップと、を前記処理部に実行させ、前記移動先データ集合の識別子が前記移動元データ集合の識別子と同一ならば、前記移動先データ集合に前記指定データの実体を設定するステップと、前記移動先データ集合前記指定データから前記移動元データ集合の識別子の情報を削除するステップと、を前記処理部に実行させるための請求項1または請求項2に記載の分散データ管理プログラムとした。
このようにすることで、当該指定データの移動が2回以上行われたときであっても、移動先データ集合を格納するノードから、移動元データ集合を格納するノードに対して、新たな移動先データ集合の識別子を送信することができる。
更に、当該データが生成されたときの移動元データ集合に当該データが移動されたときには、移動元情報を削除して、当該データが生成されたときの状態に戻すことができる。これにより、使用される記憶容量を削減することができる。
請求項4に記載の発明では、前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子、前記指定データ集合の識別子、および、前記移動先データ集合の識別子が含まれている、ことを特徴とする請求項1ないし請求項3のいずれか1項に記載の分散データ管理プログラムとした。
このようにすることで、各ノードは、移動要求に含まれている指定データ集合の識別子に基づいて、指定データが格納されているデータ集合を迅速に特定することができる。
請求項5に記載の発明では、各前記ノードの前記処理部は更に、各前記データの識別子を参照して当該データが格納されている前記データ集合を特定する手段を備え、前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子と前記移動先データ集合の識別子とが含まれている、ことを特徴とする請求項1ないし請求項4のいずれか1項に記載の分散データ管理プログラムとした。
このようにすることで、移動要求に含まれるパラメータを減らすことができるので、ネットワーク負荷を軽減することができる。
請求項6に記載の発明では、前記指定データへのアクセス要求を受信するステップと、前記指定データを含む前記指定データ集合の前記格納先ノードを特定するステップと、を前記処理部に実行させ、更に前記格納先ノードが前記自ノード以外ならば、前記格納先ノードに前記アクセス要求を転送するステップを、前記格納先ノードが前記自ノードならば、前記指定データ集合から前記指定データに係る情報を取得するステップを前記処理部に実行させ、更に、前記指定データの実体が存在したならば、前記アクセス要求を実行するステップを前記処理部に実行させ、前記指定データの実体が存在しなかったならば、前記指定データの前記移動先データ集合の識別子の情報に基づいて、前記移動先ノードを決定するステップと、前記移動先ノードに前記アクセス要求を転送するステップと、を前記処理部に実行させるための請求項1ないし請求項5のいずれか1項に記載の分散データ管理プログラムとした。
このようにすることで、移動していないデータに係る要求は転送無しに処理できると共に、移動しているデータについても、2回以下の転送回数で、当該要求を格納先ノードに転送して処理することができる。更に、そのデータを処理する要求(信号)の転送回数を削減し、データの処理時間を削減することができる。
本発明によれば、データ集合間のデータ移動を許容した分散処理システムに於いて、データの転送回数を削減し、よってデータの処理時間を削減することができる。
本実施形態に於ける分散データ管理システムを示す概略の構成図である。 本実施形態に於ける分散データ管理プログラムを示す概略の構成図である。 本実施形態に於けるデータ集合の例を示す図である。 本実施形態に於けるデータの移動要求処理を示すフローチャートである。 本実施形態に於けるデータの保存処理と移動先更新処理を示すフローチャートである。 本実施形態に於けるデータ集合間のデータ移動処理(その1)を示すシーケンス図である。 本実施形態に於けるデータ集合間のデータ移動処理(その2)を示すシーケンス図である。 本実施形態に於けるアクセス要求処理を示すフローチャートである。 本実施形態に於けるアクセス要求を示すシーケンス図である。 コンシステント・ハッシュ法に於けるID空間を示す図である。
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
(本実施形態の構成)
図1は、本実施形態に於ける分散データ管理システムを示す概略の構成図である。
分散データ管理システム1は、全て同一の複数のノード(1)4−1、ノード(2)4−2、…、ノード(n)4−nを有している。ノード(1)4−1、ノード(2)4−2、…、ノード(n)4−nは、アプリケーション41と分散データ管理プログラム42とを実行している。以下、ノード(1)4−1、ノード(2)4−2、…、ノード(n)4−nを特に区別しないときには、単にノード4と記載する。ノード4は、ロードバランサ3を介してクライアント2−1〜2−mに接続されている。ノード4は、各ノード4に分散されているデータを管理する分散データ管理装置である。この分散データ管理システム1は、複数のノード4が協調して動作することにより、各ノード4に分散されているデータ集合およびデータを管理するものである。
クライアント2−1〜2−mは、ロードバランサ3を介して各ノード4に接続されている。以下、クライアント2−1〜2−mを特に区別しないときには、単にクライアント2と記載する。クライアント2は、ロードバランサ3を介してノード4に要求を送信することによって、この分散データ管理システム1上のデータの取得や保存を行うものである。
ロードバランサ3は、各クライアント2と各ノード4との間に配置されている。クライアント2は、各ノード4に対して直接にアクセスが可能である。しかし、ロードバランサ3は、特定のノード4に負荷が集中しないように、クライアント2からの要求を無作為にノード4に振り分けている。
分散データ管理プログラム42は、分散データ管理装置であるノード4上で実行され、各ノード4に分散されているデータを管理するためのソフトウェアプログラムである。
アプリケーション41は、分散データ管理装置であるノード4上で実行されて、各データを利用して所定のプロトコル処理を行うためのソフトウェアプログラムである。分散データ管理プログラム42は、ノード4の図示しないHDD(Hard Disk Drive)などに記憶され、ノード4の図示しないCPU(Central Processing Unit)によって実行されて、分散データなどを記憶するデータ部421と、記憶した分散データなどを処理する処理部422とを具現化するものである。
アプリケーション41は、例えば、分散データ管理プログラム42に対して状態データを保存し、この状態データを利用してSIP信号の処理を行うSIPアプリケーションなどである。
図2は、本実施形態に於ける分散データ管理プログラムを示す概略の構成図である。
分散データ管理プログラム42は、分散データなどを記憶するデータ部421と、記憶した分散データなどを処理する処理部422とを具現化する。
データ部421は、データ集合の識別子と当該データ集合の値とが対として格納されるデータ群4211と、各ノード4の識別子と当該ノード4のアドレスとが対として格納されるアドレス表4212とを格納している。更に、データ部421の各データ集合の値は、1または複数のデータを含んでいる。本実施形態では、データ集合の識別子やセッション状態データの識別子やノードの識別子としてハッシュ値を用いており、図2では8桁の16進数で示している。しかし、これに限られず、任意長かつ任意の値を識別子として用いてもよい。
処理部422は、受信した信号によって指定された指定データの格納先であるノード(格納先ノード)を決定する転送先決定部4221と、転送先である格納先ノードに信号を転送する信号転送部4222と、ノード4を追加するノード追加部4223と、ノード4を削除するノード削除部4224と、データ集合の格納先ノードに於いて信号の要求に基づいてデータの取得を行うデータ取得部4225と、データ集合間でデータを移動するデータ移動部4226と、このデータ集合の格納先ノードに於いて、信号の要求に基づいてデータの保存、作成または更新を行うデータ保存部4227とを備えている。
処理部422は、データ集合の識別子によって、このデータ集合がいずれのノード4に格納されているかを特定する機能を有している。
転送先決定部4221は、例えば、移動要求を受信し、この移動要求によって指定された指定データを、この移動要求に含まれた移動先の識別子で示される移動先のデータ集合(移動先データ集合:図3(b))に移動する際に、この指定データを含むデータ集合(指定データ集合)の格納先ノードを特定する。
信号転送部4222は、例えば、転送先決定部4221が特定した格納先ノードが自ノード以外ならば、格納先ノードに対して移動要求を転送するものである。
データ取得部4225は、信号の要求を受信した際に、この信号で指定されたデータ集合の識別子とデータの識別子とに基づいて、要求されたデータの取得を行うものである。
データ移動部4226は、例えば、転送先決定部4221が特定した格納先ノードが自ノードならば、移動先データ集合の識別子を参照して指定データの移動先ノードを特定して、移動先ノードの移動先データ集合に、指定データの実体を移動するものである。更にデータ移動部4226は、指定データに係る移動元情報(SessionX.orgParent:図3(b))を参照して移動元集合を特定し、更に移動元ノードを特定する。
データ保存部4227は、にデータ移動部4226が特定した移動元ノードが自ノードならば、移動元データ集合に含まれるデータ(移動元データ)に、移動先データ集合の識別子の情報および指定データの実体が存在しない旨の情報を設定するものである。
図3(a),(b)は、本実施形態に於けるデータ集合の例を示す図である。
図3(a)は、新たに生成されたデータ(セッション情報)を示す図である。
ノード(2)4−2は、識別子1740f0d5のデータ集合を有している。識別子1740f0d5のデータ集合は、このデータ集合の値として、1または複数のセッション状態データを含んでいる。セッション状態データであるSession1は、その識別子であるSession1.idの値が3c2af102であり、セッション状態データの実体の存在情報であるSession1.existの値が「true」(真)であり、セッション状態データの実体であるSession1.stateの値が「confirmed」(確立状態)である。
図3(b)は、移動されたデータ(セッション情報)を示す図である。
ここでは、識別子1740f0d5のデータ集合(移動元データ集合)から、識別子d14ec862のデータ集合(移動先データ集合)へと、識別子3c2af102のセッション状態データを移動したあとの状態を示している。
識別子1740f0d5のデータ集合に於いて、セッション状態データであるSession1は、その識別子であるSession1.idの値が3c2af102であり、セッション状態データの実体の存在情報であるSession1.existの値が「false」(偽)であり、このデータに係る移動先情報として、Session1.curParentの値にd14ec862が設定されている。移動元データ集合に含まれるセッション状態データは、移動元のデータ(移動元データ)に係る情報である。このデータに係る移動先情報には、移動先データ集合の識別子の情報が設定されている。分散データ管理プログラム42の実行によって具現化された処理部422は、移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。
以下、SessionXとして、セッション状態データ全般を示し、SessionX.idとしてセッション状態データの識別子を示し、SessionX.existとしてセッション状態データの存在情報を示し、SessionX.curParentとして、セッション状態データに係る移動先情報を示す場合がある。
移動先である識別子d14ec862のデータ集合(移動先データ集合)に於いて、セッション状態データは、Session2という名前で管理されている。セッション状態データであるSession2は、その存在を示すSession2.existという値が「true」(真)であり、その状態を示すSession2.stateの値が「confirmed」(確立状態)である。移動先データ集合に含まれるセッション状態データは、移動先のデータ(移動先データ)に係る情報である。本実施形態に於いて、セッション状態データへのアクセス要求に対しては、セッション状態を示すSession2.stateの値が応答される。セッション状態を示すSession2.stateは、セッション状態データの実体である。セッション状態データであるSession2は、その移動元データ集合の識別子の情報である1740f0d5という値がSession2.orgParentに設定される。
以下、SessionX.stateとしてセッション状態データの実体を示し、SessionX.orgParentとして、セッション状態データに係る移動元情報を示す場合がある。
データ集合間を移動した図3(b)のデータを、再度移動する場合に、このノード(3)4−3は、この移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードであるノード(2)4−2を特定する。ノード(3)4−3は更に、移動元ノードであるノード(2)4−2にアクセスし、移動元データ集合に含まれる移動元データに係る移動先情報(Session1.curParent)を、再度の移動先データ集合の識別子の情報に設定する。この処理の詳細は、後記する図4と図5に記載する。このような処理により、データ集合間でデータを何度移動しても、常に2回以下の信号の転送によって、指定データを含むデータ集合にアクセス信号を転送することができる。
本実施形態のノード4の処理部422は、一度移動したデータを、移動前のデータ集合に戻すように再び移動した場合は、後記する図5に示すように、移動先情報(SessionX.curParent)などを追加せず、一度も移動していないのと同じ状態(図3(a)参照)へと戻している。これにより、データを格納する領域を減らし、かつ処理時間を短縮することができる。
(本実施形態の動作)
図4は、本実施形態に於けるデータの移動要求処理を示すフローチャートである。
各ノード4は、分散データ管理プログラム42の実行によって処理部422を具現化する。この処理部422は、データの移動要求を受信すると、データの移動要求処理を開始する。以下のステップS30〜S41に於いて、処理の主体は全て同一のノード(自ノード)である。
ステップS30に於いて、処理部422は、クライアント2からロードバランサ3を介して受信したデータの移動要求を解釈する。データの移動要求は、例えば、移動対象となる指定データの識別子と、この指定データを含む指定データ集合の識別子と、移動先データ集合の識別子をパラメータとして含んでいる。
ステップS31に於いて、転送先決定部4221は、データの移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、この指定データ集合を格納するノード4である格納先ノードを特定する。
ステップS32に於いて、転送先決定部4221は、自ノードが格納先ノードであるか否かを判断する。転送先決定部4221は、当該判断条件が成立しなかったならば(No)、ステップS33の処理を行い、当該判断条件が成立したならば(Yes)、ステップS34の処理を行う。
ステップS33に於いて、信号転送部4222は、格納先ノードに対してデータの移動要求を転送し、図4の処理を終了する。
ステップS34に於いて、転送先決定部4221は、データの移動要求に含まれる移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。
ステップS35に於いて、データ移動部4226は、移動先ノードに対して、当該指定データの実体(SessionX.state)を移動先データ集合に移動する要求を送信する。
ステップS36に於いて、データ移動部4226は、当該指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードを特定する。なお、当該指定データが移動元情報(SessionX.orgParent)を有していないときには、自ノードが移動元ノードである。
ステップS37に於いて、データ移動部4226は、自ノードが移動元ノードであるか否かを判断する。データ移動部4226は、当該判断条件が成立しなかったならば(No)、ステップS38の処理を行い、当該判断条件が成立したならば(Yes)、ステップS40の処理を行う。
ステップS38に於いて、データ移動部4226は、移動元ノードに対して、当該指定データに係る移動先更新要求を送信する。
ステップS39に於いて、データ移動部4226は、当該指定データに係る情報を全て削除する。これにより、当該指定データに係る情報を、移動元データ集合と移動先データ集合の2箇所に限定し、使用する記憶容量を削減することができる。ステップS39の処理が終了すると、データ移動部4226は、図4の処理を終了する。
ステップS40に於いて、データ保存部4227は、移動元データ集合に、当該指定データに係る移動先情報(SessionX.curParent)の項目を追加する。
ステップS41に於いて、データ保存部4227は、当該指定データに係る移動先情報(SessionX.curParent)に、移動先データ集合の識別子を設定し、図4の処理を終了する。
自ノードが、移動要求に含まれた指定データ集合を含む格納先ノードでなかったときには、図4の処理のうち、ステップS30〜S33の処理を行う。
自ノードが格納先ノードであり、かつ、移動要求に含まれた指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合を含む移動元ノードであったときには、図4の処理のうち、ステップS30〜S32,S34〜S37,S40,S41の処理を行う。
自ノードが格納先ノードであり、かつ、移動要求に含まれた指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合を含む移動元ノードでなかったときには、図4の処理のうち、ステップS30〜S32,S34〜S39の処理を行う。
図5(a),(b)は、本実施形態に於けるデータの保存処理と移動先更新処理とを示すフローチャートである。
図5(a)は、データの保存処理を示すフローチャートである。
分散データ管理プログラム42の実行によって具現化された処理部422は、図4のステップS35で送信された指定データの実体(SessionX.state)と移動要求とを受信すると、データ保存処理を開始する。
ステップS50に於いて、処理部422は、指定データの実体(SessionX.state)と移動要求とを受信し、移動要求を解釈する。この移動要求は、例えば、移動対象となる指定データの識別子と、この指定データの新たな移動先データ集合の識別子と、移動元データ集合の識別子とを含んでいる。
ステップS51に於いて、データ保存部4227は、移動元データ集合と移動先データ集合とが同一であるか否かを判断する。データ保存部4227は、当該判断条件が成立しなかったならば(No)、ステップS52の処理を行い、当該判断条件が成立したならば(Yes)、ステップS55の処理を行う。
ステップS52に於いて、データ保存部4227は、移動先データ集合に当該指定データの実体(SessionX.state)を保存する。
ステップS53に於いて、データ保存部4227は、当該指定データに係る移動元情報(SessionX.orgParent)の項目を追加する。
ステップS54に於いて、データ保存部4227は、当該指定データに係る移動元情報(SessionX.orgParent)に移動元データ集合の識別子を設定し、図5(a)の処理を終了する。
ステップS55に於いて、データ保存部4227は、移動先データ集合に当該指定データの実体(SessionX.state)を保存する。
ステップS56に於いて、データ保存部4227は、当該指定データに係る移動先情報(SessionX.curParent)を削除し、図5(a)の処理を終了する。
図5(b)は、データの移動先更新処理を示すフローチャートである。
分散データ管理プログラム42の実行によって具現化された処理部422は、図4のステップS38で送信された移動先更新要求を受信すると、データの移動先更新処理を開始する。
ステップS60に於いて、処理部422は、受信した移動先更新要求を解釈する。この移動先更新要求には、例えば、指定データの識別子と、移動元データ集合の識別子と、移動先データ集合の識別子とを含んでいる。
ステップS61に於いて、データ保存部4227は、移動元データ集合と移動先データ集合とが同一であるか否かを判断する。データ保存部4227は、当該判断条件が成立しなかったならば(No)、ステップS62の処理を行い、当該判断条件が成立したならば(Yes)、図5(b)の処理を終了する。
ステップS62に於いて、データ保存部4227は、移動元データ集合が含んでいる当該指定データに係る移動先情報(SessionX.curParent)に、移動先データ集合の識別子を設定し、図5(b)の処理を終了する。
図6は、本実施形態に於けるデータ集合間のデータ移動処理(その1)を示すシーケンス図である。
このシーケンスS11〜S18は、ノード(2)4−2に指定データが新たに生成されたのち、ノード(1)4−1がアプリケーション41を実行し、指定データを、ノード(2)4−2からノード(3)4−3に移動するように要求した場合を示している。
シーケンスS11に於いて、ノード(1)4−1は、アプリケーション41を実行して、自ノードの分散データ管理プログラム42が具現化した処理部422に対して、データ移動要求を行う。この移動要求は、指定データを含む指定データ集合の識別子と、移動する指定データの識別子と、移動先データ集合の識別子とをパラメータとして含んでいる。
シーケンスS12に於いて、ノード(1)4−1は、分散データ管理プログラム42を実行して、データ移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納する格納先ノードを特定する。特定された格納先ノードは、ノード(2)4−2であるとする。以下のシーケンスでは、分散データ管理プログラム42の実行に係る記載を省略する。
シーケンスS13に於いて、ノード(1)4−1は、ノード(2)4−2に対して、データの移動要求を送信する。
シーケンスS14に於いて、ノード(2)4−2は、データ移動要求に含まれる移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。ここで、移動先ノードは、ノード(3)4−3である。図6に於いて、指定データは生成直後であり、一度も移動されていないものとする。
シーケンスS15に於いて、ノード(2)4−2は、ノード(3)4−3に対して、指定データの実体(SessionX.state)の移動要求を送信する。
シーケンスS16に於いて、ノード(2)4−2は、指定データに係る移動元情報(SessionX.orgParent)に格納されている移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードを特定する。ここで、移動元ノードは、自ノードであるノード(2)4−2である。
シーケンスS18に於いて、ノード(2)4−2は、移動元データ集合に含まれる指定データに係る移動先情報(SessionX.curParent)を更新する。ノード(2)4−2は、この指定データに係る移動先情報(SessionX.curParent)に、指定データの実体(SessionX.state)が保存されている移動先データ集合の識別子を設定する。
図7は、本実施形態に於けるデータ集合間のデータ移動処理(その2)を示すシーケンス図である。図6に示すデータ移動処理(その1)と同一の要素には同一の符号を付与している。
このシーケンスS11〜S18aは、分散データ管理システム1が、図6に示すシーケンスS11〜S18を実行した後に、更にノード(1)4−1がアプリケーション41を実行し、指定データを、ノード(3)4−3からノード(4)4−4に移動するように要求した場合を示している。
シーケンスS11に於いて、図6のシーケンスS11と同様に、ノード(1)4−1は、アプリケーション41を実行して、自ノードの分散データ管理プログラム42の実行によって具現化した処理部422に対して、データ移動要求を行う。この移動要求は、指定データを含む指定データ集合の識別子と、移動する指定データの識別子と、移動先データ集合の識別子とをパラメータとして含んでいる。
シーケンスS12に於いて、図6のシーケンスS12と同様に、ノード(1)4−1は、分散データ管理プログラム42を実行して、データの移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納する格納先ノードを特定する。ここで特定された格納先ノードは、ノード(3)4−3である。なお、以下のシーケンスでは、分散データ管理プログラム42の実行の記載を省略する。
シーケンスS13aに於いて、ノード(1)4−1は、ノード(3)4−3に対して、データの移動要求を送信する。
シーケンスS14aに於いて、ノード(3)4−3は、データの移動要求に含まれる移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。ここでは、移動先ノードは、ノード(4)4−4である。図7に於いて、指定データは既に1度移動済みであるため、指定データに係る移動元情報(SessionX.orgParent)に格納されていた移動元データ集合の識別子を取得し、一時的に保存しておく。
シーケンスS15aに於いて、ノード(3)4−3は、移動先であるノード(4)4−4に対して、指定データの実体(SessionX.state)の移動要求を送信する。
シーケンスS16aに於いて、ノード(3)4−3は、先ほど保存しておいた移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードを特定する。ここで、特定した移動元ノードは、ノード(2)4−2である。
シーケンスS17aに於いて、ノード(3)4−3は、ノード(2)4−2に対して、指定データの移動先更新要求を送信する。これにより、ノード(3)4−3は、ノード(2)4−2に対して、指定データの実体(SessionX.state)をノード(3)4−3からノード(4)4−4の移動先データ集合に移動したことを通知する。
シーケンスS18aに於いて、ノード(2)4−2は、指定データに係る移動先情報(SessionX.curParent)を、指定データの実体(SessionX.state)を含んだ移動先データ集合の識別子に更新する。
図8は、本実施形態に於けるアクセス要求処理を示すフローチャートである。
分散データ管理プログラム42の実行により具現化された処理部422は、データのアクセス要求を受信すると、アクセス要求処理を開始する。以下のステップS70〜S80に於いて、処理の主体は全て同一のノード(自ノード)である。
ステップS70に於いて、処理部422は、データのアクセス要求を受信し、アクセス要求を解釈する。このアクセス要求は、例えば、アクセスの対象となる指定データの識別子と、この指定データを含む指定データ集合の識別子とを含んでいる。
ステップS71に於いて、データ取得部4225は、データのアクセス要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納するノード4である格納先ノードを特定する。
ステップS72に於いて、データ取得部4225は、自ノードが格納先ノードであるか否かを判断する。データ取得部4225は、当該判断条件が成立しなかったならば(No)、ステップS73の処理を行い、当該判断条件が成立したならば(Yes)、ステップS74の処理を行う。
ステップS73に於いて、データ取得部4225は、格納先ノードに対してアクセス要求を転送し、図8の処理を終了する。
ステップS74に於いて、データ取得部4225は、指定データ集合から、アクセス要求で指定された当該指定データを取得する。
ステップS75に於いて、データ取得部4225は、当該指定データの実体(SessionX.state)が存在するか否かを判断する。データ取得部4225は、当該判断条件が成立しなかったならば(No)、ステップS78の処理を行い、当該判断条件が成立したならば(Yes)、ステップS76の処理を行う。
ステップS76に於いて、データ保存部4227は、当該指定データの実体(SessionX.state)に対して、アクセス要求を実行する。
ステップS77に於いて、データ保存部4227は、アクセス要求の実行結果を、アクセス要求の送信元であるクライアント2に応答し、図8の処理を終了する。
ステップS78に於いて、データ保存部4227は、当該指定データに係る移動先情報(SessionX.curParent)に格納された移動先データ集合の識別子を取得する。
ステップS79に於いて、データ保存部4227は、移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。
ステップS80に於いて、データ保存部4227は、移動先ノードに対して、当該指定データへのアクセス要求を転送し、図8の処理を終了する。
自ノードが、アクセス要求に含まれた指定データ集合を含む格納先ノードでなかったときには、図8の処理のうち、ステップS70〜S73の処理を行う。
自ノードが、アクセス要求に含まれた指定データ集合を含む格納先ノードであり、かつ、指定データ集合に当該指定データの実体(SessionX.state)が存在していなかったときには、図8の処理のうち、ステップS70〜S72,S74,S75,S78〜S80の処理を行う。
自ノードが、アクセス要求に含まれた指定データ集合を含む格納先ノードであり、かつ、指定データ集合に当該指定データの実体(SessionX.state)が存在していたときには、図8の処理のうち、ステップS70〜S72,S74〜S77の処理を行う。
図9は、本実施形態に於けるアクセス要求の送受信の一例を示すシーケンス図である。
このシーケンスS01〜S09は、分散データ管理システム1が、クライアント2が送信したアクセス要求を受信して、このアクセス要求に対する応答信号を送信する場合を示している。このシーケンスS01〜S09に於いて、図3(b)に示すように、ノード(2)4−2が、移動元データ集合を格納しており、ノード(3)4−3が、移動先データ集合を格納している。
シーケンスS01に於いて、クライアント2は、ロードバランサ3に対してアクセス要求を送信する。このアクセス要求は、アクセスの対象となる指定データの識別子3c2af102と、この指定データを含む指定データ集合の識別子1740f0d5とをパラメータとして含んでいる。
シーケンスS02に於いて、ロードバランサ3は、無作為にいずれかのノード4に、アクセス要求を振り分ける。ここでは、ロードバランサ3は、アクセス要求をノード(1)4−1に振り分けている。
シーケンスS03に於いて、ノード(1)4−1は、分散データ管理プログラム42を実行して、アクセス要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納している格納先のノード4を特定する。ここでは、ノード(2)4−2が、格納先として特定されている。以下のシーケンスでは、分散データ管理プログラム42の実行に関する記載を省略する。
シーケンスS04に於いて、ノード(1)4−1は、ノード(2)4−2に対して、このアクセス要求を転送する。このアクセス要求は、アクセスの対象となる指定データの識別子3c2af102と、この指定データを含む指定データ集合の識別子1740f0d5とをパラメータとして含んでいる。
シーケンスS05に於いて、ノード(2)4−2は、指定データ集合に含まれる指定データに係る情報を取得する。ここでは指定データの存在を表す値が、「false」(偽)であり、指定データの実体(Session1.state)に代わり、指定データに係る移動先情報(Session1.curParent)が残されている。ここで指定データ集合は、図3(b)に示す移動元データ集合である。
シーケンスS06に於いて、ノード(2)4−2は、指定データに係る移動先情報(Session1.curParent)に設定された移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、転送先のノード4を特定する。ここで特定した転送先は、ノード(3)4−3である。ノード(2)4−2は更に、アクセス要求に含まれる指定データ集合の識別子として、移動先データ集合の識別子d14ec862を設定する。
シーケンスS07に於いて、ノード(2)4−2は、アクセス要求を、ノード(3)4−3に転送する。このアクセス要求には、アクセスの対象となる指定データの識別子3c2af102と、この指定データの本体を含む移動先データ集合の識別子d14ec862とをパラメータとして含んでいる。
シーケンスS08に於いて、ノード(3)4−3は、アクセス要求を受信したので、アクセス要求に含まれる指定データ集合の識別子d14ec862に基づき、指定データ集合を取得し、更に指定データの識別子3c2af102に基づき、指定データの実体(Session2.state)にアクセスする。ここで指定データ集合は、図3(b)に示す移動先データ集合である。
シーケンスS09に於いて、ノード(3)4−3は、アプリケーション41により、指定データの実体(Session2.state)に所定の処理を行う。ここで、ノード(3)4−3のアプリケーション41は、指定データの実体(Session2.state)を含む応答信号をクライアント2に応答することにより、指定データの実体(Session2.state)をクライアント2に送信する処理を行う。
(本実施形態の効果)
以上説明した本実施形態では、次の(A)〜(F)のような効果がある。
(A) データ集合間のデータ移動を許容した分散処理システムに於いて、移動しているデータに係る要求(信号)を、2回以下の転送で処理することができる。これにより、データの転送が行われた場合でも、そのデータを処理する要求(信号)の転送回数を削減し、データの処理時間を削減することができる。
(B) データ集合間のデータ移動を許容した分散処理システムに於いて、移動していないデータに係る要求(信号)は、転送無しに処理することができる。更に、そのデータを処理する要求(信号)の転送回数を削減し、データの処理時間を削減することができる。
(C) 指定データをデータ集合間で何回移動しても、当該指定データに係る情報を、移動元データ集合と移動先データ集合の2箇所のみに限定することができる。これにより、使用される記憶容量を削減することができる。
(D) 移動先データの識別子と対応づけて移動元情報(SessionX.orgParent)が設定されているので、指定データの移動が2回以上行われたときであっても、移動先データ集合を格納する移動先ノードから、移動元データ集合を格納する移動元ノードに対して、新たな移動先データ集合の識別子を送信することができる。
(E) データが生成されたときの移動元データ集合に、当該データが移動されたとき、当該データが生成された状態に戻っている。これにより、使用される記憶容量を更に削減することができる。
(F) 移動要求には指定データ集合の識別子が含まれているので、各ノード4は、移動要求を受信した際に、指定データが格納されているデータ集合を迅速に特定することができる。
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)〜(d)のようなものがある。
(a) 上記実施形態では、処理部422は、各種要求に含まれる指定データの識別子と指定データ集合の識別子の両方を用いて指定データを検索している。しかし、これに限られず、処理部422は、データの識別子から当該データが格納されているデータ集合の識別子を特定する手段を設けて、各種要求に含まれる指定データの識別子のみを用いて、指定データを検索してもよく、本発明では何ら制限しない。これにより、各種要求(信号)に含まれるパラメータの個数を減らすことができ、ネットワーク負荷を軽減することができる。
(b) データ集合間のデータ移動が発生する契機については、何らかの信号受信や、所定周期ごとの定期処理などが考えられる。しかし、これは分散データ管理プログラム42上で提供されるサービス、つまり分散データ管理プログラム42上で実行されるアプリケーション41に依存するものであり、本発明では何ら制限しない。
(c) 上記実施形態では、各ノード4が、分散データ管理プログラム42を実行することにより、分散データを管理している。しかし、これに限られず、データ群4211とアドレス表4212とを格納するデータ部と、処理部422と同様な処理部を備える分散データ管理装置によって各ノード4を構成してもよく、本発明では何ら制限しない。
(d) 上記実施形態では、ノード4の処理部422は、コンシステント・ハッシュ法により、データ集合の識別子を参照し、当該データ集合が格納されているノード4を特定している。しかし、これに限られず、ノード4の処理部422は、データ集合の識別子を参照して当該データ集合が格納されているノード4を特定することができる任意の方法を用いてもよく、本発明では何ら制限しない。
1 分散データ管理システム
2 クライアント
3 ロードバランサ
4 ノード (分散データ管理装置)
41 アプリケーション
42 分散データ管理プログラム
421 データ部
4211 データ群
4212 アドレス表
422 処理部
4221 転送先決定部
4222 信号転送部
4223 ノード追加部
4224 ノード削除部
4225 データ取得部
4226 データ移動部
4227 データ保存部
5 ID空間
6 ノードの識別子
7 データ集合の識別子

Claims (7)

  1. 散データ管理システム内で処理を実行する各ノードに搭載される分散データ管理プログラムであって、
    各前記ノードは、
    1または複数のデータを含むデータ集合および当該データ集合の識別子を格納するデータ部と、
    前記データ集合の識別子を参照して、前記データ集合がいずれのノードに格納されているかを特定する処理部と、を備えており、
    指定されたデータである指定データを移動先データ集合に移動する移動要求を受けるステップと、
    前記指定データを含むデータ集合である指定データ集合を格納する格納先ノードを特定するステップと、
    を各前記ノードの前記処理部に実行させ、
    更に前記格納先ノードが自ノードならば、
    前記移動先データ集合の識別子を参照して前記指定データの移動先である移動先ノードを特定するステップと、
    前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動するステップと、
    前記指定データに含まれる移動元データ集合の識別子の情報を参照して移動元ノードを特定するステップと、
    を各前記ノードの前記処理部に実行させ、
    更に前記自ノードが前記移動元ノードでないならば、
    前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するステップ、
    を各前記ノードの前記処理部に実行させるための分散データ管理プログラム。
  2. 前記移動元ノードに対して前記移動元データ集合に含まれる前記移動元データに、前記移動先データ集合の識別子の情報を設定する要求を送信するステップを前記処理部に実行させたのち、
    前記指定データ集合に含まれる前記指定データに係る情報を全て削除するステップ、
    を各前記ノードの前記処理部に実行させるための請求項1に記載の分散データ管理プログラム。
  3. 移動する前記指定データの実体を受信するステップを前記処理部に実行させ、
    前記移動先データ集合の識別子が前記移動元データ集合の識別子と異なるならば、
    前記移動先データ集合に前記指定データの実体を設定するステップと、
    前記移動先データ集合に前記指定データの前記移動元データ集合の識別子の情報を設定するステップと、を前記処理部に実行させ、
    前記移動先データ集合の識別子が前記移動元データ集合の識別子と同一ならば、
    前記移動先データ集合に前記指定データの実体を設定するステップと、
    前記移動先データ集合前記指定データから前記移動元データ集合の識別子の情報を削除するステップと、
    を前記処理部に実行させるための請求項1または請求項2に記載の分散データ管理プログラム。
  4. 前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子、前記指定データ集合の識別子、および、前記移動先データ集合の識別子が含まれている、
    ことを特徴とする請求項1ないし請求項3のいずれか1項に記載の分散データ管理プログラム。
  5. 前記処理部は更に、
    各前記データの識別子を参照して当該データが格納されている前記データ集合を特定する手段を備え、
    前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子と前記移動先データ集合の識別子とが含まれている、
    ことを特徴とする請求項1ないし請求項4のいずれか1項に記載の分散データ管理プログラム。
  6. 前記指定データへのアクセス要求を受信するステップと、
    前記指定データを含む前記指定データ集合の前記格納先ノードを特定するステップと、
    を前記処理部に実行させ、
    更に前記格納先ノードが前記自ノード以外ならば、前記格納先ノードに前記アクセス要求を転送するステップを、前記格納先ノードが前記自ノードならば、前記指定データ集合から前記指定データに係る情報を取得するステップを前記処理部に実行させ、
    更に、前記指定データの実体が存在したならば、前記アクセス要求を実行するステップを前記処理部に実行させ、前記指定データの実体が存在しなかったならば、前記指定データの前記移動先データ集合の識別子の情報に基づいて、前記移動先ノードを決定するステップと、前記移動先ノードに前記アクセス要求を転送するステップと、
    を前記処理部に実行させるための請求項1ないし請求項5のいずれか1項に記載の分散データ管理プログラム。
  7. 複数のノードである分散データ管理装置が協調して動作する分散データ管理システムに於いて、
    1または複数のデータを含むデータ集合および当該データ集合の識別子を格納する記憶部と、
    指定データを移動先データ集合に移動する移動要求を受信すると、前記指定データを含む指定データ集合の格納先ノードを特定する転送先決定部と、
    前記格納先ノードが自ノード以外ならば、前記格納先ノードに前記移動要求を転送する信号転送部と、
    前記格納先ノードが前記自ノードならば、前記移動先データ集合の識別子を参照して前記指定データの移動先ノードを特定して、前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動して、前記指定データの移動元データ集合の識別子を参照して移動元ノードを特定するデータ移動部と、
    前記自ノードが前記移動元ノードでないならば、前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するデータ保存部と、
    を備えることを特徴とする分散データ管理装置。
JP2012220477A 2012-10-02 2012-10-02 分散データ管理プログラムおよび分散データ管理装置 Expired - Fee Related JP5903022B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012220477A JP5903022B2 (ja) 2012-10-02 2012-10-02 分散データ管理プログラムおよび分散データ管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012220477A JP5903022B2 (ja) 2012-10-02 2012-10-02 分散データ管理プログラムおよび分散データ管理装置

Publications (2)

Publication Number Publication Date
JP2014074944A JP2014074944A (ja) 2014-04-24
JP5903022B2 true JP5903022B2 (ja) 2016-04-13

Family

ID=50749079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012220477A Expired - Fee Related JP5903022B2 (ja) 2012-10-02 2012-10-02 分散データ管理プログラムおよび分散データ管理装置

Country Status (1)

Country Link
JP (1) JP5903022B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5124733B2 (ja) * 2006-04-25 2013-01-23 キヤノンItソリューションズ株式会社 サーバ装置および情報共有システムおよびプログラムおよび記録媒体

Also Published As

Publication number Publication date
JP2014074944A (ja) 2014-04-24

Similar Documents

Publication Publication Date Title
JP6984097B2 (ja) エッジプロキシを持つコンテンツデリバリネットワークアーキテクチャ
US8082290B2 (en) Intelligent establishment of peer-to-peer communication
JP4938074B2 (ja) リソースの位置情報の要求方法、当該方法のためのユーザノードおよびサーバ
EP3087722B1 (en) Peer-to-peer network prioritizing propagation of objects through the network
WO2013078875A1 (zh) 内容的管理方法的方法、装置和系统
US8140645B2 (en) Index server support to file sharing applications
US10305729B2 (en) Systems and methods of providing an edge cloud storage and caching system operating over a local area network
JP2009501456A (ja) ピア・データ転送の統合
JP2012078902A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
CN111352716B (zh) 一种基于大数据的任务请求方法、装置、系统及存储介质
CN109547508B (zh) 一种实现资源访问的方法、装置及系统
US9760370B2 (en) Load balancing using predictable state partitioning
JP2011028547A (ja) 仮想マシン起動端末および仮想マシン起動プログラム
JP2012514278A (ja) インデックスサーバとその方法
US20220012110A1 (en) Networking-related system call interception and modification
JP5544521B2 (ja) 状態管理方法、処理装置、および状態管理プログラム
JP5903022B2 (ja) 分散データ管理プログラムおよび分散データ管理装置
JPWO2013186837A1 (ja) 情報処理システム、方法およびプログラム
EP4057577B1 (en) Addressing method and addressing apparatus
JP2007328736A (ja) リソース検索システム
CN103685367A (zh) 离线下载系统和方法
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
JP5690287B2 (ja) 負荷分散プログラムおよび負荷分散装置
CN104537081A (zh) 文件管理系统和方法
JP5452516B2 (ja) 分散処理装置、および、分散処理方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140502

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160311

R150 Certificate of patent or registration of utility model

Ref document number: 5903022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees