JP5733124B2 - データ管理装置、データ管理システム、データ管理方法、及びプログラム - Google Patents

データ管理装置、データ管理システム、データ管理方法、及びプログラム Download PDF

Info

Publication number
JP5733124B2
JP5733124B2 JP2011198772A JP2011198772A JP5733124B2 JP 5733124 B2 JP5733124 B2 JP 5733124B2 JP 2011198772 A JP2011198772 A JP 2011198772A JP 2011198772 A JP2011198772 A JP 2011198772A JP 5733124 B2 JP5733124 B2 JP 5733124B2
Authority
JP
Japan
Prior art keywords
data
data management
range
management device
request
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
JP2011198772A
Other languages
English (en)
Other versions
JP2013061739A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011198772A priority Critical patent/JP5733124B2/ja
Priority to US13/572,259 priority patent/US8832113B2/en
Publication of JP2013061739A publication Critical patent/JP2013061739A/ja
Application granted granted Critical
Publication of JP5733124B2 publication Critical patent/JP5733124B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ管理装置、データ管理システム、データ管理方法、及びプログラムに関する。
Key−Valueストア(以下、「KVS」という。)は、プログラミング言語における連想配列に相当する機能を提供するデータベース技術又はデータベースをいう。すなわち、KVSは、管理対象のデータ(値)に、任意のキーを対応付けて、キーとデータとの組を管理する。データへのアクセスは、キーの指定によって行われる。キーとデータとの組の配置先が、複数のノードに分散されている形態は、分散Key−Valueストア(以下、「分散KVS」という。)と呼ばれる。
分散KVSでは、キーのハッシュ値が写像された空間(以下、「ハッシュ空間」という。)が、複数に分割されて各ノードに割り当てられる。ハッシュ空間の分割方法の一つとして、コンシステントハッシュ(Consistent Hashing)が知られている。コンシステントハッシュでは、各ノードの識別名(例えば、サーバ名)のハッシュ値によって、ハッシュ空間の中で各ノードが担当する範囲(以下、「担当範囲」という。)が決定される。例えば、ノードA、B、及びCの三つのノードが存在し、ノードAのサーバ名のハッシュ値は「10」、ノードBのサーバ名のハッシュ値は「40」、ノードCのサーバ名のハッシュ値は「90」であるとする。なお、ハッシュ空間の全範囲は、0以上100以下であるとする。
この場合、例えば、ノードAの担当範囲は、10以上40未満となり、ノードBの担当範囲は、40以上90未満となり、ノードCの担当範囲は、90以上100未満及び0以上10未満となる。この状態は、例えば、図1に示されるように表現することができる。
図1は、コンシステントハッシュに基づくハッシュ空間の分割例を示す図である。同図における円周Hは、管理対象となるハッシュ空間を示す。円周H上において、A、B、又はCの文字が記された円は、ノードA、B、又はCを示す。範囲Haは、ノードAの担当範囲を示し、範囲Hbは、ノードBの担当範囲を示し、範囲Hcは、ノードCの担当範囲を示す。
クライアントは、アクセス対象のデータのキーのハッシュ値を算出し、当該ハッシュ値を担当範囲に含むノードに対して、アクセス要求を発行する。
特開2008−233968号公報 特許第4281658号公報 特開2007−323668号公報 特許第4418286号公報
コンシステントハッシュの場合、各ノードの担当範囲は、各ノードのサーバ名等に基づいて固定的に定まる。したがって、図1からも明らかなように、ノード間において担当範囲の大きさに大きな不均衡が生じる可能性がある。その結果、一部のノードにデータや負荷が偏る状態が容易に発生し、斯かる状態を是正するのが困難であるという問題がある。
そこで、1側面では、分散KVSにおけるデータの配置に関して柔軟性を向上させることのできるデータ管理装置、データ管理システム、データ管理方法、及びプログラムの提供を目的とする。
一つの案では、データを分散して管理する分散管理システムで利用可能なデータ管理装置において、所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて記憶する第1の記憶手段と、前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する通信手段と、前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を記憶する第2の記憶手段と、前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する制御手段とを備えたことを特徴とする。
一態様によれば、分散KVSにおけるデータの配置に関して柔軟性を向上させることができる。
コンシステントハッシュに基づくハッシュ空間の分割例を示す図である。 本発明の実施の形態におけるデータ管理システムの構成例を示す図である。 本発明の実施の形態におけるサーバ装置のハードウェア構成例を示す図である。 第一の実施の形態のデータ管理システムの機能構成例を示す図である。 データ操作処理の基本的な処理手順を説明するためのシーケンス図である。 クライアント装置における配置情報記憶部の構成例を示す図である。 サーバ装置における配置情報記憶部の構成例を示す図である。 サーバ情報記憶部の構成例を示す図である。 担当範囲情報記憶部の構成例を示す図である。 分割範囲の再配置処理の処理手順の一例を説明するためのシーケンス図である。 再配置中の配置情報記憶部の例を示す図である。 再配置後の配置情報記憶部の例を示す図である。 再配置中におけるPut要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。 再配置中におけるGet要求に応じて実行される第一の処理手順の一例を説明するためのシーケンス図である。 再配置中におけるGet要求に応じて実行される第二の処理手順の一例を説明するためのシーケンス図である。 第二の実施の形態のデータ管理システムの機能構成例を示す図である。 分割範囲の分割及び統合の処理手順の一例を説明するためのフローチャートである。 分割範囲の分割後の担当範囲情報記憶部の一例を示す図である。 分割範囲の分割後の配置情報記憶部の一例を示す図である。 第三の実施の形態のデータ管理システムの機能構成例を示す図である。 第三の実施の形態の配置情報記憶部の構成例を示す図である。 第三の実施の形態のサーバ情報記憶部の構成例を示す図である。 第三の実施の形態の担当範囲情報記憶部の構成例を示す図である。 第三の実施の形態においてGet要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。 第三の実施の形態においてPut要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。
以下、図面に基づいて本発明の実施の形態を説明する。図2は、本発明の実施の形態におけるデータ管理システムの構成例を示す図である。同図において、データ管理システム1は、サーバ装置10a、10b、及び10c等の複数のサーバ装置10と、一以上のクライアント装置20とを含む。各サーバ装置10及びクライアント装置20は、LAN(Local Area Network)又はインターネット等のネットワーク30(有線又は無線の別は問わない。)を介して通信可能とされている。
データ管理システム1は、分散Key−Valueストア(以下、「分散KVS」という。)として機能するコンピュータシステムである。すなわち、データ管理システム1では、キーとデータ(値)との複数の組が、複数のサーバ装置10に分散されて管理される。
各サーバ装置10は、Key−Valueストアとして機能する、データ管理するノードの一例である。各サーバ装置10は、当該サーバ装置10に割り当てられたハッシュ空間の範囲(以下、「担当範囲」という。)に属するキー及びデータの組を管理(記憶)する。キーは、データの識別情報又はラベルに相当する。キーとしては、データ名、ファイル名、データID等、各データを識別可能な情報を用いることができる。データの種別は所定のものに限定されない。例えば、数値、文字、文字列、文書データ、画像データ、動画データ、音声データ、又はその他の電子データ等、各種のデータが管理対象となりうる。
ハッシュ空間とは、キーに対して所定のハッシュ関数を適用して得られるハッシュ値が写像された空間をいう。または、ハッシュ空間は、当該ハッシュ値が取り得る範囲として捉えられてもよい。本実施の形態において、ハッシュ空間は、サーバ装置10の台数よりも大きな数に分割される。例えば、サーバ装置10の台数が「3」であれば、ハッシュ空間は4以上に分割される。ハッシュ空間の分割後の各範囲(以下、「分割範囲」という。)は、任意の方法によって各サーバ装置10に割り当てられる。すなわち、本実施の形態では、サーバ装置10の識別情報(例えば、サーバ名)に基づいて、当該サーバ装置10の担当範囲が決まるのではなく、まず、ハッシュ空間が分割範囲に分割された後に、分割範囲が各サーバ装置10に割り当てられる。ハッシュ空間は、サーバ装置10の台数を超えて分割されるため、2以上の分割範囲を担当範囲に含むサーバ装置10が存在する。
クライアント装置20は、各サーバ装置10に管理されているデータを利用するコンピュータである。
図3は、本発明の実施の形態におけるサーバ装置のハードウェア構成例を示す図である。図3のサーバ装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
サーバ装置10での処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってサーバ装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
なお、クライアント装置20も、図3と同様のハードウェアを有していてもよい。但し、クライアント装置20がユーザによって直接操作される場合、キーボード及びマウス等の入力装置や、液晶ディスプレイ等の表示装置がクライアント装置20に接続されているのが好適である。
図4は、第一の実施の形態のデータ管理システムの機能構成例を示す図である。同図において、クライアント装置20は、操作要求部21及び配置情報記憶部22等を有する。
操作要求部21は、サーバ装置10に対してデータの操作を要求する。データの操作の一例として、Put及びGetが有る。データのPutとは、データの書き込みをいい、データのGetとは、データの取得をいう。操作要求部21は、例えば、クライアント装置20にインストールされたプログラムがクライアント装置20のCPUに実行させる処理により実現される。
配置情報記憶部22は、分割範囲ごとに、当該分割範囲に対応する(当該分割範囲を担当範囲に含む)サーバ装置10の識別情報(以下、「サーバ名」という。)を記憶する。配置情報記憶部22は、例えば、クライアント装置20の補助記憶装置を用いて実現可能である。
各サーバ装置10は、データ記憶部11、配置情報記憶部12、サーバ情報記憶部13、及び担当範囲情報記憶部14等を有する。これら各記憶部は、例えば、補助記憶装置102を用いて実現可能である。但し、配置情報記憶部12、サーバ情報記憶部13、及び担当範囲情報記憶部14は、サーバ装置10とネットワークを介して接続される記憶装置を用いて実現されてもよい。
データ記憶部11は、キーとデータとの組を記憶する。配置情報記憶部12は、分割範囲ごとに、当該分割範囲に対応するサーバ装置10のサーバ名を記憶する。サーバ情報記憶部13は、各サーバ装置10のデータ記憶部11の状態を示す情報(例えば、空き容量等)を記憶する。担当範囲情報記憶部14は、担当範囲に属する分割範囲ごとに、データの配置状態(データ数やデータの量)を示す情報を記憶する。
各サーバ装置10は、また、操作部15、再配置実行部16、及び情報交換部17等を有する。
操作部15は、クライアント装置20からのデータの操作要求(Put要求又はGet要求等)に応じた処理を実行する。具体的には、Put要求が受信された場合、操作部15は、Put要求に指定されているキーとデータとの組をデータ記憶部11に記憶する。また、Get要求が受信された場合、操作部15は、Get要求に指定されているキーに対するデータをデータ記憶部11より取得し、当該データをクライアント装置20に返信する。
再配置実行部16は、自装置(当該サーバ装置10)の担当範囲の中で、一部の分割範囲にデータの配置が偏った場合に、当該分割範囲の担当を他のサーバ装置10に変更(再配置)するための処理を実行する。分割範囲の担当の変更(再配置)は、当該分割範囲に属するデータの再配置をも意味する。同図において、再配置実行部16は、再配置対象特定部161、再配置先特定部162、及び転送部163を含む。再配置対象特定部161は、再配置対象とする分割範囲を特定する。例えば、再配置対象特定部161は、相対的にデータの量が多い分割範囲を再配置対象として特定する。再配置先特定部162は、再配置対象とされた分割範囲に関して再配置先とするサーバ装置10を判定する。例えば、再配置先特定部162は、自装置よりも空き容量の多い他のサーバ装置10を再配置先として特定する。転送部163は、再配置対象とされた分割範囲に属するキー及びデータの組を、再配置先のサーバ装置10に転送する。
情報交換部17は、配置情報記憶部12が記憶する情報及びサーバ情報記憶部13が記憶する情報を他のサーバ装置20と定期的に、又は当該情報が更新されたときに交換する。したがって、各サーバ装置20の配置情報記憶部12及びサーバ情報記憶部13の状態は、情報交換部17によって同期が図られる。
なお、同図では、便宜上、サーバ装置10a及び10bのみが図示されているが、サーバ装置10c等も、サーバ装置10a及び10bと同様の機能構成を有する。また、特定のサーバ装置10又は特定のサーバ装置の構成要素に言及する場合、当該特定のサーバ装置10の末尾のアルファベット(a、b、又はc等)と同じアルファベットを符号の後に付加する。
以下、データ管理システム1において実行される処理手順について説明する。図5は、データ操作処理の基本的な処理手順を説明するためのシーケンス図である。
クライアント装置20において、データの操作(Put又はGet)の必要が生じると、操作要求部21は、操作対象のデータのキー(以下、「データキー」という。)に対して所定のハッシュ関数を適用し、当該データキーに対するハッシュ値を取得(算出)する(S101)。続いて、操作要求部21は、配置情報記憶部22を参照して、操作対象のデータを記憶しているサーバ装置10(担当サーバ)を判定する(S102)。
図6は、クライアント装置における配置情報記憶部の構成例を示す図である。同図に示されるように、配置情報記憶部22は、分割範囲ごとに、当該分割範囲のハッシュ値の範囲と当該分割範囲を担当範囲に含むサーバ装置10(当該分割範囲の担当サーバ)のサーバ名とを記憶する。
したがって、操作要求部21は、ステップS101において取得されたハッシュ値が含まれる分割範囲に対応するサーバ名を配置情報記憶部22を参照して判定する。ここでは、サーバ装置10aが担当サーバであると判定されたこととする。なお、本実施の形態において、サーバ装置10a、10b、10cのサーバ名は、順番に、「A」、「B」、「C」であるとする。
続いて、操作要求部21は、担当サーバであるサーバ装置10aに対して操作対象のデータの操作要求(Put要求又はGet要求)を送信する(S103)。Put要求には、データキー及び書き込み(登録)対象のデータが指定される。Get要求には、取得対象のデータのデータキーが指定される。
当該操作要求を受信したサーバ装置10aの操作部15aは、配置情報記憶部12aを参照して、当該操作要求において操作対象とされているデータが属する分割範囲に関して、サーバ装置10aが担当サーバであるか否かを判定する(S104)。すなわち、当該データが、当該サーバ装置10aに配置されているか(記憶されているか)否かが判定される。
図7は、サーバ装置における配置情報記憶部の構成例を示す図である。同図に示されるように、配置情報記憶部12aは、配置情報記憶部22(図6)に対して、バージョンの項目(列)が追加されている。バージョンは、分割範囲とサーバ名(担当サーバ)との対応関係が変化するたびに(すなわち、分割範囲の再配置が実行されるたびに)、1が加算される情報である。また、分割範囲の再配置の実行中において、バージョンは、再配置の実行中であることを示す値に更新される。したがって、バージョンは、分割範囲に関して再配置の実行中であるか否かを判定するためにも用いられる。なお、同図では、配置情報記憶部12aの例が示されているが、各サーバ装置10の配置情報記憶部12の記憶内容は、各サーバ装置10の情報交換部17によって同期が図られているため、基本的に一致する。
操作部15aは、操作要求に指定されたデータキーに所定のハッシュ関数を適用してハッシュ値を算出し、配置情報記憶部12aにおいて、当該ハッシュ値が含まれる分割範囲に対応するサーバ名を特定することにより、サーバ装置10aが担当サーバであるか否かを判定する。すなわち、当該ハッシュ値が含まれる分割範囲のサーバ名が、「A」であれば、サーバ装置10aが担当サーバであると判定される。
サーバ装置10aが担当サーバである場合、操作部15aは、操作要求に応じた処理を実行する(S105)。操作要求がPut要求である場合、操作部15aは、Put要求に指定されたデータキー及びデータの組を、データ記憶部11aに記憶する。この際、当該データキーに対応付けられてデータ記憶部11aに記憶されているデータが有る場合、データ記憶部11aに記憶されているデータは、Put要求において指定されたデータによって更新(上書き)される。また、操作要求がGet要求である場合、操作部15aは、Get要求に指定されたデータキーに対応づけられているデータをデータ記憶部11aより取得する。
なお、操作要求が、Put要求である場合、操作部15aは、必要に応じて、当該サーバ装置10のサーバ情報記憶部13aが記憶している情報及び担当範囲情報記憶部14aが記憶している情報を更新する。
図8は、サーバ情報記憶部の構成例を示す図である。同図において、サーバ情報記憶部13aは、データ管理システム1に含まれるサーバ装置10ごとに、サーバ名、バージョン、全体容量、及び空き容量等を記憶する。バージョンは、全体容量や空き容量等の更新に応じて値が大きくなるパラメータである。すなわち、バージョンは、サーバ情報記憶部13aのレコードの新しさを示すパラメータである。全体容量は、各サーバ装置10のデータ記憶部11の容量である。すなわち、各サーバ装置10が管理可能(記憶可能)なデータ量の最大値(上限値)である。空き容量は、各サーバ装置10のデータ記憶部11の空き容量である。なお、同図では、サーバ情報記憶部13aの例が示されているが、各サーバ装置10のサーバ情報記憶部13の記憶内容は、各サーバ装置10の情報交換部17によって同期が図られているため、基本的に一致する。
Put要求に応じたデータの書き込みによって、サーバ装置10aのデータ記憶部11aの空き容量が変化した場合、操作部15aは、サーバ情報記憶部13aにおいて、サーバ装置10aに対するレコードの空き容量の値を変化後の値に更新する。更新後のレコードの内容は、情報交換部17aによって、他のサーバ装置10に通知(転送)される。通知のタイミングは定期的なものであってもよいし、更新に応じたものであってもよいし、その双方の組み合わせであってもよい。また、他のサーバ装置10への通知方法は、マルチキャストであってもよいし、仮想的なリングトポロジ上を、順番に伝達されてもよい。
また、図9は、担当範囲情報記憶部の構成例を示す図である。同図では、サーバ装置10aにおける担当範囲情報記憶部14aの記憶内容が例示されている。他のサーバ装置10の担当範囲情報記憶部14も、同図の担当範囲情報記憶部14aと同様の構成を有するが、記憶内容は、各サーバ装置10の担当範囲に応じて異なる。
同図において、担当範囲情報記憶部14aは、サーバ装置10aの担当範囲に含まれる分割範囲ごとに、当該分割範囲のハッシュ値の範囲、データ数、及びデータ総量等を記憶する。データ数は、データキーのハッシュ値が分割範囲に属するデータの数である。データ総量は、データキーのハッシュ値が分割範囲に属するデータのデータサイズ(データ量)の総和(総量)である。
操作部15aは、Put要求に指定されたデータが書き込まれた(配置された)、分割範囲のデータ数及びデータ総量が、当該データの書き込みによって変化した場合、当該分割範囲に関して、担当範囲情報記憶部14aにおけるデータ数又はデータ総量の値を更新する。
続いて、操作部15aは、操作要求に対する応答を、操作要求元のクライアント装置20に返信する(S106)。Put要求に対しては、データの書き込みの成否を示す情報が返信される。Get要求に対しては、取得されたデータが返信される。
続いて、分割範囲の再配置処理について説明する。図10は、分割範囲の再配置処理の処理手順の一例を説明するためのシーケンス図である。同図では、サーバ装置10a(サーバA)の担当する分割範囲が、サーバ装置10c(サーバC)に再配置される例が示されている。
各サーバ装置10の再配置実行部16は、例えば、定期的(周期的)にサーバ情報記憶部13(図8)を参照して、当該サーバ装置10のデータ記憶部11の状態が、再配置の実行条件(以下、「再配置実行条件」という。)を満たすか否かを判定する。再配置実行条件は、運用に応じて適宜定められればよい。例えば、全てのサーバ装置10の中で、空き容量又は空き容量率が最も少ないことが再配置実行条件の一例として挙げられる。ここで、空き容量率は、全体容量に対する空き容量の割合である。但し、空き容量又は空き容量率が最も少ないことが再配置実行条件となった場合、常に再配置が実行されることになってしまう。全てのサーバ装置10の中で、空き容量又は空き容量率が最も少ないサーバ装置10は、常に存在するからである。したがって、再配置の頻発を抑制するための条件が更に付加されるとよい。例えば、データ管理システム1全体において、再配置が実行されてから所定時間が経過するまでは再配置の実行は禁止されてもよい。すなわち、再配置は、所定時間内において1回に制限されてもよい。また、他のいずれかの(又は他の全ての)サーバ装置10の空き容量又は空き容量率よりも、当該サーバ装置10の空き容量又は空き容量率が所定値分下回っていることが再配置実行条件とされてもよい。
図10では、ステップS111において、サーバ装置10aの再配置実行部16aが、サーバ装置10aのデータ記憶部11aの状態が再配置条件を満たすと判定したこととする。
続いて、再配置対象特定部161aは、再配置対象とする分割範囲を特定する(S112)。例えば、担当範囲情報記憶部14aにおいて、データ数又はデータ総量が相対的に大きい分割範囲が再配置対象として特定される。具体的には、データ数又はデータ総量が最大である又は上位N番目までの分割範囲が再配置対象として特定される。上位N番目のNの値は、サーバ情報記憶部13において、サーバ装置10aと、他のサーバ装置10との空き容量又は空き容量率との差に応じて定められてもよい。すなわち、再配置の実行後において、サーバ装置10aと、他のサーバ装置10との空き容量又は空き容量率との差が、所定値未満となるようにNの値が決定されてもよい。同図では、「10以上20未満」の分割範囲が再配置対象として特定されたこととする。
続いて、再配置先特定部162aは、サーバ情報記憶部13aを参照して、再配置先とするサーバ装置10を特定する(S113)。例えば、サーバ情報記憶部13aにおいて、空き容量又は空き容量率が最大であるサーバ装置10が、再配置先として特定される。同図では、サーバ装置10cが、再配置先として特定されたこととする。
なお、再配置対象及び再配置先は、上記以外の方法によって特定されてもよい。
続いて、転送部163aは、再配置先のサーバ装置10cに対して、再配置対象の分割範囲の受入の可否の問い合わせを送信する(S114)。当該問い合わせには、例えば、分割範囲のハッシュ値の範囲を示す情報、当該分割範囲のデータ数及びデータ総量等が指定される。当該データ数及びデータ総量は、担当範囲情報記憶部14aより取得可能である。
サーバ装置10cの転送部163cは、当該問い合わせに応じ、受入の可否を判定する(S115)。例えば、転送部163cは、当該問い合わせに指定されたデータ数及びデータ総量分の空き容量が、データ記憶部11cに有るか否かを判定する。なお、データ装置10aのサーバ情報記憶部13aにおけるサーバ装置10cに関する情報と、データ装置10cのサーバ情報記憶部13cにおけるサーバ装置10cに関する情報との間にはずれ(相違点)が生じる可能性がある。すなわち、各サーバ装置10の情報交換部17による情報交換のタイミングによっては、一時的に各サーバ装置10における情報の間に不整合が発生する可能性がある。また、サーバ装置10cは、ステップS114の問い合わせの直前に、サーバ装置10bより、ステップS114と同様の問い合わせを受け、当該問い合わせに対して肯定的な応答をしている可能性もある。したがって、ステップS104の前に、サーバ装置10aにおいて、サーバ装置10cの空き容量が十分であることが確認されていたとしても、転送部163cは、必ずしも受け入れが可能であると判定するとは限らない。
受け入れ可能である場合、転送部163cは、配置情報記憶部12cにおいて、再配置対象の分割範囲に関するレコードを図11に示されるように更新する(S116)。
図11は、再配置中の配置情報記憶部の例を示す図である。同図の配置情報記憶部12cと、図7の配置情報記憶部12aとを比較すると、「10以上20未満」の分割範囲に関して、バージョンが10から11に更新され、サーバ名が「A」から「A→C」に更新されている。「A→C」は、サーバ装置10aからサーバ装置10cに再配置中(転送中(変更処理中))であることを示す。
続いて、転送部163cは、サーバ装置10aに対して、データの転送要求を送信する(S117)。当該転送要求には、配置情報記憶部12cにおいて更新されたレコードも含められる。サーバ装置10aの転送部163aは、当該転送要求を受信すると、当該転送要求に含められているレコードを、配置情報記憶部12aに上書きする。その結果、サーバ装置10aの配置情報記憶部12aの記憶内容も、図11に示した通りとなる。なお、各サーバ装置10の配置情報記憶部12のレコードは、情報交換部17によって交換される。他のサーバ装置10より配置情報記憶部12のレコードを受信した情報交換部17は、受信されたレコードのバージョンと、当該サーバ装置10の配置情報記憶部12において当該レコードに対応するレコードのバージョンとを比較する。受信されたレコードのバージョンの方が新しい場合(値が大きい場合)、情報交換部17は、当該サーバ装置10の配置情報記憶部12に対して受信されたレコードを上書きする。
したがって、配置情報記憶部12cにおいて更新されたレコードは、情報交換部17cによって、他のサーバ装置10に通知(転送)される。よって、当該レコードは、必ずしもステップS117における転送要求に含まれなくてもよい。但し、再配置処理の当事者であるサーバ装置10aとサーバ装置10cとの間では、配置情報記憶部12の記憶内容の不整合の期間は短い方が望ましい。したがって、配置情報記憶部12cにおいて更新されたレコードは、ステップS117における転送要求に含まれるのが望ましい。
続いて、転送部163aは、再配置対象の分割範囲に属する全てのデータキー及びデータの組(レコード)をデータ記憶部11aより取得し、サーバ装置10cに転送する(S118)。この際、転送が完了したデータキー及びデータの組は、データ記憶部11aより削除される。全てのデータキー及びデータの組の転送が完了すると、転送部163aは、サーバ情報記憶部13a及び担当範囲情報記憶部14aの記憶内容を更新する(S119)。すなわち、転送部163aは、サーバ情報記憶部13aに関してサーバ装置10aに対する空き容量を、転送されたデータキー及びデータの組の分だけ増加させる。また、転送部163aは、再配置対象の分割範囲に係るレコードを担当範囲情報記憶部14aより削除する。なお、サーバ情報記憶部13a及び担当範囲情報記憶部14aの記憶内容の更新は、データキー及びデータの組の転送の進行に応じて、逐次的に行われてもよい。
一方、サーバ装置10cの転送部163cは、受信されるデータキー及びデータの組をデータ記憶部11cに記憶する。転送対象の全てのデータキー及びデータの組の受信が完了すると、転送部163cは、サーバ情報記憶部13c、担当範囲情報記憶部14c、及び配置情報記憶部12cの記憶内容を更新する(S121)。すなわち、転送部163cは、データ記憶部11cに関して、サーバ装置10cに対する空き容量を、受信されたデータキー及びデータの組の分だけ減少させる。また、転送部163cは、担当範囲情報記憶部14cに対して、再配置対象の分割範囲に係るレコードを追加する。なお、サーバ情報記憶部13c及び担当範囲情報記憶部14cの記憶内容の更新は、データキー及びデータの組の転送の進行に応じて、逐次行われてもよい。
また、転送部163cは、配置情報記憶部12cにおいて、再配置対象の分割範囲に関するレコードを図12に示されるように更新する。
図12は、再配置後の配置情報記憶部の例を示す図である。同図の配置情報記憶部12cと、図11の配置情報記憶部12cとを比較すると、「10以上20未満」の分割範囲に関して、バージョンが11から12に更新され、サーバ名が「A→C」から「C」に更新されている。
サーバ装置10aにおいて更新されたサーバ情報記憶部13a及び担当範囲情報記憶部14aの記憶内容、並びにサーバ装置10cにおいて更新されたサーバ情報記憶部13c、担当範囲情報記憶部14c、及び配置情報記憶部12cの記憶内容は、各サーバ装置10の情報交換部17による処理によって、各サーバ装置10に伝達及び反映される。
なお、ステップS115において、転送部163cは、受け入れは不可能であると判定すると、受け入れは不可能であることを示す応答(エラー応答)をサーバ装置10aに返信する。この場合、サーバ装置10aの再配置実行部16aは、ステップS111からの処理を繰り返す。繰り返しの際においては、例えば、再配置対象や再配置先が変更されてもよい。また、繰り返しの間に、各サーバ装置10の情報交換部17による情報交換によって、サーバ情報記憶部13aの記憶内容が更新された場合は、更新後の記憶内容に基づいて、改めて再配置対象及び再配置先等が判定されればよい。
続いて、再配置の実行中(図10のステップS118の実行中)において、再配置対象の分割範囲に属するデータに関するPut要求が、サーバ装置10aにおいて受信された場合に実行される処理手順について説明する。
図13は、再配置中におけるPut要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。
ステップS131及びS132の処理内容は、図5のステップS101及びS102と同じである。ここでは、「10以上20未満」の分割範囲に属するデータがPut対象であるとする。したがって、クライアント装置20の操作要求部21は、図6に示した配置情報記憶部22を参照して、サーバ装置10aが担当サーバであると判定する。
続いて、クライアント装置20の操作要求部21は、Put要求をサーバ装置10aに対して送信する(S133)。当該Put要求を受信したサーバ装置10aの操作部15aは、配置情報記憶部12aを参照して、Put対象とされているデータが属する分割範囲に関して、サーバ装置10aが担当サーバであるか否かを判定する(S134)。図10のステップS118の実行中において、サーバ装置10aの配置情報記憶部12aの記憶内容は、図11に示されるように更新されている。したがって、操作部15aは、サーバ装置10cが担当サーバであると判定する(サーバ装置10cが担当サーバであることを検出する)。そこで、操作部15aは、Put要求に応じた処理は実行せずに、Putの失敗(エラー)を示し、かつ、Put対象のデータが属する分割範囲はサーバ装置10aからサーバ装置10cへ再配置中であることを示す応答を、クライアント装置20に返信する(S135)。すなわち、当該応答には、サーバ装置10aのサーバ名とサーバ装置10cのサーバ名とが含まれる。但し、サーバ装置10aのサーバ名は含まれなくてもよい。再配置元がサーバ装置10aであることは、クライアント装置20は判定可能だからである。
クライアント装置20の操作要求部21は、当該応答を受信すると、配置情報記憶部22において、Put対象のデータが属する分割範囲のサーバ名を、「A→C」に更新する(S136)。すなわち、当該分割範囲がサーバ装置10aからサーバ装置10cへ再配置中であることが、配置情報記憶部22に反映される。
続いて、操作要求部21は、Put対象のデータが属する分割範囲がサーバ装置10cへ再配置中であることに基づいて、サーバ装置10cに対して、ステップS133と同じ内容のPut要求を送信する(S137)。このように、Putの失敗と共に、Put対象のデータが属する分割範囲はサーバ装置10aからサーバ装置10cへ再配置中であることを示す応答がサーバ装置10aから返信されることで、クライアント装置20は、Put要求の送信先とすべきサーバ装置10を特定することができる。
当該Put要求を受信したサーバ装置10cの操作部15cは、配置情報記憶部12cを参照して、Put対象とされているデータが属する分割範囲に関して、サーバ装置10cが担当サーバであるか否かを判定する。このタイミングにおいて、配置情報記憶部12cの記憶内容は、図11に示される通りである。したがって、操作部15cは、サーバ装置10cが担当サーバに移行中であると判定する。
続いて、操作部15cは、Put要求に応じた処理を実行する(S139)。すなわち、Put要求に指定されたデータキー及びデータが、データ記憶部11cに書き込まれる。続いて、操作部15cは、Put要求の成否を示す情報を含む応答をクライアント装置20に返信する(S140)。
なお、ステップS139において書き込まれたデータと同一データキーに係るデータが、その後にサーバ装置10aから転送された場合、転送部163cは、サーバ装置10cから転送されたデータを破棄する。Put要求に応じた処理が無効となってしまうのを回避するためである。
続いて、再配置の実行中(図10のステップS118の実行中)において、再配置対象の分割範囲に属するデータに関するGet要求が、サーバ装置10aにおいて受信された場合に実行される処理手順について説明する。
図14は、再配置中におけるGet要求に応じて実行される第一の処理手順の一例を説明するためのシーケンス図である。
ステップS151〜S153の処理内容は、ステップS153における操作要求がGet要求である点を除いて、図13のステップS131〜S133と同じである。
Get要求を受信したサーバ装置10aの操作部15aは、配置情報記憶部12aを参照して、Get対象とされているデータが属する分割範囲に関して、サーバ装置10aが担当サーバであるか否かを判定する(S154)。図10のステップS118の実行中において、サーバ装置10aの配置情報記憶部12aの記憶内容は、図11に示されるように更新されている。したがって、操作部15aは、Get対象とされているデータが属する分割範囲は、サーバ装置10aからサーバ装置10cに再配置中であることを認識する(サーバ装置10aからサーバ装置10cに再配置中であることを検出する)。但し、当該データが未転送であれば、Get要求に応じることができる。そこで、操作部15aは、Get要求に指定されたデータキーに対応するデータに関して、データ記憶部11aからの取得を試みる(S155)。ここでは、当該データの取得に失敗したこととする。すなわち、当該データは、既に転送済みであったとする。
データの取得の失敗に応じ、操作部15aは、Getの失敗(エラー)を示し、かつ、Get対象のデータが属する分割範囲はサーバ装置10aからサーバ装置10cへ再配置中であることを示す応答を、クライアント装置20に返信する(S156)すなわち、当該応答には、サーバ装置10aのサーバ名とサーバ装置10cのサーバ名とが含まれる。但し、サーバ装置10aのサーバ名は含まれなくてもよい。
クライアント装置20の操作要求部21は、当該応答を受信すると、配置情報記憶部22において、Get対象のデータが属する分割範囲のサーバ名を、「A→C」に更新する(S157)。続いて、操作要求部21は、Getの失敗、及びGet対象のデータが属する分割範囲がサーバ装置10cへ再配置中であることに基づいて、サーバ装置10cに対して、ステップS153と同じ内容のGet要求を送信する(S158)。このように、Getの失敗と共に、Get対象のデータが属する分割範囲はサーバ装置10aからサーバ装置10cへ再配置中であることを示す応答がサーバ装置10aから返信されることで、クライアント装置20は、Get要求の送信先とすべきサーバ装置10を特定することができる。
Get要求を受信したサーバ装置10cの操作部15cは、ステップS154及びS155と同様の処理を実行する(S159、S160)。Get対象のデータは既にサーバ装置10cに転送されているため、ステップS160では、当該データの取得に成功する。そこで、操作部15cは、取得されたデータを含む応答をクライアント装置20に返信する(S161)。その結果、クライアント装置20は、所望のデータを入手することができる。
なお、ステップS155において、データの取得に成功した場合、すなわち、Get対象のデータが未転送であった場合、操作部15aは、当該データを含む応答をクライアント装置20に返信する。この際、当該データが属する分割範囲がサーバ装置10aからサーバ装置10cへ再配置中であることを示す情報は、当該応答に含まれてもよいし、含まれなくてもよい。次回に当該分割範囲に属するデータに関してクライアント装置20から操作要求が受信され、当該データが転送済みのために当該操作に失敗した際に、サーバ装置10aは、ステップS156と同様に当該分割範囲が再配置中であることをクライアント装置20に通知できるからである。
続いて、図14の処理の実行後であって、かつ、図10のステップS118が継続中であるタイミングにおいて、再配置対象の分割範囲に属するデータに関するGet要求が、サーバ装置10aにおいて再度受信された場合に実行される処理手順について説明する。図14の処理の実行後であるということは、クライアント装置20が、「10以上20未満」の分割範囲に関して、サーバ装置10aからサーバ装置10cへ再配置中であることを知っていることを意味する。
図15は、再配置中におけるGet要求に応じて実行される第二の処理手順の一例を説明するためのシーケンス図である。
ステップS171及びS172において、クライアント装置20の操作要求部21は、図14のステップS151及びS152と同様の処理を実行する。但し、ステップS172のタイミングにおける配置情報記憶部22において、「10以上20未満」の分割範囲に対応するサーバ名は、「A→C」となっている。したがって、Get対象のデータはサーバ装置10a又はサーバ装置10cのいずれかに存在することが分かる。そこで、操作要求部21は、サーバ装置10a及びサーバ装置10cの双方に対して、同じ内容のGet要求を同時に(並列的に)送信する(S173)。二つのサーバ装置10に対して同じ内容のGet要求を同時に(並列的に)送信することで、所望のデータが取得されるまでの時間を短縮することができる。
ここでは、Get対象のデータは、既にサーバ装置10cに転送済みであるとする。したがって、サーバ装置10aの操作部15aは、ステップS174〜S176において、図14のステップS154〜S156と同様の処理を実行する。また、サーバ装置10cの操作部15cは、ステップS177〜S179において、図14のステップS159〜S161と同様の処理を実行する。
なお、Get対象のデータが未転送であった場合、サーバ装置10aの操作部15aは、ステップS176において、当該データを含む応答を返信する。一方、サーバ装置10cの操作部15cは、ステップS179において、Getの失敗(エラー)を示し、かつ、Get対象のデータが属する分割範囲はサーバ装置10aからサーバ装置10cへ再配置中であることを示す応答を、クライアント装置20に返信する。すなわち、当該応答には、サーバ装置10aのサーバ名とサーバ装置10cのサーバ名とが含まれる。
続いて、図10の再配置処理の実行後(再配置の完了後)に、再配置対象の分割範囲に属するデータに関する操作要求が、サーバ装置10aにおいて受信された場合に実行される処理手順について説明する。クライアント装置20の配置情報記憶部22の記憶内容は、図6に示される通りであるとする。すなわち、配置情報記憶部22には、当該分割範囲に関して再配置が行われたことは反映されていないこととする。
この場合、Put要求の場合もGet要求の場合も、図13と同様の処理手順が実行される。但し、サーバ装置10a及びサーバ装置10cのそれぞれの配置情報記憶部12の記憶内容は、図12に示される通りである。したがって、ステップS135において、操作部15aは、操作(Put又はGet)の失敗(エラー)を示し、かつ、操作対象のデータが属する分割範囲はサーバ装置10cへ再配置済みであることを示す応答を、クライアント装置20に返信する。すなわち、当該応答には、サーバ装置10cのサーバ名が含まれる。
したがって、ステップS136において、クライアント装置20の操作要求部21は、配置情報記憶部22において、操作対象のデータが属する分割範囲に対するサーバ名を「C」に更新する。したがって、その後に当該分割範囲に属するデータに対して操作が必要となった場合、クライアント装置20は、再配置先であるサーバ装置10cに対して操作要求を送信することができる。
上述したように、第一の実施の形態によれば、ハッシュ空間は、サーバ装置10の数より多い数の分割範囲に分割され、各分割範囲は、必要に応じてサーバ装置10間で再配置される。したがって、各サーバ装置10へのデータの配置に関して柔軟性を向上させることができる。その結果、一部のサーバ装置10に対してデータが偏った状態が継続し、当該サーバ装置10の負荷が増加した状態が継続する可能性を低下させることができる。
次に、第二の実施の形態について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態と同様でよい。
図16は、第二の実施の形態のデータ管理システムの機能構成例を示す図である。サーバ装置10の数の増加又は減少や、各分割範囲に対するデータの配置分布の変化等によっては、分割範囲の再配置を行っても、サーバ装置10間の不均衡の是正が困難となる可能性が考えられる。そこで、第二の実施の形態の各サーバ装置10は、更に、ハッシュ空間管理部18を有する。
ハッシュ空間管理部18は、一部の分割範囲にデータの配置が偏った場合等に、分割範囲間のデータの配置状態の不均衡を是正するための処理を実行する。具体的には、ハッシュ空間管理部18は、分割部181及び統合部182等を含む。分割部181は、データの量が相対的に多い分割範囲を複数に分割する。統合部182は、データの量が相対的に少ない分割範囲を他の分割範囲と統合する。
ハッシュ空間管理部18が実行する処理手順について説明する。図17は、分割範囲の分割及び統合の処理手順の一例を説明するためのフローチャートである。ハッシュ空間管理部18は、例えば、定期的に、同図の処理を実行する。
ステップS201において、ハッシュ空間管理部18は、一つの分割範囲に対するデータ総量の適正値を算出する。当該適正値は、例えば、以下の式(1)に基づいて算出される。
適正値=データ管理システム1のデータ量の総和÷分割範囲の数 ・・・(1)
データ管理システム1のデータ量の総和は、サーバ情報記憶部13の全体容量の総和から空き容量の総和を差し引くことによって求めることができる。また、分割範囲の総和は、配置情報記憶部12を参照して求めることができる。
例えば、図8のサーバ情報記憶部13aに基づけば、全体容量の総和は、100+100+120=320[TB]である。また、空き容量の総和は、20+30+40=90[TB]である。したがって、データ管理システム1のデータ量の総和は、320−90=230[TB]である。また、図7の配置情報記憶部12aに基づけば、分割範囲の数は、10個である。したがって、適正値は、230÷10=23[TB]である。
続いて、ハッシュ空間管理部18は、担当範囲情報記憶部14に記憶されているデータ総量が、適正値×αよりも大きい分割範囲の有無を判定する(S202)。αは、適正値に対して何割増しの値が、一つの分割範囲に対して過大であるかを規定する1より大きな係数である。αの値は、運用に応じて適宜定められればよい。例えば、α=2.0であるとすると、23×2.0=46[TB]=47104[GB]よりもデータ総量の大きい分割範囲の有無が判定される。
例えば、図9の担当範囲情報記憶部14aによれば、「10以上20未満」の分割範囲がステップS202の条件に合致する。そこで、ハッシュ空間管理部18は、当該分割範囲を分割対象とする。なお、分割対象は、他の方法によって選択されてもよい。例えば、係数αではなく、絶対値を適正値に加算した値よりもデータ総量が大きな分割範囲が分割対象とされてもよい。また、適正値も他の方法によって算出されてもよい。例えば、データ量ではなく、データ数に基づいて適正値が算出されてもよい。いずれの場合であっても、相対的にデータ総量又はデータ数が大きな分割範囲が分割対象とされるのが好ましい。
続いて、ハッシュ空間管理部18は、分割数を判定する(S203)。例えば、分割後の各分割範囲のそれぞれのデータ総量が、適正値以下となる最小の分割数が判定されてもよい。または、固定的な値(例えば、「5」)が分割数とされてもよい。分割した結果、データ総量が極端に小さい分割範囲が形成されたとしても、ステップS205以降において説明する分割範囲の統合処理によって、斯かる不均衡を是正することができる。
ここでは、分割数は「2」であると判定されたこととする。
続いて、ハッシュ空間管理部18は、分割対象の分割範囲を分割数分の範囲に分割する(S204)。分割範囲の分割とは、具体的には、担当範囲情報記憶部14及び配置情報記憶部12の更新を意味する。
したがって、例えば、図9の担当範囲情報記憶部14aは、図18に示されるように更新される。図18は、分割範囲の分割後の担当範囲情報記憶部の一例を示す図である。
同図では、図9における「10以上20未満」の分割範囲が、「10以上15未満」の分割範囲と、「15以上20未満」の分割範囲とに分割された例が示されている。ハッシュ空間管理部18は、分割前の「10以上20未満」の分割範囲に属していた各データのデータキーに基づいて、当該各データが、「10以上15未満」の分割範囲と、「15以上20未満」の分割範囲のいずれに属するかを判定する。ハッシュ空間管理部18は、判定結果に基づいて、「10以上15未満」の分割範囲と、「15以上20未満」の分割範囲とのそれぞれのデータ数及びデータ総量を分割後の担当範囲情報記憶部14aに記憶する。
また、例えば、図7の分割後の配置情報記憶部12aは、図19に示されるように更新される。図19は、分割範囲の分割後の配置情報記憶部の一例を示す図である。
同図では、図7における「10以上20未満」の分割範囲が、「10以上15未満」の分割範囲と、「15以上20未満」の分割範囲とに分割された例が示されている。ハッシュ空間管理部18は、分割後の二つの分割範囲のバージョンの値を、分割前の分割範囲のバージョンに1を加算した値とする。分割後の二つの分割範囲のサーバ名は、分割前の分割範囲のサーバ名と同じである。
なお、ステップS202の条件に合致する分割範囲が複数有る場合、ステップS203及びS204は、複数の分割範囲に関して実行されてもよい。
一方、ステップS202の条件に合致する分割範囲が無い場合(S202でNo)、ハッシュ空間管理部18は、担当範囲情報記憶部14に記憶されているデータ総量が、適正値×βよりも小さい分割範囲の有無を判定する(S205)。βは、適正値に対して何割減の値が、一つの分割範囲に対して過小であるかを規定する、0より大きく1未満の係数である。βの値は、運用に応じて適宜定められればよい。例えば、βは、αの逆数であってもよい。
例えば、β=0.2であるとすると、23×0.2=4.6[TB]=4710.4[GB]よりもデータ総量の小さい分割範囲の有無が判定される。
例えば、図9の担当範囲情報記憶部14aによれば、「20以上30未満」の分割範囲と、「80以上90未満」の分割範囲とが、ステップS205の条件に合致する。そこで、ハッシュ空間管理部18は、当該分割範囲を統合対象とする。なお、統合対象は、分割対象と同様に、他の方法によって選択されてもよい。
続いて、ハッシュ空間管理部18は、統合相手とする分割範囲を判定する(S206)。例えば、上記の例のように、複数の分割範囲が統合対象とされた場合、統合対象同士が相互に統合相手として選択されてもよい。また、統合対象が一つである場合は、統合対象の分割範囲のデータ総量との和が、適正値×αより小さい分割範囲が統合相手として選択されてもよい。又は、統合対象が一つである場合は、統合対象以外の分割範囲の中で、データ総量が最小である分割範囲が統合相手として選択されてもよい。なお、三つ以上の分割範囲が一つの分割範囲に統合されてもよい。
続いて、ハッシュ空間管理部18は、統合対象の分割範囲と統合相手の分割範囲とを一つの分割範囲に統合する(S207)。分割範囲の統合とは、具体的には、担当範囲情報記憶部14及び配置情報記憶部12の更新を意味する。
すなわち、担当範囲情報記憶部14において、統合対象の分割範囲に係るレコードと、統合相手の分割範囲に係るレコードとが一つのレコードに統合される。この際、統合後のレコードのデータ数及びデータ総量のそれぞれ値は、統合されるレコードの値が合算されたものとなる。
また、配置情報記憶部12において、統合対象の分割範囲に係るレコードと、統合相手の分割範囲に係るレコードとが一つのレコードに統合される。この際、統合後のレコードのバージョンは、例えば、統合されるレコードのバージョンの最大値に1が加算された値となる。
分割範囲の分割結果又は統合結果である、担当範囲情報記憶部14及び配置情報記憶部12の記憶内容は、情報交換部17によって、他のサーバ装置10の担当範囲情報記憶部14及び配置情報記憶部12に反映される。したがって、分割範囲の分割後又は統合後における分割範囲の再配置は、分割後又は統合後の分割範囲を単位として実行される。
なお、分割後又は統合後の分割範囲は、例えば、図13のステップS135、図14のステップS156、又は図15のステップS176等、操作対象のデータを有していないサーバ装置10が操作要求を受信した際の応答においてクライアント装置20に通知される。この際、操作対象のデータを有しているサーバ名と共に、操作要求に指定されたデータキーが属する分割範囲のハッシュ値の範囲が応答に含められる。クライアント装置20の操作要求部21は、当該応答に含まれているサーバ名及び分割範囲のハッシュ値の範囲に基づいて、配置情報記憶部22の記憶内容を更新する。したがって、クライアント装置20には、分割又は統合の結果は、操作対象とされた分割範囲ごとに反映される。
上述したように、第二の実施の形態によれば、既存の分割範囲の間にデータ配置の分布に関して偏りが生じた場合であっても、分割範囲の分割又は統合によって、分割範囲間の偏りを是正することができる。
次に、第三の実施の形態について説明する。第三の実施の形態では、第一又は第二の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一又は第二の実施の形態と同様でよい。
第三の実施の形態では、データ記憶部11は、例えば、アクセス性能の異なる複数の補助記憶装置102によって実現される場合を想定する。例えば、データ記憶部11は、階層1として、アクセス速度が相対的に高速なSSD(Solid State Drive)を有し、階層2として、アクセス速度が相対的に低速なHDD(Hard Disk Drive)を有する。但し、全てのサーバ装置10のデータ記憶部11が、二つの階層を有していなくてもよい。
図20は、第三の実施の形態のデータ管理システムの機能構成例を示す図である。同図において、各サーバ装置10は、階層間移動部19を更に有する。階層間移動部19は、データ記憶部11が記憶するデータの操作頻度(操作回数)に応じて、データの記憶先の階層を移動させる。例えば、階層間移動部19は、操作頻度の高いデータを、階層2から階層1へ移動させ、操作頻度の低いデータを、階層1から階層2に移動させる。なお、階層間の移動の単位は、データ単位であり、分割範囲単位ではない。同じ分割範囲に属するデータ間においても、操作頻度は大きく異なる可能性が有るからである。なお、操作頻度は、データ記憶部11において、データキー及びデータの組に関連付けて記憶されている。データに対してGet又はPutが実行された場合、当該データの操作頻度に1が加算される。
データ記憶部11が複数の階層を有することにより、各サーバ装置10の配置情報記憶部12、サーバ情報記憶部13、及び担当範囲情報記憶部14は、例えば、次のように拡張される。
図21は、第三の実施の形態の配置情報記憶部の構成例を示す図である。同図に示されるように、第三の実施の形態の配置情報記憶部12は、各分割範囲に関して、階層別に、バージョン及び担当サーバを記憶する。第三の実施の形態では、同じ分割範囲に属するデータであっても、階層1の属するデータと階層2に属するデータとが有るからである。また、同じ分割範囲に対する二つの階層は、必ずしも同じサーバ装置10のデータ記憶部11でなくてよい。上記したように、全てのサーバ装置10が、二つの階層を有していなくてもよい状況において、各分割範囲に二つの階層を割り当てるためには、階層1の担当サーバと階層2の担当サーバとが異なる状態が許容される必要があるからである。
本実施の形態では、サーバ装置10a及びサーバ装置10bは、SSD(階層1)及びHDD(階層2)の双方を有し、サーバ装置10cはHDD(階層2)のみを有し、サーバ装置10dはSSD(階層1)のみを有しているとする。各分割範囲の各階層に対する担当サーバの割り当ては、任意の方法に基づいて実行されればよい。なお、第三の実施の形態では、サーバ装置10a〜10dの4台のサーバ装置10が、データ管理システム1に含まれていることとする。
図21によれば、例えば、「0以上10未満」の分割範囲に属し、サーバ装置10dの階層1に記憶されているデータに関して、操作頻度が所定値Aを未満となった場合、階層間移動部19は、当該データをサーバ装置10cの階層2に移動させる。また、サーバ装置10cの階層2に記憶されているデータに関して、操作頻度が所定値Bを超えた場合、階層間移動部19は、当該データをサーバ装置10dの階層1に移動させる。他の分割範囲に関しても同様である。
図22は、第三の実施の形態のサーバ情報記憶部の構成例を示す図である。同図に示されるように、第三の実施の形態のサーバ情報記憶部13は、各サーバ装置10に関して、階層別に、バージョン、全体容量、及び空き容量等を記憶する。なお、該当する階層を有していないサーバ装置10に関して、当該階層に関する各項目の値はブランク(空欄)となっている。
図23は、第三の実施の形態の担当範囲情報記憶部の構成例を示す図である。同図では、サーバ装置10aにおける担当範囲情報記憶部14aの記憶内容が例示されている。但し、他のサーバ装置10の担当範囲情報記憶部14も、同図の担当範囲情報記憶部14と同様の構成を有する。
同図に示されるように、第三の実施の形態の担当範囲情報記憶部14aは、サーバ装置10aの担当範囲に含まれる各分割範囲に関して、階層別に、データ数及びデータ総量を記憶する。一方の階層のみがサーバ装置10aの担当範囲である分割範囲に関しては、当該階層に関してのみ、データ数及びデータ総量が記憶されている。
なお、クライアント装置20は、階層1に関する情報のみを配置情報記憶部22に記憶している。したがって、配置情報記憶部22の構成は、図6と同様でよい。
以下、第三の実施の形態のデータ管理システム1において実行される処理手順について説明する。
図24は、第三の実施の形態においてGet要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。
ステップS301〜S303は、図5のステップS101〜S103と同様でよい。但し、ステップS303における操作要求は、Get要求である。また、Get対象のデータのデータキーのハッシュ値は、「10以上20未満」であるとする。したがって、クライアント装置20の配置情報記憶部22の記憶内容が、図21の階層1の部分(但し、バージョンは含まれない)と同じであれば、Get要求は、サーバ名が「D」であるサーバ装置10dに送信される。
Get要求を受信したサーバ装置10dの操作部15dは、Get対象とされているデータに関して、サーバ装置10dが担当サーバであるか否かを判定する(S304)。具体的には、操作部15dは、まず、配置情報記憶部12dを参照して、Get要求に指定されているデータキーのハッシュ値が属する分割範囲の階層1及び階層2の少なくともいずれか一方に関して、サーバ装置10dが担当サーバであるか否かを確認する。少なくともいずれか一方の階層に関してサーバ装置10dが担当サーバである場合、操作部15dは、当該階層より、Get要求に指定されているデータキーに対応するデータの取得を試みる。図21の例に基づけば、「10以上20未満」の分割範囲に関して、サーバ装置10dは、階層1の担当サーバである。したがって、操作部15dは、階層1より当該データの取得を試みる。なお、サーバ装置10dが、双方の階層の担当サーバであった場合、操作部15dは、双方の階層から当該データの取得を試みる。
階層1からのデータの取得に失敗した場合、操作部15dは、配置情報記憶部12d(図21)を参照して、「10以上20未満」の分割範囲の階層2の担当サーバは、サーバ装置10aであることを特定する。例えば、階層間移動部19dによって当該データが階層2に移動されている場合、階層1からの当該データの取得は失敗する。
続いて、操作部15dは、Getの失敗(エラー)を示し、かつ、Get対象のデータは、サーバ装置10aが有していることを示す応答を、クライアント装置20に返信する(S305)。すなわち、当該応答には、サーバ装置10aのサーバ名が含まれる。クライアント装置20の操作要求部21は、当該応答を受信すると、サーバ装置10aに対して、ステップS303と同じ内容のGet要求を送信する(S306)。
Get要求を受信したサーバ装置10aの操作部15aは、Get対象とされているデータに関して、サーバ装置10aが担当サーバであるか否かを判定する(S307)。ここでの判定手順は、ステップS304と同様でよいため省略する。操作部15aは、判定結果に基づいて、Get対象のデータを階層2より取得する(S308)。続いて、操作部15aは、取得されたデータを含む応答を、クライアント装置20に返信する。その結果、クライアント装置20は、所望のデータを取得することができる。
図25は、第三の実施の形態においてPut要求に応じて実行される処理手順の一例を説明するためのシーケンス図である。
ステップS321〜S324の処理手順は、図24のステップS301〜S304とほぼ同様である。但し、ステップS323における操作要求は、Put要求である。なお、Put要求に指定されているデータキーのハッシュ値は、図24においてGet要求に指定された値と同じ(10以上20未満)であるとする。したがって、Put要求は、サーバ装置10dに送信される。
Put要求に指定されたデータキーに対するデータが階層1に存在しない場合、操作部15dは、配置情報記憶部12d(図21)に基づいて、階層2の担当サーバであるサーバ装置10aに対して、当該データキーが指定された削除要求を送信する(S325)。サーバ装置10aの操作部15aは、当該削除要求に応じ、当該データキー及び当該データキーに対応するデータの組をデータ記憶部11aより削除する(S326)。操作部15aは、削除の成功を示す応答をサーバ装置10dに返信する(S327)。
サーバ装置10dの操作部15dは、削除の成功の応答の受信に応じ、ステップS323において受信されたPut要求に応じた処理を実行する(S328)。すなわち、操作部15dは、Put要求に指定されたデータキー及びデータの組を階層1に記憶する。すなわち、Put要求に係るデータは、引き続き操作対象とされる可能性が高いため、階層1に記憶しておき、アクセス速度を高めようというわけである。また、データ装置10aに対する削除要求の送信は、同一データの重複管理を回避するための措置である。
階層1へのデータキー及びデータの組の書き込みに成功すると、操作部15dは、Putに成功したことを示す応答をクライアント装置20に返信する(S329)。
なお、第三の実施の形態において、分割範囲の再配置は、分割範囲の階層別に実行される。例えば、「10以上20未満」の分割範囲の階層1は、当該分割範囲の階層2とは別に再配置の対象とされる。
クライアント装置20の配置情報記憶部22への再配置結果の反映は、第一の実施の形態と同様に行われればよい。具体的には、クライアント装置20の配置情報記憶部22は、階層1に関する担当サーバのみが記憶されているため、クライアント装置20からの操作要求は、まず、階層1の担当サーバに送信される。当該操作要求を受信したサーバ装置10の操作部15は、配置情報記憶部12において、操作要求に係るデータが属する分割範囲の階層1の担当サーバが、当該サーバ装置10でない場合、エラーと共に、当該担当サーバへの再配置中又は再配置後であることを示す応答をクライアント装置20に返信する。クライアント装置20の操作要求部21は、当該応答に基づいて、配置情報記憶部22を更新する。
ところで、第三の実施の形態において、クライアント装置20の配置情報記憶部22は、各分割範囲に関して、各階層(階層1及び階層2)の担当サーバを記憶するようにしてもよい。すなわち、配置情報記憶部22は、例えば、図21から「バージョン」の項目(列)が除去された構成を有していてもよい。
この場合、クライアント装置20の操作要求部21は、図24及び図25において説明したように、まず、階層1の担当サーバに対して操作要求を送信してもよい。または、最初の操作要求の送信先を階層2の担当サーバとしてもよい。更に、階層1及び階層2のそれぞれの担当サーバに同時に(並列的に)操作要求を送信してもよい。
上述したように、第三の実施の形態によれば、データ記憶部11が複数の階層を有している場合において、第一の実施の形態及び第二の実施の形態と同様の効果を得ることができる。
なお、本実施の形態において、サーバ装置10は、データ管理装置の一例である。データ記憶部11は、第1の記憶手段の一例である。転送部163は、通信手段の一例である。第2の記憶手段は、配置情報記憶部12の一例である。操作部15は、制御手段の一例である。担当範囲情報記憶部14は、第3の記憶手段の一例である。サーバ情報記憶部13は、第4の記憶手段の一例である。分割部181は、分割手段の一例である。統合部182は、統合手段の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
以上の説明に関し、更に以下の項を開示する。
(付記1)
データを分散して管理する分散管理システムで利用可能なデータ管理装置において、
所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて記憶する第1の記憶手段と、
前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する通信手段と、
前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を記憶する第2の記憶手段と、
前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する制御手段と、
を備えたことを特徴とするデータ管理装置。
(付記2)
前記第1の範囲より前記ある範囲が狭い場合に、前記第2の記憶手段は、前記第1の範囲に属し、かつ、前記ある範囲に属さない範囲であって、前記変更処理の実行後も該データ管理装置が格納先となるデータに対応するキー情報に前記所定のハッシュ関数を適用して得られる全てのハッシュ値を含む第2の範囲に対応づけて該データ管理装置の識別情報を記憶し、
前記制御手段は、前記変更処理の後に、第2のキー情報に対応するデータについての処理要求を受信した場合に、該第2のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記第2の範囲に属することを検出すると、該第2のキー情報に対応するデータを前記第1の記憶手段から読み出して、該要求の要求元に送信する制御手段と、
を備えたことを特徴とする付記1記載のデータ管理装置。
(付記3)
キー情報に所定のハッシュ関数を適用して得られるハッシュ値の範囲ごとに、対応するデータの量を示す情報を記憶する第3の記憶手段と、
複数のデータ管理装置のそれぞれの識別情報と対応する格納領域についての空き容量を示す情報とを記憶する第4の記憶手段と、
前記通信手段は、前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、対応するデータの量が相対的に多い範囲に属する特定のデータの格納先を、該データ管理装置から、該データ管理装置よりも空き容量の多い他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する、
ことを特徴とする付記1又は2記載のデータ管理装置。
(付記4)
前記制御手段は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する書き込み要求が受信された場合、前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記1乃至3いずれか一項記載のデータ管理装置。
(付記5)
前記制御手段は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する取得要求が受信された場合、前記特定のデータが前記他のデータ管理装置に送信されていなければ前記特定のデータを該要求の要求元に送信し、前記特定のデータが送信済みであれば前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記1乃至4いずれか一項記載のデータ管理装置。
(付記6)
前記第3の記憶手段が記憶する情報に基づいて、該データ管理装置が対応する範囲の中でデータの量が相対的に多い範囲を複数の範囲に分割し、該分割の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する分割手段を有することを特徴とする付記1乃至5いずれか一項記載のデータ管理装置。
(付記7)
前記第3の記憶手段が記憶する情報に基づいて、当該データ管理装置が対応する範囲の中でデータの量が相対的に少ない複数の範囲を統合し、該統合の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する統合部を有することを特徴とする付記1乃至6いずれか一項記載のデータ管理装置。
(付記8)
前記第1の記憶手段は、アクセス性能に応じて複数の階層を有し、
データの操作頻度に応じて、データを第1の階層から第2の階層へ移動させる移動手段とを備え、
前記第2の記憶手段は、前記範囲及び前記階層に対応づけてデータ管理装置の識別情報を記憶する、
ことを特徴とする付記1乃至7記載のデータ管理装置。
(付記9)
付記1乃至8いずれか一項記載の複数の前記データ管理装置を含むデータ管理システム。
(付記10)
データを分散して管理する分散管理システムで利用可能なデータ管理装置が、
所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて第1の記憶手段に記憶し、
前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信し、
前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を第2の記憶手段に記憶し、
前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
処理を実行することを特徴とするデータ管理方法。
(付記11)
前記第1の範囲より前記ある範囲が狭い場合に、前記第2の記憶手段は、前記第1の範囲に属し、かつ、前記ある範囲に属さない範囲であって、前記変更処理の実行後も該データ管理装置が格納先となるデータに対応するキー情報に前記所定のハッシュ関数を適用して得られる全てのハッシュ値を含む第2の範囲に対応づけて該データ管理装置の識別情報を記憶し、
前記要求元に送信する処理は、前記変更処理の後に、第2のキー情報に対応するデータについての処理要求を受信した場合に、該第2のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記第2の範囲に属することを検出すると、該第2のキー情報に対応するデータを前記第1の記憶手段から読み出して、該要求の要求元に送信する、
ことを特徴とする付記10記載のデータ管理方法。
(付記12)
キー情報に所定のハッシュ関数を適用して得られるハッシュ値の範囲ごとに、対応するデータの量を示す情報を第3の記憶手段に記憶し、
複数のデータ管理装置のそれぞれの識別情報と対応する格納領域についての空き容量を示す情報とを第4の記憶手段に記憶し、
前記他のデータ管理装置に送信する処理は、前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、対応するデータの量が相対的に多い範囲に属する特定のデータの格納先を、該データ管理装置から、該データ管理装置よりも空き容量の多い他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する、
ことを特徴とする付記10又は11記載のデータ管理方法。
(付記13)
前記要求元に送信する処理は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する書き込み要求が受信された場合、前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記10乃至12いずれか一項記載のデータ管理方法。
(付記14)
前記要求元に送信する処理は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する取得要求が受信された場合、前記特定のデータが前記他のデータ管理装置に送信されていなければ前記特定のデータを該要求の要求元に送信し、前記特定のデータが送信済みであれば前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記10乃至13いずれか一項記載のデータ管理方法。
(付記15)
前記第3の記憶手段が記憶する情報に基づいて、該データ管理装置が対応する範囲の中でデータの量が相対的に多い範囲を複数の範囲に分割し、該分割の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する処理をデータ管理装置が実行することを特徴とする付記10乃至14いずれか一項記載のデータ管理方法。
(付記16)
前記第3の記憶手段が記憶する情報に基づいて、当該データ管理装置が対応する範囲の中でデータの量が相対的に少ない複数の範囲を統合し、該統合の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する処理を前記データ管理装置が実行することを特徴とする付記10乃至15いずれか一項記載のデータ管理方法。
(付記17)
前記第1の記憶手段は、アクセス性能に応じて複数の階層を有し、
データの操作頻度に応じて、データを第1の階層から第2の階層へ移動させる処理を前記データ管理装置が実行し、
前記第2の記憶手段は、前記範囲及び前記階層に対応づけてデータ管理装置の識別情報を記憶する、
ことを特徴とする付記10乃至16記載のデータ管理方法。
(付記18)
データを分散して管理する分散管理システムで利用可能なデータ管理装置に、
所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて第1の記憶手段に記憶し、
前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信し、
前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を第2の記憶手段に記憶し、
前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
処理を実行させることを特徴とするプログラム。
(付記19)
前記第1の範囲より前記ある範囲が狭い場合に、前記第2の記憶手段は、前記第1の範囲に属し、かつ、前記ある範囲に属さない範囲であって、前記変更処理の実行後も該データ管理装置が格納先となるデータに対応するキー情報に前記所定のハッシュ関数を適用して得られる全てのハッシュ値を含む第2の範囲に対応づけて該データ管理装置の識別情報を記憶し、
前記要求元に送信する処理は、前記変更処理の後に、第2のキー情報に対応するデータについての処理要求を受信した場合に、該第2のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記第2の範囲に属することを検出すると、該第2のキー情報に対応するデータを前記第1の記憶手段から読み出して、該要求の要求元に送信する、
ことを特徴とする付記18記載のプログラム。
(付記20)
キー情報に所定のハッシュ関数を適用して得られるハッシュ値の範囲ごとに、対応するデータの量を示す情報を第3の記憶手段に記憶し、
複数のデータ管理装置のそれぞれの識別情報と対応する格納領域についての空き容量を示す情報とを第4の記憶手段に記憶する処理を前記データ管理装置に実行させ、
前記他のデータ管理装置に送信する処理は、前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、対応するデータの量が相対的に多い範囲に属する特定のデータの格納先を、該データ管理装置から、該データ管理装置よりも空き容量の多い他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する、
ことを特徴とする付記18又は19記載のプログラム。
(付記21)
前記要求元に送信する処理は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する書き込み要求が受信された場合、前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記18乃至20いずれか一項記載のプログラム。
(付記22)
前記要求元に送信する処理は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する取得要求が受信された場合、前記特定のデータが前記他のデータ管理装置に送信されていなければ前記特定のデータを該要求の要求元に送信し、前記特定のデータが送信済みであれば前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
ことを特徴とする付記18乃至21いずれか一項記載のプログラム。
(付記23)
前記第3の記憶手段が記憶する情報に基づいて、該データ管理装置が対応する範囲の中でデータの量が相対的に多い範囲を複数の範囲に分割し、該分割の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する処理をデータ管理装置が実行することを特徴とする付記18乃至22いずれか一項記載のプログラム。
(付記24)
前記第3の記憶手段が記憶する情報に基づいて、当該データ管理装置が対応する範囲の中でデータの量が相対的に少ない複数の範囲を統合し、該統合の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する処理をデータ管理装置が実行することを特徴とする付記18乃至23いずれか一項記載のプログラム。
(付記25)
前記第1の記憶手段は、アクセス性能に応じて複数の階層を有し、
データの操作頻度に応じて、データを第1の階層から第2の階層へ移動させる処理を前記データ管理装置に実行させ、
前記第2の記憶手段は、前記範囲及び前記階層に対応づけてデータ管理装置の識別情報を記憶する、
ことを特徴とする付記18乃至24記載のプログラム。
1 データ管理システム
10 サーバ装置
11 データ記憶部
12 配置情報記憶部
13 サーバ情報記憶部
14 担当範囲情報記憶部
15 操作部
16 再配置実行部
17 情報交換部
18 ハッシュ空間管理部
19 階層間移動部
20 クライアント装置
21 操作要求部
22 配置情報記憶部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
161 再配置対象特定部
162 再配置先特定部
163 転送部
181 分割部
182 統合部
B バス

Claims (11)

  1. データを分散して管理する分散管理システムで利用可能なデータ管理装置において、
    所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて記憶する第1の記憶手段と、
    前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する通信手段と、
    前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を記憶する第2の記憶手段と、
    前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する制御手段と、
    を備えたことを特徴とするデータ管理装置。
  2. 前記第1の範囲より前記ある範囲が狭い場合に、前記第2の記憶手段は、前記第1の範囲に属し、かつ、前記ある範囲に属さない範囲であって、前記変更処理の実行後も該データ管理装置が格納先となるデータに対応するキー情報に前記所定のハッシュ関数を適用して得られる全てのハッシュ値を含む第2の範囲に対応づけて該データ管理装置の識別情報を記憶し、
    前記制御手段は、前記変更処理の後に、第2のキー情報に対応するデータについての処理要求を受信した場合に、該第2のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記第2の範囲に属することを検出すると、該第2のキー情報に対応するデータを前記第1の記憶手段から読み出して、該要求の要求元に送信する、
    ことを特徴とする請求項1記載のデータ管理装置。
  3. キー情報に所定のハッシュ関数を適用して得られるハッシュ値の範囲ごとに、対応するデータの量を示す情報を記憶する第3の記憶手段と、
    複数のデータ管理装置のそれぞれの識別情報と対応する格納領域についての空き容量を示す情報とを記憶する第4の記憶手段と、
    前記通信手段は、前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、対応するデータの量が相対的に多い範囲に属する特定のデータの格納先を、該データ管理装置から、該データ管理装置よりも空き容量の多い他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信する、
    ことを特徴とする請求項1又は2記載のデータ管理装置。
  4. 前記制御手段は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する書き込み要求が受信された場合、前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
    ことを特徴とする請求項1乃至3いずれか一項記載のデータ管理装置。
  5. 前記制御手段は、前記変更処理の際又は変更処理の後に、前記ある範囲に属する特定のデータに関する取得要求が受信された場合、前記特定のデータが前記他のデータ管理装置に送信されていなければ前記特定のデータを該要求の要求元に送信し、前記特定のデータが送信済みであれば前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
    ことを特徴とする請求項1乃至4いずれか一項記載のデータ管理装置。
  6. 前記第3の記憶手段が記憶する情報に基づいて、該データ管理装置が対応する範囲の中でデータの量が相対的に多い範囲を複数の範囲に分割し、該分割の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する分割手段を有することを特徴とする請求項記載のデータ管理装置。
  7. 前記第3の記憶手段が記憶する情報に基づいて、当該データ管理装置が対応する範囲の中でデータの量が相対的に少ない複数の範囲を統合し、該統合の結果に基づいて前記第3の記憶手段及び前記第2の記憶手段を更新する統合部を有することを特徴とする請求項記載のデータ管理装置。
  8. 前記第1の記憶手段は、アクセス性能に応じて複数の階層を有し、
    データの操作頻度に応じて、データを第1の階層から第2の階層へ移動させる移動手段とを備え、
    前記第2の記憶手段は、前記範囲及び前記階層の組み合わせごとにデータ管理装置の識別情報を記憶する、
    ことを特徴とする請求項1乃至7いずれか一項記載のデータ管理装置。
  9. 請求項1乃至8いずれか一項記載の複数の前記データ管理装置を含むデータ管理システム。
  10. データを分散して管理する分散管理システムで利用可能なデータ管理装置が、
    所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて第1の記憶手段に記憶し、
    前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信し、
    前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を第2の記憶手段に記憶し、
    前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
    処理を実行することを特徴とするデータ管理方法。
  11. データを分散して管理する分散管理システムで利用可能なデータ管理装置に、
    所定のハッシュ関数を適用して得られるハッシュ値が第1の範囲に属するキー情報と、該キー情報に対応するデータとを関連づけて第1の記憶手段に記憶し、
    前記第1の記憶手段に記憶されたデータのうち、対応するキー情報に前記所定のハッシュ関数を適用して得られるハッシュ値が、ある範囲に属する特定のデータの格納先を該データ管理装置から他のデータ管理装置に変更する変更処理を行う場合に、該特定のデータと、該特定のデータに対応するキー情報とを前記他のデータ管理装置に送信し、
    前記変更処理の際に、前記ある範囲に対応づけて前記他のデータ管理装置の識別情報を第2の記憶手段に記憶し、
    前記変更処理の後に、第1のキー情報に対応するデータについての処理要求を受信した場合に、該第1のキー情報に前記所定のハッシュ関数を適用して得られたハッシュ値が前記ある範囲に属することを検出すると、該ある範囲に対応づけて記憶した前記他のデータ管理装置の識別情報を該要求の要求元に送信する、
    処理を実行させることを特徴とするプログラム。
JP2011198772A 2011-09-12 2011-09-12 データ管理装置、データ管理システム、データ管理方法、及びプログラム Active JP5733124B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011198772A JP5733124B2 (ja) 2011-09-12 2011-09-12 データ管理装置、データ管理システム、データ管理方法、及びプログラム
US13/572,259 US8832113B2 (en) 2011-09-12 2012-08-10 Data management apparatus and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011198772A JP5733124B2 (ja) 2011-09-12 2011-09-12 データ管理装置、データ管理システム、データ管理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013061739A JP2013061739A (ja) 2013-04-04
JP5733124B2 true JP5733124B2 (ja) 2015-06-10

Family

ID=47830758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011198772A Active JP5733124B2 (ja) 2011-09-12 2011-09-12 データ管理装置、データ管理システム、データ管理方法、及びプログラム

Country Status (2)

Country Link
US (1) US8832113B2 (ja)
JP (1) JP5733124B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014170952A1 (ja) * 2013-04-16 2014-10-23 株式会社日立製作所 計算機システム、計算機システム管理方法及びプログラム
JP6155861B2 (ja) * 2013-06-06 2017-07-05 富士通株式会社 データ管理方法、データ管理プログラム、データ管理システム及びデータ管理装置
US20150039825A1 (en) * 2013-08-02 2015-02-05 Seagate Technology Llc Federated Tiering Management
JP6281225B2 (ja) * 2013-09-30 2018-02-21 日本電気株式会社 情報処理装置
CN103595776A (zh) * 2013-11-05 2014-02-19 福建网龙计算机网络信息技术有限公司 分布式缓存方法及系统
JP6025149B2 (ja) * 2013-11-06 2016-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを管理するシステムおよび方法
WO2016006223A1 (ja) * 2014-07-11 2016-01-14 日本電気株式会社 配置装置、配置方法及び配置プログラムを記憶する記録媒体
JPWO2016006222A1 (ja) * 2014-07-11 2017-04-27 日本電気株式会社 配置装置、配置方法及び配置プログラムを記憶する記録媒体
WO2016088372A1 (ja) * 2014-12-05 2016-06-09 日本電気株式会社 アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びコンピュータ読み取り可能記録媒体
JP6439475B2 (ja) * 2015-02-09 2018-12-19 富士通株式会社 情報処理装置、情報処理システム及び制御プログラム
WO2016143095A1 (ja) * 2015-03-11 2016-09-15 株式会社日立製作所 計算機システム及びトランザクション処理の管理方法
CN105357314A (zh) * 2015-12-03 2016-02-24 厦门速卖通网络科技有限公司 一种定点分布式缓存系统及其缓存方法
US10719496B2 (en) * 2016-01-29 2020-07-21 Hitachi, Ltd. Computer system and data processing method
JP6674099B2 (ja) 2016-06-10 2020-04-01 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
JP6750417B2 (ja) 2016-09-15 2020-09-02 富士通株式会社 パケット制御プログラム、パケット制御装置及びパケット制御システム
JP6720844B2 (ja) * 2016-11-30 2020-07-08 富士通株式会社 データ管理プログラム、データ管理方法及びデータ管理装置
US11269915B2 (en) * 2017-10-05 2022-03-08 Zadara Storage, Inc. Maintaining shards in KV store with dynamic key range

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04281658A (ja) 1991-03-11 1992-10-07 Fujitsu Ltd 局間サービス制御方式
JPH06259478A (ja) * 1993-03-02 1994-09-16 Toshiba Corp 分散データベースのデータ再配置方式
US6430618B1 (en) * 1998-03-13 2002-08-06 Massachusetts Institute Of Technology Method and apparatus for distributing requests among a plurality of resources
JP4199888B2 (ja) * 1999-11-15 2008-12-24 株式会社日立製作所 データベース管理方法
WO2004002044A2 (en) * 2002-02-01 2003-12-31 John Fairweather A system for exchanging binary data
JP4418286B2 (ja) 2003-07-14 2010-02-17 富士通株式会社 分散型ストレージシステム
JP4349871B2 (ja) * 2003-09-09 2009-10-21 株式会社日立製作所 ファイル共有装置及びファイル共有装置間のデータ移行方法
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
JP4315876B2 (ja) * 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US20070100834A1 (en) * 2004-09-15 2007-05-03 John Landry System and method for managing data in a distributed computer system
DE502005001390D1 (de) * 2005-07-14 2007-10-11 Konrad Zuse Zentrum Fuer Infor Vorrichtung und Verfahren zum Abrufen/Speichern von elektronischen Daten in einem System mit mehreren Datenverarbeitungseinheiten
US7921131B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method using a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7707136B2 (en) * 2006-03-31 2010-04-27 Amazon Technologies, Inc. System and method for providing high availability data
US7925624B2 (en) * 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
JP5084310B2 (ja) 2007-03-16 2012-11-28 日本電気株式会社 複数プロセッサに分散されたデータを再配置可能なデータベースサーバ、再配置方法、およびプログラム
US20080320053A1 (en) * 2007-06-21 2008-12-25 Michio Iijima Data management method for accessing data storage area based on characteristic of stored data
JP4139975B2 (ja) 2007-08-01 2008-08-27 日本電気株式会社 情報処理装置、ファイル管理方法およびプログラム
US7895151B2 (en) * 2008-06-23 2011-02-22 Teradata Us, Inc. Fast bulk loading and incremental loading of data into a database
WO2009032710A2 (en) * 2007-08-29 2009-03-12 Nirvanix, Inc. Filing system and method for data files stored in a distributed communications network
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
US8380738B2 (en) * 2009-03-17 2013-02-19 Nec Laboratories America, Inc. System and methods for database distribution and querying over key-based scalable storage
JP4385387B1 (ja) * 2009-07-02 2009-12-16 修平 西山 属性付きキー・バリュー・ストアによるデータベース・システム
US9395933B2 (en) * 2009-09-01 2016-07-19 Nec Corporation Distributed storage system, distributed storage method, and program and storage node for distributed storage
US9122579B2 (en) * 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US8700842B2 (en) * 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
JP5488225B2 (ja) * 2010-06-09 2014-05-14 富士通株式会社 データ管理システム、データ管理方法、及びデータ管理プログラム
JP5460486B2 (ja) * 2010-06-23 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション データをソートする装置及び方法
US8819076B2 (en) * 2010-08-05 2014-08-26 Wavemarket, Inc. Distributed multidimensional range search system and method
US8510267B2 (en) * 2011-03-08 2013-08-13 Rackspace Us, Inc. Synchronization of structured information repositories

Also Published As

Publication number Publication date
JP2013061739A (ja) 2013-04-04
US8832113B2 (en) 2014-09-09
US20130066883A1 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
JP5733124B2 (ja) データ管理装置、データ管理システム、データ管理方法、及びプログラム
US10776396B2 (en) Computer implemented method for dynamic sharding
US10209893B2 (en) Massively scalable object storage for storing object replicas
US20180349396A1 (en) Managing I/O Operations in a Storage Network
CN107391758B (zh) 数据库切换方法、装置及设备
KR20160046729A (ko) 키-값 저장 엔진 및 그것의 효과적인 키 충돌 관리 방법
US20210342297A1 (en) Light-weight index deduplication and hierarchical snapshot replication
US10108644B1 (en) Method for minimizing storage requirements on fast/expensive arrays for data mobility and migration
CN108021337B (zh) 用于流线型访问和迁移的数据打包的存储容器
US9002844B2 (en) Generating method, generating system, and recording medium
US10909086B2 (en) File lookup in a distributed file system
CN105190573A (zh) 存储数据的减少冗余
JP2005322250A5 (ja)
JP6361223B2 (ja) トランザクションシステム
US20160147569A1 (en) Distributed technique for allocating long-lived jobs among worker processes
US10515228B2 (en) Commit and rollback of data streams provided by partially trusted entities
US11537617B2 (en) Data system configured to transparently cache data of data sources and access the cached data
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
US10754569B2 (en) Methods to reduce storage capacity
CN105637489A (zh) 分布式数据库系统中的异步垃圾收集
CN110352410A (zh) 跟踪索引节点的访问模式以及预提取索引节点
WO2012056734A1 (ja) データベースの管理方法
JP4971717B2 (ja) ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
WO2014054173A1 (ja) 分散データ管理システム及びプログラム
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150330

R150 Certificate of patent or registration of utility model

Ref document number: 5733124

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150