JP2013156960A - 生成プログラム、生成方法、および生成システム - Google Patents

生成プログラム、生成方法、および生成システム Download PDF

Info

Publication number
JP2013156960A
JP2013156960A JP2012019283A JP2012019283A JP2013156960A JP 2013156960 A JP2013156960 A JP 2013156960A JP 2012019283 A JP2012019283 A JP 2012019283A JP 2012019283 A JP2012019283 A JP 2012019283A JP 2013156960 A JP2013156960 A JP 2013156960A
Authority
JP
Japan
Prior art keywords
data
key
value
segment
graph
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.)
Granted
Application number
JP2012019283A
Other languages
English (en)
Other versions
JP5825122B2 (ja
Inventor
Yuichi Tsuchimoto
裕一 槌本
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 JP2012019283A priority Critical patent/JP5825122B2/ja
Priority to US13/740,585 priority patent/US9002844B2/en
Publication of JP2013156960A publication Critical patent/JP2013156960A/ja
Application granted granted Critical
Publication of JP5825122B2 publication Critical patent/JP5825122B2/ja
Expired - Fee Related 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データ内のキーの組み合わせからデータ同士の関連性を検出することにより、関連性のあるデータ同士をグループ化すること。
【解決手段】セグメントS0に所属するデータa〜jを、子セグメントS1,S2に局所分割する。まず、グラフG0をサブグラフG1,G2にグラフ分割する。データa〜jのキーka〜kjは、ノードを指す。サブグラフG1,G2について、サブグラフ特徴値C(G1),C(G2)が算出される。セグメントS0内の各データa〜jについてキー特徴値を求める。各データa〜jは、サブグラフ特徴値C(G1),C(G2)のうち自身のキー特徴値に近いほうのデータ同士でグループ化される。セグメントS1は、キー特徴値がサブグラフ特徴値C(G1)に近いほうのデータa〜d,fである。セグメントS2は、キー特徴値がサブグラフ特徴値C(GS)に近いほうのデータe,g〜jである。
【選択図】図1

Description

本発明は、生成プログラム、生成方法、および生成システムに関する。
分散キーバリューストアというデータの管理方法がある。分散キーバリューストアは、データを構成するキー(key)とバリュー(value)の対応を管理しており、ユーザはキーとバリューの対応を登録したりキーからバリューを参照したりすることができる。キーは、たとえば、固定の識別情報またはポインタであり、バリューは、たとえば、ウェブページやテキストデータなどの可変なデータである。分散キーバリューストアは複数のサーバから構成される。キーとバリューの組であるデータは、それらのサーバの一つ、あるいは、設定された冗長性に応じて複数個に配置される。その配置先は、キーのハッシュ値などに基づいて決定される。
また、特性の類似した関連ウェブページ群を発見する関連ウェブページ発見装置が開示されている。関連ウェブページ発見装置は、ウェブページをノード、ハイパーリンクをエッジとしたネットワークを隣接行列形式で表現し、ノードとその周辺ノードとのエッジの接続状態に基づいた特徴量を算出する。また、関連ウェブページ発見装置は、ウェブページ特徴量データベースを参照し、各ページの特徴量を基に、処理対象のページと関連するウェブページを算出して関連ウェブページ群を出力する。
また、構造を持った情報である回路を、小規模のグラフに変換し、小規模のグラフ間のマッチングをおこなう自動配置方法が開示されている。自動配置方法では、部分リストとネットリストからなる回路データとその配置をデータベースに記憶して、新規回路データとデータベース中の回路データをノードとエッジからなるグラフに変換する。そして、自動配置方法では、グラフ間のマッチングを行い、マッチング度の高い回路データを検索し、その回路データの対になる配置データに沿って、新規回路データを配置する。
特開2010−123038号公報 特開2000−200298号公報
分散キーバリューストアのようにデータが複数のサーバに分散されて管理されている場合、続けて参照する確率が高いデータ同士のような関連性があるデータ同士を同一のサーバに記憶することにより、ディスクアクセスの回数を減らすことが可能になる。しかしながら、従来技術では、関連性のあるデータ同士をグループ化することが困難であるという問題がある。たとえば、キー同士の値に関連性がない場合、キーの値からデータ同士の関連性を特定できず、関連性のあるデータ同士を同一のサーバに記憶することが困難である。キー同士の属性に関連性がない場合についても同様である。
本発明は、データ内のキーの組み合わせからデータ同士の関連性を検出することにより、関連性のあるデータ同士をグループ化することを目的とする。
本発明の一側面によれば、キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出し、算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成し、生成されたセグメント内のデータの格納先を設定する、生成プログラム、生成方法、および生成システムが提案される。
本発明の一側面によれば、データ内のキーの組み合わせからデータ同士の関連性を検出することにより、関連性のあるデータ同士をグループ化することができる。
図1は、局所分割の一例を示す説明図である。 図2−1は、データの一例を示す説明図である。 図2−2は、キー特徴値の一例を示す説明図である。 図2−3は、サブグラフ特徴値の一例を示す説明図である。 図3は、キー特徴値とサブグラフ特徴値とを用いたキーの局所分割例を示す説明図である。 図4は、木構造データを構成するセグメントのデータ構造を示す説明図である。 図5は、局所分割による木構造データの構築例を示す説明図(その1)である。 図6は、局所分割による木構造データの構築例を示す説明図(その2)である。 図7は、分散システムのシステム構成例を示す説明図である。 図8は、図7に示したキー特徴値テーブルTCの記憶内容の一例を示す説明図である。 図9は、図7に示したコンピュータのハードウェア構成例を示すブロック図である。 図10は、データ参照例を示す説明図である。 図11は、データ新規登録例を示す説明図である。 図12は、第1の管理装置701および第2の管理装置702の機能的構成例を示す機能ブロック図である。 図13は、分散装置Mの機能的構成例を示すブロック図である。 図14は、第1の管理装置701による参照要求処理の詳細な処理手順を示すフローチャートである。 図15は、第1の管理装置701による新規登録要求処理の詳細な処理手順を示すフローチャートである。 図16は、分散装置Mによる局所分割処理の詳細な処理手順を示すフローチャートである。
以下に添付図面を参照して、この発明にかかる生成プログラム、生成方法、および生成システムの実施の形態を詳細に説明する。
<局所分割の一例>
データ処理において、「関連するデータを続けてアクセスする傾向」が存在する場合がある。たとえば、SNS(Social Network Service)において、あるユーザの情報を参照する場合、その友人の情報も続けて参照する確率が高い。このような傾向を「局所性」という。データが複数のサーバに分散されて管理されている場合、局所性のあるデータ同士は同一のサーバに記憶することにより、ディスクアクセスの回数を減らすことが可能になる。
本実施の形態は、たとえば、分散キーバリューストアにおいて、キー同士の値に関連性がないデータ群を、局所性のあるデータ同士でグループ化する。キー同士の属性に関連性がないデータ群についても同様である。このため、本実施の形態は、データ群における全キー空間を「セグメント」という概念を導入して管理する。データ群は、セグメント単位で分割されて分散装置に割り当られる。分散装置は、データ群から割当てられたデータを保持するコンピュータである。
また、セグメントの大きさは以下の観点により選ぶことができる。セグメントの数は、分散装置の数以上であり、多ければ多いほど、負荷分散の観点では平準化しやすいことになる。また、セグメントに含まれるサブグラフの大きさが大きければ大きいほど、分散装置の記憶装置へのアクセスのコストは小さくなる。セグメントは全空間を再帰的に2分割される。したがって、データ群は、バイナリーツリー構造で管理される。
図1は、局所分割の一例を示す説明図である。局所分割は、上述したように、あるセグメントを局所性のあるデータ同士でグループ化した2つのセグメントに分割することである。データの最小単位は、キーとバリューとする。キーは外部から与えられる固定的なIDとする。キーの値はランダムである。図1では、セグメントS0に所属するデータa〜jを、子セグメントS1,S2に局所分割する。
局所分割では、セグメントS0内のデータa〜jをノードとし、ノード間の関連をエッジ(ノード間を結ぶ線)とするグラフG0が生成され、グラフG0はサブグラフG1,G2にグラフ分割される。グラフG0において、データa〜jのキーka〜kjは、ノードで表現される。キーとバリュー内の他のキーとの関係は、エッジで表現される。キーの値からはグラフG0内のエッジの情報は推測できないものとする。このグラフ分割では、たとえば、ノード数が均等になるように、また、境界をまたぐエッジ本数ができる限り少なくなるように行われる。この場合、エッジで直接つながれたことで隣接しあうノードは同じサブグラフに割り当てられる確率が高くなる。グラフ分割としては、たとえば、Kernighan−Lin algorithmが採用される。
ここで、サブグラフG1,G2のそれぞれについて、サブグラフ特徴値C(G1),C(G2)が算出される。サブグラフ特徴値とは、サブグラフ内のノード群を示す各キーの存在を示す指標値である。サブグラフ特徴値については図2−3で後述する。
そして、局所分割では、セグメントS0内の各データa〜jについてキー特徴値が求められる。キー特徴値とは、データ内のキーと、データ内のバリューに含まれている他のキーと、の存在を示す指標値である。キー特徴値については図2−2で後述する。各データa〜jは、サブグラフ特徴値C(G1),C(G2)のうち自身のキー特徴値に近いほうのデータ同士でグループ化される。図1の例では、セグメントS0から局所分割されるセグメントS1は、キー特徴値がサブグラフ特徴値C(G1)に近いほうのデータ群であり、たとえば、データa〜d,fである。また、セグメントS0から局所分割されるセグメントS2は、キー特徴値がサブグラフ特徴値C(G2)に近いほうのデータ群であり、たとえば、データe,g〜jである。
図2−1は、データの一例を示す説明図である。データa〜eはそれぞれ、キーとバリューの組み合わせ{ka,va}〜{ke,ve}を有する。バリューva〜veには、他のキーが含まれている。たとえば、データaのバリューvaには、キーkb(=05884),キーkc(=23780),ke(=04869)が含まれている。したがって、図1のグラフG0では、キーkaは、エッジによりキーkb,kc,keと関連付けられることになる。
また、各データa〜eからキー特徴値Ca〜Ceが算出される。キー特徴値Ca〜Ceは、たとえば、同一ビット幅のブルームフィルタBFを用いることで算出される。具体的には、たとえば、ブルームフィルタBFでは、データ内のキーの値とバリュー内の他のキーの値の各ハッシュ値をブルームフィルタBFのビット幅で割り算した余りの値の位置に、それぞれビットが立てられる。
図2−2は、キー特徴値の一例を示す説明図である。図2−2では、データaを用いて説明する。データaの場合、キーka(=33968),バリューva内のキーkb(=05884),キーkc(=23780),ke(=04869)がそれぞれハッシュ関数に与えられる。そして、ハッシュ関数から得られたハッシュ値をそれぞれブルームフィルタBFのビット幅で割り算した余りの位置に、ビットが立てられる。
このようにしてビットを立てるため、各キー特徴値Ca〜Ceでは、同一のキーについては同一位置にビットが立てられる。ただし、ブルームフィルタBFの擬陽性により、同一のキーではなくても同一位置にビットが立てられる場合もある。
図2−1では、キー特徴値Ca〜Ceについて説明したが、図1に示したサブグラフ特徴値C(G1),C(G2)もブルームフィルタBFを用いて算出することができる。キー特徴値の場合は、データごとに、データ内のキーの値とバリュー内の他のキーの値とを用いてブルームフィルタBFのビットを立てた。これに対して、サブグラフ特徴値の場合は、サブグラフ内の各キーの値を用いてブルームフィルタBFのビットを立てる。サブグラフ特徴値で用いるブルームフィルタBFのビット幅は、キー特徴値で用いたブルームフィルタBFのビット幅と同一ビット幅であり、また、同一のハッシュ関数を用いるものとする。
図2−3は、サブグラフ特徴値の一例を示す説明図である。図2−3では、図1のサブグラフG1のサブグラフ特徴値C(G1)について説明する。サブグラフG1の場合、キーka〜keの値がそれぞれハッシュ関数に与えられる。そして、ハッシュ関数から得られたハッシュ値をそれぞれブルームフィルタBFのビット幅で割り算した余りの位置に、ビットが立てられる。サブグラフG2も同様に、キーkf〜kjの値を用いることでサブグラフ特徴値C(G2)が得られる。
図3は、キー特徴値とサブグラフ特徴値とを用いたキーの局所分割例を示す説明図である。図3の(A)は、データaのキー特徴値Caとサブグラフ特徴値C(G1),C(G2)を用いた例である。データとサブグラフとの局所性の高さを表す例として、距離を用いる。ここでの距離は、短いほど局所性が高いことを示し、キー特徴値とサブグラフ特徴値とで立っている共通ビット数で決まる。
たとえば、キー特徴値Caとサブグラフ特徴値C(G1)とで立っている共通ビット数は、「4」である。したがって、キーkaとサブグラフG1との距離d1は、d1=1/(4+1)=1/5となる。一方、キー特徴値Caとサブグラフ特徴値C(G2)とで立っている共通ビット数は、「0」である。したがって、キー特徴値Caとサブグラフ特徴値C(G2)との距離d2は、d2=1/(0+1)=1となる。すなわち、d1<d2であるため、キーkaを有するデータaはサブグラフG2よりもサブグラフG1と局所性があることがわかる。したがって、キーkaを有するデータaはセグメントS1に属することになる。
また、図3の(B)は、データeのキー特徴値Ceとサブグラフ特徴値C(G1),C(G2)を用いた例である。キー特徴値Ceとサブグラフ特徴値C(G1)とで立っている共通ビット数は、「2」である。したがって、キー特徴値Ceとサブグラフ特徴値C(G1)との距離d1は、d1=1/(2+1)=1/3となる。一方、キー特徴値Ceとサブグラフ特徴値C(G2)とで立っている共通ビット数は、「3」である。したがって、キー特徴値Ceとサブグラフ特徴値C(G2)との距離d2は、d2=1/(3+1)=1/4となる。すなわち、d1>d2であるため、キーkeを有するデータeはサブグラフG1よりもサブグラフG2と局所性があることがわかる。したがって、キーkeを有するデータeはセグメントS2に属することになる。
このように、エッジでつながっていることで隣接しあうデータaとデータbについては、同一サブグラフに属しているか否かにかかわらず、データaのキー特徴値CaにはデータaのキーkaとデータbのキーkbがブルームフィルタBFで織り込まれる。データbのキー特徴値CbにもデータaのキーkaとデータbのキーkbがブルームフィルタBFで織り込まれる。
また、グラフ分割での「エッジでつながっていることで隣接しあうノードは同じサブグラフに割り当てられる確率が高くなる。」という性質がある。この性質により、データa〜eを含むサブグラフG1のサブグラフ特徴値C(G1)には、データa〜eのキーka〜keが、ブルームフィルタBFで織り込まれる。
したがって、キー特徴値とサブグラフ特徴値とを比較することにより、共通に「1」であるビットの数が確率的に多くなり、その逆数である距離は確率的に短くなる。このように、局所分割では、距離が短いほうのセグメントにデータを振り分けることにより、データ群a〜jを、セグメントS1,S2に局所分割することができる。特に、キー特徴値やサブグラフ特徴値にブルームフィルタBFを適用することにより、キー群をそのまま保持するよりもサイズを縮小することができ、省メモリ化を図ることができる。また、セグメント単位で記憶装置を分担することにより、同一セグメント内のデータについては同一の記憶装置へのアクセスで済むため、アクセス頻度の低減化を図ることができる。
また、局所分割の状態は、バイナリーツリー構造である木構造データとして保持される。以下、図を用いて木構造データについて説明する。
図4は、木構造データを構成するセグメントのデータ構造を示す説明図である。セグメントは、セグメント名と保存先情報とデータ数とサブグラフ特徴値と子セグメントへのポインタとを保持する。セグメント名はセグメントを識別する情報である。保存先情報とは、セグメント内のキーで特定されるデータの保存先の識別情報である。たとえば、保存先サーバのアドレスなどが挙げられる。
データ数は、セグメント内のキーの個数である。また、ここでのサブグラフ特徴値は、セグメントが親セグメントから局所分割されるときに親セグメントのグラフ分割で得られたサブグラフ特徴値である。たとえば、図1に示したセグメントS1の場合はサブグラフ特徴値C(G1)である。子セグメントへのポインタとは、当該セグメントから局所分割があった場合の分岐先となるセグメントを指定する情報である。たとえば、子セグメント名が挙げられる。
図5および図6は、局所分割による木構造データの構築例を示す説明図である。図5において、(A)は、セグメントSを有する木構造データSTを示している。セグメントSの所属データ群は、分散装置M1の記憶装置に格納されている。ここでは、セグメントSのデータ数が「6」であるため、記憶装置には6個のデータが登録されている。(A)では、まだ一度も局所分割されていない初期状態であるため、サブグラフ特徴値は存在しない。
(B)は、(A)の状態からデータ数が増加した状態の木構造データSTを示している。(B)ではデータ数が「10」になっている。ここで、セグメントでのデータ数の上限を「10」とする。セグメントSのデータ数は「10」であり、上限に到達したため、局所分割が実行される。
(C)は、(B)の状態から局所分割をおこなった状態の木構造データSTを示している。セグメントSはセグメントSr,Slに局所分割されている。セグメントSは局所分割により所属データが存在しないことになる。すなわち、データ数は「0」になり、保存先情報であった「M1」も消去される。そのかわり、セグメントSは、局所分割により、セグメントSr,Slへのポインタを記憶する。
図3に示したようなセグメントSの局所分割により、ここでは、セグメントSrには10個のデータのうち5個のデータが割り当てられ、セグメントSlには10個のデータのうち5個のデータが割り当てられたものとする。また、セグメントSの局所分割の際に、セグメントSの所属データ群で分割されたサブグラフのサブグラフ特徴値C(Sr),C(Sl)が、セグメントSr,Slに割り当てられている。
また、セグメントSrの5個の所属データは、セグメントSと同じ分散装置M1の記憶装置に記憶される。一方、セグメントSlの5個の所属データは、分散装置M1とは異なる分散装置M2の記憶装置に記憶される。したがって、セグメントSrの保存先情報は「M1」であり、セグメントSlの保存先情報は「M2」となる。すなわち、一方のセグメントSrの所属データ群については、データ移行しなくて済むことになる。
また、図6において、(D)は、図5の(C)の状態からノード数が増加した状態の木構造データSTを示している。(D)では、セグメントSrのデータ数が「8」、セグメントSlのデータ数が「10」になっている。ここで、セグメントSlのデータ数が上限の「10」に到達したため、局所分割が実行される。
(E)は、(D)の状態から局所分割をおこなった状態の木構造データSTを示している。セグメントSlはセグメントSlr,Sllに局所分割されている。セグメントSlは局所分割により所属キーが存在しないことになる。すなわち、データ数は「0」になり、保存先情報であった「M2」も消去される。そのかわり、セグメントSlは、局所分割により、セグメントSlr,Sllへのポインタを記憶する。ただし、セグメントSlは、セグメントSのように木構造データSTのルートではないため、サブグラフ特徴値C(Sl)はそのまま保持される。
図3に示したようなセグメントSlの局所分割により、ここでは、セグメントSlrには10個のデータのうち7個のデータが割り当てられ、セグメントSllには10個のデータのうち3個のデータが割り当てられたものとする。また、セグメントSlの局所分割の際に、セグメントSlの所属データ群で分割されたサブグラフのサブグラフ特徴値C(Slr),C(Sll)が、セグメントSlr,Sllに割り当てられている。
また、セグメントSlrの7個の所属データは、セグメントSlと同じ分散装置M2の記憶装置に記憶される。一方、セグメントSllの3個の所属データは、分散装置M2とは異なる分散装置M3の記憶装置に記憶される。したがって、セグメントSlrの保存先情報は「M2」であり、セグメントSllの保存先情報は「M3」となる。
すなわち、一方のセグメントSrの所属データ群については、データ移行しなくて済むことになる。この場合、データ数の少ないほうのデータ群を移行させるため、データ数が多いほうのデータ群を移行させる場合にくらべて、データ転送量を抑制でき、移行処理の効率化を図ることができる。
このようにして、各セグメントにおいて、データ数が上限に到達する都度、再帰的に局所分割がおこなわれ、木構造データSTが階層化される。すなわち、木構造データSTのリーフとなるセグメントでは、保存先情報により、保存先となる分散装置が特定できる。たとえば、図6の(E)では、セグメントSr,Slr,Sllがリーフである。このため、木構造データSTを探索してリーフに到達した場合、保存先の分散装置M1,M2,M3の各記憶装置に記憶されているデータ群にアクセスすることができる。
ここで、図6の(E)の木構造データSTで探索をおこなう場合について説明する。たとえば、あるデータのキー特徴値をCkとした場合、まず、ルートとなるセグメントSからの分岐先となるセグメントSr,Slのいずれのセグメントに遷移するかが判断される。この判断は、図3に示したようにキー特徴値CkとセグメントSr,Slのセグメント特徴値C(Sr),C(Sl)との比較でおこなわれる。すなわち、キー特徴値Ckとセグメント特徴値C(Sr)との距離が、キー特徴値Ckとセグメント特徴値C(Sl)との距離よりも短ければ、リーフとなるセグメントSrに到達することになる。
一方、キー特徴値Ckとセグメント特徴値C(Sl)との距離が、キー特徴値Ckとセグメント特徴値C(Sr)との距離よりも短ければ、セグメントSlに遷移して、分岐先となるセグメントSlr,Sllのいずれのセグメントに遷移するかが判断される。このように、探索することにより、最終的にリーフとなるセグメントSlr,Sllのいずれかに到達することになる。
<システム構成例>
図7は、分散システムのシステム構成例を示す説明図である。分散システム700は、複数のコンピュータを備え、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークにより、相互に通信可能に接続されている。図7では、LANの場合を例に挙げて説明するため、各コンピュータはバス710で接続されている。
第1の管理装置701は、分散システム700の全体を管理するコンピュータである。第1の管理装置701は、キー特徴値の算出をおこなう。また、第1の管理装置701は、木構造データSTを保持している。第1の管理装置701は、クライアントからのリクエストを受け付けて、リクエストに応じたレスポンスを返す。
第2の管理装置702は、キーとキー特徴値とを関連付けたキー特徴値テーブルTCを保持するコンピュータである。第2の管理装置702は、第1の管理装置701で算出されたキー特徴値と算出元となるキーとを、第1の管理装置701から受信して、キー特徴値テーブルTCの新規レコードとして登録する。また、第2の管理装置702は、第1の管理装置701から、キーを受け付けると、キー特徴値テーブルTCを参照して、受け付けたキーに関連付けられているキー特徴値を読み出して、第1の管理装置701に返す。
分散システム700のうち、第1の管理装置701と、第2の管理装置702と、分散装置M1,M2,M3,…と、記憶装置D1,D2,D3,…と、が、木構造データSTの生成をおこなう生成システムとなる。なお、木構造データSTの生成は、第1の管理装置701、第2の管理装置702、および分散装置Mの各機能を有する1台のコンピュータで実現してもよい。
図8は、図7に示したキー特徴値テーブルTCの記憶内容の一例を示す説明図である。図8において、キー特徴値テーブルTCは、キーとキー特徴値とを関連付けて記憶する。なお、ここでは、第1の管理装置701と第2の管理装置702とは別のコンピュータとして説明したが、1台のコンピュータで実現することもできる。
図7に戻り、分散装置M1,M2,M3,…(以下、ある分散装置を「分散装置M」とする)は、それぞれ記憶装置D1,D2,D3,…(以下、分散装置Mの記憶装置を「記憶装置D」とする)を有する。分散装置Mは、キーおよびバリューを有するデータや木構造データSTを記憶装置Dに格納したり、読み出したりする。記憶装置Dとしては、たとえば、フラッシュメモリや磁気ディスク、磁気テープが挙げられる。
分散装置Mは、キーを受け付けると、当該キーに対応するバリューを記憶装置Dから読み出して、要求元のクライアント703に返す。分散装置Mは、木構造データSTのうち自身が担当するセグメントのデータ数の増減処理をおこなう。自身が担当するセグメントとは、保存先情報に分散装置Mのアドレスが登録されているセグメントである。
図6の(E)の例では、分散装置M1の担当セグメントはセグメントSrであり、分散装置M2の担当セグメントはセグメントSlrであり、分散装置M3の担当セグメントはセグメントSllである。そして、分散装置Mは、データ数が上限に到達すると、図3や図5,図6に示したように、局所分割をおこなう。
また、分散装置Mは、局所分割にともない、データ移行もおこなう。また、分散装置Mは、データ数の増減処理や局所分割をおこなった場合は、木構造データSTが更新されているため、他の分散装置Mや第1の管理装置701に、更新後の木構造データSTを配信する。これにより、分散システム700において最新の木構造データSTを保持することができる。
クライアント703は、第1の管理装置701に対しリクエストを送信したり、第1の管理装置701からレスポンスを受信するコンピュータである。クライアント703は、バリューの参照要求として、参照したいバリューに対応するキーを、参照要求として第1の管理装置701に送信する。これにより、第1の管理装置701からバリューを受信することになる。また、データを登録したい場合は、クライアント703は、登録対象データを第1の管理装置701に送信する。これにより、分散装置への格納が成功した場合には、登録完了の通知を第1の管理装置701から受信することになる。
<コンピュータのハードウェア構成例>
図9は、図7に示したコンピュータのハードウェア構成例を示すブロック図である。図9において、コンピュータ(第1の管理装置701、第2の管理装置702、クライアント703、分散装置M)は、CPU(Central Processing Unit)901と、ROM(Read Only Memory)902と、RAM(Random Access Memory)903と、磁気ディスクドライブ904と、磁気ディスク905と、光ディスクドライブ906と、光ディスク907と、ディスプレイ908と、I/F(Interface)909と、キーボード910と、マウス911と、スキャナ912と、プリンタ913と、を備えている。また、各構成部はバス900によってそれぞれ接続されている。
ここで、CPU901は、コンピュータの全体の制御を司る。ROM902は、ブートプログラムなどのプログラムを記憶している。RAM903は、CPU901のワークエリアとして使用される。磁気ディスクドライブ904は、CPU901の制御にしたがって磁気ディスク905に対するデータのリード/ライトを制御する。磁気ディスク905は、磁気ディスクドライブ904の制御で書き込まれたデータを記憶する。
光ディスクドライブ906は、CPU901の制御にしたがって光ディスク907に対するデータのリード/ライトを制御する。光ディスク907は、光ディスクドライブ906の制御で書き込まれたデータを記憶したり、光ディスク907に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ908は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ908は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)909は、通信回線を通じてLAN、WAN、インターネットなどのネットワーク914に接続され、このネットワーク914を介して他の装置に接続される。そして、I/F909は、ネットワーク914と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F909には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード910は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス911は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ912は、画像を光学的に読み取り、コンピュータ内に画像データを取り込む。なお、スキャナ912は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ913は、画像データや文書データを印刷する。プリンタ913には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
<データ参照例>
図10は、データ参照例を示す説明図である。まず、(1)クライアント703がキーkを含む参照要求を、第1の管理装置701に送信する。(2)第1の管理装置701は、キーkを含む参照要求を受け付けると、第2の管理装置702に対し、キーkを送信する。(3)第2の管理装置702は、キーkに対応するキー特徴値cを第1の管理装置701に返す。(4)第1の管理装置701は、キー特徴値cで木構造データSTを探索することにより、キーkに対応するバリューvの保存先となる分散装置Mを特定する。ここでは、分散装置M3とする。
(5)第1の管理装置701は、分散装置M3に、キーkを送信する。(6)分散装置M3は、記憶装置D3からキーkに対応するバリューvを抽出する。(7)分散装置M3は、抽出したバリューvを第1の管理装置701に返す。(8)第1の管理装置701は、バリューvを、参照要求元のクライアント703に返す。これにより、クライアント703は、参照したいバリューvを取得することができる。
なお、バリューvを更新登録する場合もあるため、第1の管理装置701は、バリューvの保存先を一時的に保持しておき、クライアント703から更新後のバリューvを受け取ると、保存先の分散装置M3に、キーkとともに送信する。これにより、分散装置M3では、キーkと更新後のバリューvが記憶装置D3に格納されることになる。
また、削除要求の場合は、(5)において、第1の管理装置701がキーkとともに削除要求を分散装置M3に送ることにより、分散装置M3は、記憶装置D3内のキーkおよびバリューvを削除することになる。
<データ新規登録例>
図11は、データ新規登録例を示す説明図である。まず、(1)クライアント703がキーkおよびバリューvを含むデータ登録要求を、第1の管理装置701に送信する。(2)第1の管理装置701は、データ参照要求を受け付けると、キーkとバリューv内の他のキーとを用いて、キーkのキー特徴値cを算出する。(3)第1の管理装置701は、キーkと算出したキー特徴値cの組を、第2の管理装置702に送信する。(4)第2の管理装置702は、受信したキーkとキー特徴値cとの組をキー特徴値テーブルTCに追加して、登録完了を第1の管理装置701に返す。
(5)第1の管理装置701は、登録完了を受けると、キー特徴値cで木構造データSTを探索することにより、キーkおよびバリューvの保存先となる分散装置Mを特定する。ここでは、分散装置M3とする。このように、新規登録の際に局所性のある分散装置Mが特定されるため、局所性のあるデータ群でグループ化ことができる。
(6)第1の管理装置701は、分散装置M3に、キーkおよびバリューvを送信する。(7)分散装置M3は、記憶装置D3からキーkおよびバリューvを記憶装置D3に登録する。(8)分散装置M3は、登録が成功すると、登録完了の通知を第1の管理装置701に返す。(9)第1の管理装置701は、分散装置M3からの登録完了の通知を受けると、登録要求元のクライアント703に、登録完了を通知する。
<管理装置の機能的構成例>
図12は、第1の管理装置701および第2の管理装置702の機能的構成例を示す機能ブロック図である。第1の管理装置701は、受付部1201と、キー特徴値算出部1202と、格納部1203と、探索部1204と、送信部1205と、転送部1206と、を備える。第2の管理装置702は、抽出部1207を備える。受付部1201〜抽出部1207は、具体的には、たとえば、図9に示したROM902、RAM903、磁気ディスク905、光ディスク907などの記憶装置に記憶されたプログラムをCPU901に実行させることにより、または、I/F909により、その機能を実現する。
まず、第1の管理装置701について説明する。受付部1201は、リクエストを受け付ける。リクエストが、参照要求や更新要求、削除要求である場合は、受付部1201は、参照要求内のキーを読み出す。リクエストが新規登録要求である場合は、受付部1201は、登録要求内のデータからキーおよびバリュー内の他のキーを読み出す。また、受付部1201は、分散装置Mから最新の木構造データSTを受け付けると、記憶領域に格納する。
キー特徴値算出部1202は、受付部1201によって受け付けられたデータのキー特徴値を算出する。キー特徴値は、データ内でのキーおよびバリューに含まれる他のキーの存在を示す指標値である。キー特徴値算出部1202は、データのキー特徴値を、キーの値およびバリューに含まれる他のキーの値に基づいて算出する。具体的には、たとえば、キー特徴値算出部1202は、図2−1において説明したように、ブルームフィルタBFによりデータごとにキー特徴値を算出する。ブルームフィルタBFを用いることにより、データ内のキー群をブルームフィルタBFのビット幅(たとえば、128ビット)で表現できるため、データが持つキーの値の特徴を表現しつつサイズの縮小を図ることができる。
格納部1203は、第1の管理装置701のキー特徴値算出部1202で算出されたキー特徴値とその算出元のキー(バリュー内のキーではない)を受け付けると、第2の管理装置702のキー特徴値テーブルTCに格納する。
探索部1204は、格納済みバリューに対応するキーおよび格納済みバリューを有するデータのキー特徴値と、木構造データST内で分岐する2つのセグメントに対応する2つのサブグラフ特徴値と、に基づいて、木構造データSTを探索する。具体的には、探索部1204は、格納済みデータのキー特徴値に近い方のサブグラフ特徴値を有するサブグラフに対応するセグメントに遷移するセグメント探索を、遷移先のセグメントから分岐する2つのセグメントが存在しなくなるまで実行する。たとえば、探索部1204は、図6の(E)で説明したように、探索をおこなう。探索でリーフとなるセグメントが特定された場合、そのセグメントの保存先情報を参照することにより、探索に用いたキー特徴値の算出元のデータとなる保存先の分散装置Mを特定することができる。
送信部1205は、探索部1204による探索結果により特定された分散装置Mに対して、送信をおこなう。具体的には、たとえば、クライアント703からの参照要求の場合は、送信部1205は、図10に示したように、キーkを送信する。また、クライアント703からの新規登録要求の場合は、送信部1205は、図11に示したように、キーkおよびバリューvを送信する。
転送部1206は、分散装置Mから送信されてきた情報を、リクエストの要求元のクライアント703に転送する。具体的には、たとえば、クライアント703からの参照要求の場合は、転送部1206は、図10に示したように、分散装置M3からのバリューvを取得して、参照要求元のクライアント703に転送する。また、クライアント703からの新規登録要求の場合は、転送部1206は、図11に示したように、分散装置M3からの登録完了の通知を、登録要求元のクライアント703に転送する。
つぎに、第2の管理装置702について説明する。抽出部1207は、第1の管理装置701からキーを受け付けると、キー特徴値テーブルTCを参照して、受け付けたキーに対応するキー特徴値を抽出する。そして、抽出部1207は、第1の管理装置701に、抽出したキー特徴値を渡す。渡されたキー特徴値は、第1の管理装置701の送信部1205により、探索結果で得られた分散装置Mに送信される。
<分散装置Mの機能的構成例>
図13は、分散装置Mの機能的構成例を示すブロック図である。分散装置Mは、作成部1301と、分割部1302と、サブグラフ特徴値算出部1303と、取得部1304と、決定部1305と、生成部1306と、設定部1307と、受付部1308と、格納部1309と、更新部1310と、検出部1311と、を備える。作成部1301〜検出部1311は、具体的には、たとえば、図9に示したROM902、RAM903、磁気ディスク905、光ディスク907などの記憶装置に記憶されたプログラムをCPU901に実行させることにより、または、I/F909により、その機能を実現する。
作成部1301は、分散装置Mの記憶装置Dに記憶されているキーおよびバリューを有するデータ集合1300に基づいて、キーをノードとしキーとバリュー内の他のキーとの組み合わせをノード間のエッジとするグラフを作成する。具体的には、たとえば、図1で説明したように、作成部1301は、セグメントS0からグラフG0を作成する。
分割部1302は、作成部1301によって生成されたグラフを分割する。分割部1302は、たとえば、ノード数が均等になるように、また、境界をまたぐエッジ本数ができる限り少なくなるように分割する。分割部1302では、ノード数を同数に分割するが、予め設定した許容範囲であれば同数でなくてもよい。これにより、エッジで直接つながれた隣接するノードは同じサブグラフに割り当てられる確率が高くなる。グラフ分割としては、たとえば、Kernighan−Lin algorithmやFiduccia−Mattheyses algorithmが採用される。図1の例では、分割部1302は、グラフG0をグラフG1,G2に分割する。
サブグラフ特徴値算出部1303は、分割部1302によって得られた第1のサブグラフ内の第1のキー群の存在を示す第1のサブグラフ特徴値を第1のキー群の各キーの値に基づいて算出する。また、サブグラフ特徴値算出部1303は、分割部1302によって得られた第2のサブグラフ内の第2のキー群の存在を示す第2のサブグラフ特徴値を第2のキー群の各キーの値に基づいて算出する。図1の例で説明すると、サブグラフ特徴値算出部1303は、サブグラフG1のキーka〜keの値を用いてサブグラフG1のサブグラフ特徴値C(G1)を算出する。たとえば、上述したようにブルームフィルタBFを用いる場合は、サブグラフ特徴値算出部1303は、サブグラフG1のキーka〜keの値の各々を、同一のハッシュ関数に与えて、キーごとのハッシュ値を得る。
そして、サブグラフ特徴値算出部1303は、各ハッシュ値をブルームフィルタBFのビット幅で除算したときの余りの値に対応するビット位置のビットを立てる。これにより、同一キーであれば同一ビット位置のビットが立てられるため、キー特徴値と比較した場合、共通ビットを参照することにより、同一キーが存在するであろうことがわかる。ただし、ブルームフィルタBFの擬陽性により同一キーが存在するとは限らないが、ブルームフィルタBFを用いることにより、サブグラフ内のキー群をブルームフィルタBFのビット幅(たとえば、128ビット)で表現できる。したがって、サブグラフ内のキーの値の特徴を表現しつつサイズの縮小を図ることができる。なお、第2のサブグラフについても、第1のサブグラフと同様にしてサブグラフ特徴値が求められる。
取得部1304は、データ内でのキーおよびバリューに含まれる他のキーの存在を示すデータのキー特徴値を、データ集合1300内のデータごとに取得する。具体的には、たとえば、取得部1304は、データ集合1300内の各データのキーごとに、キー特徴値の取得要求を第1の管理装置701に送る。キー特徴値の取得要求には、データ集合1300内の各データのキーが含まれている。したがって、第1の管理装置701は、取得要求内のキーを第2の管理装置702に送ることにより、第2の管理装置702から、取得要求内のキーごとにキー特徴値を受ける。このあと、取得部1304は、第1の管理装置701から取得要求内のキーごとのキー特徴値を取得することになる。
なお、取得部1304には、第1の管理装置701のキー特徴値算出部1202の機能を持たせてもよい。この場合、第1の管理装置701に取得要求を送ることなく、各分散装置M内でキー特徴値を得ることができ、分散システム700内の通信負荷の低減化を図ることができる。
決定部1305は、各データについて、キー特徴値と、第1および第2のサブグラフ特徴値と、に基づいて、第1のサブグラフに対応する第1のセグメントと第2のサブグラフに対応する第2のセグメントのうちデータを配置させるセグメントを決定する。すなわち、決定部1305は、データが第1および第2のサブグラフのうちいずれのサブグラフとの間に局所性があるか否かをデータごとに判断する。具体的には、たとえば、決定部1305は、図3に示したように、距離d1,d2を求めて、データがいずれのサブグラフとの間に局所性があるかを判断することになる。たとえば、図3の(A)の場合は、データaを配置させるセグメントは、セグメントS1に決定される。同様に、図3の(B)の場合は、データeを配置させるセグメントは、セグメントS2に決定される。なお、図3の例では、距離d=1/(n+1)(nは共通ビット数)としたが、単に、共通ビット数nで判断してもよい。この場合、共通ビット数nの多いほうのサブグラフとの間に局所性があると判断される。
生成部1306は、キー特徴値算出部1202によって算出されたキー特徴値が類似するデータ同士を同一のグループとするセグメントを生成する。具体的には、たとえば、図5の(C)に示したように、生成部1306は、分岐先の2つのセグメントの分割元となるセグメントに所属する各データを、分割元となるセグメントから決定部1305によって決定されたセグメントに配置させる。これにより、分割元となるセグメントと分岐先の2つのセグメントとが関連付けられた木構造データSTを生成する。図5の(C)に示した例では、生成部1306は、セグメントSを、セグメントSrとセグメントSlとに分割する。また、図6の(E)に示した例では、生成部1306は、セグメントSlを、セグメントSlrとセグメントSllとに分割する。これにより、生成部1306は、局所性のあるデータ同士が所属するセグメントによりグループ化することができる。なお、サブグラフ特徴値と距離が近いキー特徴値のデータ同士が同一セグメントに所属することになるため、同一セグメント内の所属データ同士のキー特徴値は、所属先のセグメントのサブグラフ特徴値を介して間接的に類似していることになる。
設定部1307は、生成されたセグメント内のデータの格納先を設定する。具体的には、たとえば、設定部1307は、分岐先の2つのセグメントのうちいずれか一方のセグメントの所属データ群の格納先を、どのセグメントの所属データも格納されていない他の格納先に設定する。そして、設定部1307は、分岐先の2つのセグメントのうちいずれか一方のセグメントの所属データ群の格納先を、どのセグメントの所属データも格納されていない他の格納先に移行させる。具体的には、たとえば、設定部1307は、生成部1306によって生成された2つのセグメントのうちいずれか一方のセグメント内のデータ群の格納先を、分散装置Mの記憶装置Dとは異なる他の分散装置Mの記憶装置Dに設定する。そして、設定部1307は、2つのセグメントのうちいずれか一方のセグメント内のデータ群を、設定された他の分散装置Mの記憶装置Dに移行させる。すなわちセグメントの分割で得られた2つのセグメントのうち一方のセグメントのデータ群は、そのまま分散装置Mの記憶装置Dに残しておく。そして、設定部1307は、他方のセグメントのデータ群を他の分散装置Mの記憶装置Dに移行させる。
たとえば、図6の(E)では、セグメントSlr,Sllのうちデータ数が少ないほうのセグメントSllで特定されるデータ群を他の分散装置Mの記憶装置Dに移行させる。すなわち、一方のセグメントSlrで特定されるデータ群については、データ移行しなくて済むことになる。この場合、データ数の少ないほうのデータ群を移行させるため、データ数が多いほうのデータ群を移行させる場合にくらべて、データ転送量を抑制でき、移行処理の効率化を図ることができる。
ここで、他の分散装置Mがどの分散装置Mであるかは、第1の管理装置701に問い合わせることとしてもよい。この場合、第1の管理装置701は、各分散装置Mの記憶容量を集計しておき、最も空き容量の多い分散装置Mを移行先としてもよい。また、移行処理については、他の分散装置Mの記憶装置Dではなく、自装置の記憶装置Dでもよい。この場合、分割されたセグメント同士で記憶領域をわけることになる。同一記憶装置Dで複数のセグメントに対応付ける場合であっても、各セグメントの保存先情報として、分散装置Mのアドレスだけではなく記憶領域のアドレスまで登録しておけばよい。
受付部1308は、登録対象キーおよび登録対象バリューを有する登録対象データを受け付ける。具体的には、たとえば、受付部1308は、図11の(6)に示したように、登録対象キーkおよび登録対象バリューvの組を受け付ける。また、受付部1308は、データの削除要求も受け付ける。
格納部1309は、受付部1308により、登録対象データが受け付けられた場合は、データ集合1300に登録対象データを格納する。一方、格納部1309は、削除要求が受け付けられた場合は、データ集合1300から削除対象データを削除する。
更新部1310は、木構造データST内のリーフのうち、分散装置Mの記憶装置Dが記憶するデータ集合1300を特定する担当リーフのデータ数を更新する。ここで、担当リーフとは、保存先情報で分散装置Mを指定するセグメントである。受付部1308により、登録対象データが受け付けられた場合は、更新部1310は、担当リーフのデータ数を1増加させる。一方、削除要求が受け付けられた場合は、そのデータ(キーとバリューの組)はデータ集合1300から削除されるため、更新部1310は、担当リーフのデータ数を1減少させる。
検出部1311は、更新部1310によって更新された結果、担当リーフのデータ数がしきい値に到達したことを検出する。しきい値とは、セグメントのデータ数の上限である。図5および図6の例では、データ数の上限を「10」としている。データ数がしきい値に到達したことが検出されると、作成部1301では、グラフを生成することになる。これにより、グラフ分割、サブグラフ特徴値の算出、キー特徴値の取得、局所性の判断、セグメント分割が実行され、再帰的にセグメント分割が実行されることになる。
<第1の管理装置701による参照要求処理>
図14は、第1の管理装置701による参照要求処理の詳細な処理手順を示すフローチャートである。まず、第1の管理装置701は、クライアント703から参照要求としてのキーの受付を待ち(ステップS1401:No)、キーが受け付けられると(ステップS1401:Yes)、受け付けられたキーを第2の管理装置702に送信し、第2の管理装置702からキーに対応するキー特徴値を取得する(ステップS1402)。
つぎに、第1の管理装置701は、取得したキー特徴値で木構造データSTをルートから探索し、受け付けたキーに対応するバリューの保存先を特定する(ステップS1403)。そして、第1の管理装置701は、特定した保存先となる分散装置Mに、受け付けたキーを送信する(ステップS1404)。これにより、保存先の分散装置Mでは、受信したキーに対応するバリューを記憶装置Dから抽出し、第1の管理装置701に返すことになる。
このあと、第1の管理装置701は、保存先となる分散装置Mからバリューが受信されたか否かを判断する(ステップS1405)。ここでは、例として所定時間以内に受信されれば受信成功とする。受信成功である場合(ステップS1405:Yes)、第1の管理装置701は、参照要求したクライアント703に、受信したバリューを送信する(ステップS1406)。一方、受信成功しなかった場合(ステップS1405:No)、第1の管理装置701は、参照要求したクライアント703に、不成功通知を送信する(ステップS1407)。これにより、一連の参照要求処理を終了する。図14のフローチャートによれば、クライアント703は、キーを与えるだけで、対応するバリューを取得することができる。
<第1の管理装置701による新規登録要求処理>
図15は、第1の管理装置701による新規登録要求処理の詳細な処理手順を示すフローチャートである。まず、第1の管理装置701は、クライアント703から新規登録要求としてのデータの受付を待ち(ステップS1501:No)、データが受け付けられると(ステップS1501:Yes)、受け付けられたデータからキー群を抽出する(ステップS1502)。ここでは、バリューに含まれる他のキーも抽出される。つぎに、第1の管理装置701は、抽出したキー群を用いてキー特徴値を算出する(ステップS1503)。そして、第1の管理装置701は、第2の管理装置702にデータのキー(バリューに含まれる他のキーではない)とキー特徴値とを関連付けて送信し、第2の管理装置702のキー特徴値テーブルTCにおいて保存する(ステップS1504)。これにより、その後、参照要求があった場合でも、キー特徴値を入手することができる。
つぎに、第1の管理装置701は、算出したキー特徴値で木構造データSTを探索して、受け付けたデータの保存先となる分散装置Mを特定する(ステップS1505)。そして、第1の管理装置701は、保存先となる分散装置Mに、受け付けたデータを送信する(ステップS1506)。これにより、保存先となる分散装置Mでは、送信されてきたデータを受け付けて、記憶装置Dに格納する。また、分散装置Mは、木構造データSTにおける担当リーフ内のデータ数を1増加させることになる。保存先となる分散装置Mは、データを記憶装置Dに格納し、ノード数の増加が完了すると、第1の管理装置701に対し登録完了通知を返すことになる。
このあと、第1の管理装置701は、保存先となる分散装置Mから登録完了通知が受信されたか否かを判断する(ステップS1507)。ここでは、例として所定時間以内に受信されれば登録成功とする。登録成功である場合(ステップS1507:Yes)、第1の管理装置701は、新規登録要求したクライアント703に、受信した登録完了通知を送信する(ステップS1508)。一方、登録成功しなかった場合(ステップS1507:No)、第1の管理装置701は、新規登録要求したクライアント703に、不成功通知を送信する(ステップS1509)。これにより、一連の新規登録要求処理を終了する。図15のフローチャートによれば、クライアント703は、データを与えるだけで、局所性の高い記憶装置Dに登録することができる。
<分散装置Mによる局所分割処理>
図16は、分散装置Mによる局所分割処理の詳細な処理手順を示すフローチャートである。まず、分散装置Mは、担当リーフのデータ数がしきい値に到達するまで待ち受ける(ステップS1601:No)。データ数がしきい値に到達した場合(ステップS1601:Yes)、分散装置Mは、グラフを生成し(ステップS1602)、生成したグラフを分割する(ステップS1603)。このあと、分散装置Mは、サブグラフごとに、サブグラフ特徴値を算出する(ステップS1604)。ここでは、サブグラフ特徴値Cr,Clとする。
そして、分散装置Mは、記憶装置Dに未選択データがあるか否かを判断し(ステップS1605)、ある場合は(ステップS1605:Yes)、未選択データを1つ選択する(ステップS1606)。つぎに、分散装置Mは、未選択データについてのキー特徴値を取得する(ステップS1607)。ここでは、キー特徴値Cnとする。
このあと、分散装置Mは、サブグラフ特徴値Cr,Clのうちキー特徴値Cnとの間でより局所性のある子セグメントに、選択したデータを振り分けて(ステップS1608)、ステップS1605に戻る。ステップS1605:Yes〜ステップS1608のループを未選択データがなくなるまで繰り返すことにより、各データが、担当リーフから分割された2つの子セグメントに振り分けられる。
そして、分散装置Mは、未選択データがない場合(ステップS1605:No)、いずれか一方のセグメントに属するデータ群の保存先を自装置に設定する(ステップS1609)。すなわち、分散装置Mは、いずれか一方のセグメントの保存先情報を、自装置のアドレスとし、担当リーフの保存先情報を消去し、データ数を「0」にする。これにより、いずれか一方のセグメントがあらたな担当リーフとなる。そして、いずれか一方のセグメントのデータ群を、記憶装置Dに格納する。
また、分散装置Mは、他方の子セグメントのデータ群の保存先情報を、他の分散装置Mに設定する(ステップS1610)。そして、分散装置Mは、保存先情報に設定した他の分散装置に、他方の子セグメントのデータ群を送信する(ステップS1611)。これにより、局所分割でのデータ移行が完了することになる。
以上説明したように、本実施の形態によれば、データ内のキーの組み合わせからデータ同士の関連性を検出することにより、関連性のあるデータ同士をグループ化することができる。具体的には、キーの値またはキーの属性に関連性がないデータ間の局所性を用いて同一グループに割り当てることにより、関連性のあるデータ同士をグループ化することができる。たとえば、キーの値の大小関係には関連性がない場合や、キーに性別、職業などの属性が関連付けられていない場合であっても、局所性のあるデータ同士でグループ化することができる。
また、グラフ分割において、ノード数が均等、かつ、エッジを横切る本数が最小となるように分割することにより、エッジで直接つながれた隣接するノードを、高い確率で同じサブグラフに割り当てることができる。
また、サブグラフ特徴値の算出において、サブグラフ特徴値のサイズを、サブグラフ特徴値の算出元となるキー群のサイズよりも小さくすることにより、省メモリ化を図ることができる。特に、ブルームフィルタを用いることにより、どのキーと関連性があるかわからなくても、すなわち、他のキーの値がわからなくても、局所性のあるデータ同士であることがわかる。
また、ブルームフィルタを用いることにより、複数のキーを凝縮した特徴値(キー特徴値、サブグラフ特徴値)を得ることができ、複数のキーを保存するよりも省メモリ化を図ることができる。また、特徴値ではキーの値自体はわからないため、キーの値を用いて記憶装置Dへアクセスすることはない。すなわち、木構造データで最終的に探索された記憶装置Dにのみアクセスするだけで、データを取得することができる。これにより、データを見つけるまでの記憶装置Dへのアクセスを低減することができる。
また、局所分割されたいずれか一方のセグメントのデータ群を他の分散装置に移行することにより、分散装置群を、セグメント単位で分割することができる。たとえば、従来の分散キーバリューストアを用いると、キーのハッシュ値に基づいて対応するサーバが決定されるため、グラフ上隣接しているデータが、まったく異なるサーバに配置されてしまう。このため、グラフで隣接しあうデータが連続してアクセスされても、別のサーバにあるため、キャッシュが効かず、それぞれディスクへのシークが発生してしまう。
これに対し、本実施の形態では、図1に示したようにグラフ上隣接しあうデータは、同一の分散装置に割り当てられる確率が高い。これによりデータアクセス全体のコストを下げることができる。たとえば、データアクセスのための通信が一回で済んだり、ディスクアクセスが一回で済んだりすることになる。
また、局所分割によるデータ移行に際し、割り当てられた所属データ群が少ないほうのセグメントを移行させることにより、データ移行にともなう通信量の低減化や、移行先の分散装置Mでの記憶装置Dへの書き込み量の低減化を図ることができる。
また、クライアントからデータの登録要求があった場合、局所分割により、局所性の高いセグメントに自動的に割り当てられる。したがって、クライアント側は、「その分散装置に割り当てるのが最適であるか」といったことを考慮する必要がない。したがって、適切なデータ登録を簡単におこなうことができる。
また、データごとにキー特徴値を求めることにより、データ内のキーおよびバリューに含まれている他のキーの存在を、データごとに特徴付けることができる。また、キー特徴値の算出において、キー特徴値のサイズを、キー特徴値の算出元となるキー群のサイズよりも小さくすることにより、省メモリ化を図ることができる。特に、ブルームフィルタを用いることにより、どのキーと関連性があるかわからなくても、すなわち、他のキーの値がわからなくても、同一データ内のキーであることがわかる。
また、局所分割により再帰的に構築された木構造データをキー特徴値で探索することにより、保存先の分散装置を特定することができる。これにより、特定された分散装置に登録したいデータを送るだけで、局所性の高いデータ同士でグループ化することができる。
また、データを参照したい場合についても、同様に探索することにより、参照先の分散装置を特定することができる。互いのキーがバリューに存在するデータ同士は、局所性により同一の分散装置の記憶装置に保存されているため、データアクセスのコストの低減化を図ることができる。
また、各セグメントに対し、割り当てられるデータ数の上限を決めておくことで上限を超えるまでは、該当するセグメントについてデータ登録をおこなうことにより、局所性のあるデータ同士を同一セグメントでグループ化することができる。また、上限に到達した場合には、局所分割をおこなうことにより、データの増加にともなう局所性のばらつきを抑制することができる。
また、上限に到達する都度局所分割することにより、再帰的に木構造データSTを構築することができる。また、局所分割は、各分散装置で実行されるため、単一の装置で実行するよりも負荷分散を図ることができる。また、データの増減や局所分割で木構造データSTが更新された場合には、他の分散装置や第1の管理装置701に対し最新の木構造データSTを配信することにより、装置間の木構造データSTの差をなくすことができる。
また、配信のタイミングについては、更新後すぐにおこなってもよく、また、第1の管理装置701においてデータ登録要求や参照要求を分散装置に送信した結果、不成功になった場合に、各分散装置から木構造データSTを要求することとしてもよい。この場合、各分散装置は、自身が担当するセグメントについて、更新前後の差分データを第1の管理装置701に送ることにより、第1の管理装置701で最新の木構造データSTを構築することができる。また、第1の管理装置701で最新の木構造データSTを構築したあとは、分散装置群に配信すればよい。
また、上述した実施の形態では、1つのセグメントの所属データ群を1台の分散装置の記憶装置に保存することとしたが、1台の分散装置の記憶装置で複数のセグメントの各データ群を保存することとしてもよい。
なお、本実施の形態で説明した分散方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出し、
算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成し、
生成されたセグメント内のデータの格納先を設定する、
処理をコンピュータに実行させることを特徴とする生成プログラム。
(付記2)前記集合内の前記各データが有する前記キーをノードとし、前記キーと当該キーに対応するバリューに含まれる前記他のキーとの関連をノード間のエッジとするグラフを作成し、
作成された前記グラフを第1のグラフと第2のグラフとに分割し、
分割された前記第1のグラフ内の第1のキー群の存在を示す第1のグラフ特徴値を前記第1のキー群の各キーの値に基づいて算出するとともに、分割された前記第2のグラフ内の第2のキー群の存在を示す第2のグラフ特徴値を前記第2のキー群の各キーの値に基づいて算出し、
前記各データについて、前記キー特徴値と、前記第1および第2のグラフ特徴値と、に基づいて、前記第1のグラフに対応する第1のセグメントと前記第2のグラフに対応する第2のセグメントとのうち前記データを配置させるセグメントを決定する、処理を前記コンピュータに実行させ、
前記生成する処理は、
前記各データを前記グラフに対応するセグメントから前記決定する処理によって決定されたセグメントに配置させることにより、前記グラフに対応するセグメントと前記第1および第2のセグメントとが関連付けられた木構造データを生成することを特徴とする付記1に記載の生成プログラム。
(付記3)前記分割する処理は、
前記第1のグラフのノード数と前記第2のグラフのノード数とが均等、かつ、エッジを横切る本数が最小となるように分割することを特徴とする付記2に記載の生成プログラム。
(付記4)前記グラフ特徴値を算出する処理は、
前記第1のキー群のサイズよりも小さいサイズとなる前記第1のグラフ特徴値を算出するとともに、前記第2のキー群のサイズよりも小さいサイズとなる前記第2のグラフ特徴値を算出することを特徴とする付記2または3に記載の生成プログラム。
(付記5)前記グラフ特徴値を算出する処理は、
ブルームフィルタに基づいて前記第1および第2のグラフ特徴値を算出することを特徴とする付記4に記載の生成プログラム。
(付記6)前記設定する処理は、
前記第1および第2のセグメントのうちいずれか一方のセグメントの所属データ群の格納先を、どのセグメントの所属データも格納されていない他の格納先に設定することを特徴とする付記2〜5のいずれか一つに記載の生成プログラム。
(付記7)前記設定する処理は、
前記第1および第2のセグメントのうちいずれか一方のセグメントの所属データ群を、どのセグメントの所属データも格納されていない他の格納先に移行させることを特徴とする付記6に記載の生成プログラム。
(付記8)前記決定する処理は、
登録対象キーおよび当該登録対象キーに対応する登録対象バリューを有する登録対象データのキー特徴値と、前記第1および第2のグラフ特徴値と、に基づいて、前記第1のグラフに対応する第1のセグメントと前記第2のグラフに対応する第2のセグメントのうち前記データを配置させるセグメントを決定することを特徴とする付記2〜7のいずれか一つに記載の生成プログラム。
(付記9)前記第1および第2のセグメントの一方のセグメントの所属データ群のデータ数がしきい値に到達したことを検出する処理を前記コンピュータに実行させ、
前記分割する処理は、
検出された前記一方のセグメントに対応するグラフを第3のグラフと第4のグラフとに分割し、
前記グラフ特徴値を算出する処理は、
分割された前記第3のグラフ内の第3のキー群の存在を示す第3のグラフ特徴値を前記第3のキー群の各キーの値に基づいて算出するとともに、分割された前記第4のグラフ内の第4のキー群の存在を示す第4のグラフ特徴値を前記第4のキー群の各キーの値に基づいて算出し、
前記決定する処理は、
前記一方のセグメントの所属データ群の各所属データについて、当該所属データのキー特徴値と、前記第3および第4のグラフ特徴値と、に基づいて、前記第3のグラフに対応する第3のセグメントと前記第4のグラフに対応する第4のセグメントのうち前記所属データを配置させるセグメントを決定し、
前記木構造データを生成する処理は、
前記各所属データを前記一方のセグメントから前記決定する処理によって決定されたセグメントに配置させることにより、前記グラフに対応するセグメントと前記第1および第2のセグメントとが関連付けられ、かつ、前記一方のセグメントと前記第3および第4のセグメントが関連付けられた木構造データを作成することを特徴とする付記8に記載の生成プログラム。
(付記10)前記設定する処理は、
前記第3および第4のセグメントのうちいずれか一方のセグメントの所属データ群の格納先を、どのセグメントの所属データも格納されていない他の格納先に設定することを特徴とする付記9に記載の生成プログラム。
(付記11)前記設定する処理は、
前記第3および第4のセグメントのうちいずれか一方のセグメントの所属データ群を、どのセグメントの所属データも格納されていない他の格納先に移行させることを特徴とする付記10に記載の生成プログラム。
(付記12)要求元から格納済みバリューに対応するキーを含む取得要求を受け付け、
前記格納済みバリューに対応するキーおよび前記格納済みバリューを有するデータのキー特徴値と、前記木構造データ内で分岐する2つのセグメントに対応する2つのグラフ特徴値と、に基づいて、前記格納済みデータのキー特徴値に近い方のグラフ特徴値を有するグラフに対応するセグメントに遷移するセグメント探索を、遷移先のセグメントから分岐する2つのセグメントが存在しなくなるまで実行し、
探索されたセグメントに所属する所属データ群の格納先から前記格納済みバリューに対応するキーを用いて前記格納済みバリューを取得して、前記要求元に転送する、
処理を前記コンピュータに実行させることを特徴とする付記2〜11のいずれか一つに記載の生成プログラム。
(付記13)キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出し、
算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成し、
生成されたセグメント内のデータの格納先を設定する、
処理をコンピュータが実行することを特徴とする生成方法。
(付記14)キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出するキー特徴値算出部と、
前記キー特徴値算出部によって算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成する生成部と、
前記生成部によって生成されたセグメント内のデータの格納先を設定する設定部と、
を有することを特徴とする生成システム。
700 分散システム
701 第1の管理装置
702 第2の管理装置
703 クライアント
1201 受付部
1202 キー特徴値算出部
1203 格納部
1204 探索部
1205 送信部
1206 転送部
1207 抽出部
1300 データ集合
1301 作成部
1302 分割部
1303 サブグラフ特徴値算出部
1304 取得部
1305 決定部
1306 生成部
1307 設定部
1308 受付部
1309 格納部
1310 更新部
1311 検出部
分散装置 M
記憶装置 D
木構造データ ST
キー特徴値テーブルTC

Claims (9)

  1. キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出し、
    算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成し、
    生成されたセグメント内のデータの格納先を設定する、
    処理をコンピュータに実行させることを特徴とする生成プログラム。
  2. 前記集合内の前記各データが有する前記キーをノードとし、前記キーと当該キーに対応するバリューに含まれる前記他のキーとの関連をノード間のエッジとするグラフを作成し、
    作成された前記グラフを第1のグラフと第2のグラフとに分割し、
    分割された前記第1のグラフ内の第1のキー群の存在を示す第1のグラフ特徴値を前記第1のキー群の各キーの値に基づいて算出するとともに、分割された前記第2のグラフ内の第2のキー群の存在を示す第2のグラフ特徴値を前記第2のキー群の各キーの値に基づいて算出し、
    前記各データについて、前記キー特徴値と、前記第1および第2のグラフ特徴値と、に基づいて、前記第1のグラフに対応する第1のセグメントと前記第2のグラフに対応する第2のセグメントとのうち前記データを配置させるセグメントを決定する、
    処理を前記コンピュータに実行させ、
    前記生成する処理は、
    前記各データを前記グラフに対応するセグメントから前記決定する処理によって決定されたセグメントに配置させることにより、前記グラフに対応するセグメントと前記第1および第2のセグメントとが関連付けられた木構造データを生成することを特徴とする請求項1に記載の生成プログラム。
  3. 前記分割する処理は、
    前記第1のグラフのノード数と前記第2のグラフのノード数とが均等、かつ、エッジを横切る本数が最小となるように分割することを特徴とする請求項2に記載の生成プログラム。
  4. 前記グラフ特徴値を算出する処理は、
    前記第1のキー群のサイズよりも小さいサイズとなる前記第1のグラフ特徴値を算出するとともに、前記第2のキー群のサイズよりも小さいサイズとなる前記第2のグラフ特徴値を算出することを特徴とする請求項2または3に記載の生成プログラム。
  5. 前記決定する処理は、
    登録対象キーおよび当該登録対象キーに対応する登録対象バリューを有する登録対象データのキー特徴値と、前記第1および第2のグラフ特徴値と、に基づいて、前記第1のグラフに対応する第1のセグメントと前記第2のグラフに対応する第2のセグメントのうち前記データを配置させるセグメントを決定することを特徴とする請求項2〜4のいずれか一つに記載の生成プログラム。
  6. 前記第1および第2のセグメントの一方のセグメントの所属データ群のデータ数がしきい値に到達したことを検出する処理を前記コンピュータに実行させ、
    前記分割する処理は、
    検出された前記一方のセグメントに対応するグラフを第3のグラフと第4のグラフとに分割し、
    前記グラフ特徴値を算出する処理は、
    分割された前記第3のグラフ内の第3のキー群の存在を示す第3のグラフ特徴値を前記第3のキー群の各キーの値に基づいて算出するとともに、分割された前記第4のグラフ内の第4のキー群の存在を示す第4のグラフ特徴値を前記第4のキー群の各キーの値に基づいて算出し、
    前記決定する処理は、
    前記一方のセグメントの所属データ群の各所属データについて、当該所属データのキー特徴値と、前記第3および第4のグラフ特徴値と、に基づいて、前記第3のグラフに対応する第3のセグメントと前記第4のグラフに対応する第4のセグメントのうち前記所属データを配置させるセグメントを決定し、
    前記木構造データを生成する処理は、
    前記各所属データを前記一方のセグメントから前記決定する処理によって決定されたセグメントに配置させることにより、前記グラフに対応するセグメントと前記第1および第2のセグメントとが関連付けられ、かつ、前記一方のセグメントと前記第3および第4のセグメントが関連付けられた木構造データを作成することを特徴とする請求項5に記載の生成プログラム。
  7. 要求元から格納済みバリューに対応するキーを含む取得要求を受け付け、
    前記格納済みバリューに対応するキーおよび前記格納済みバリューを有するデータのキー特徴値と、前記木構造データ内で分岐する2つのセグメントに対応する2つのグラフ特徴値と、に基づいて、前記格納済みデータのキー特徴値に近い方のグラフ特徴値を有するグラフに対応するセグメントに遷移するセグメント探索を、遷移先のセグメントから分岐する2つのセグメントが存在しなくなるまで実行し、
    探索されたセグメントに所属する所属データ群の格納先から前記格納済みバリューに対応するキーを用いて前記格納済みバリューを取得して、前記要求元に転送する、
    処理を前記コンピュータに実行させることを特徴とする請求項2〜6のいずれか一つに記載の生成プログラム。
  8. キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出し、
    算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成し、
    生成されたセグメント内のデータの格納先を設定する、
    処理をコンピュータが実行することを特徴とする生成方法。
  9. キーおよび当該キーに対応するバリューを有するデータの集合内の各データについて、前記データ内での前記キーと前記バリューに含まれる他のキーとの存在を示す指標値である前記データのキー特徴値を、前記キーの値および前記バリューに含まれる前記他のキーの値に基づいて算出するキー特徴値算出部と、
    前記キー特徴値算出部によって算出された前記キー特徴値が類似するデータ同士を同一のグループとするセグメントを生成する生成部と、
    前記生成部によって生成されたセグメント内のデータの格納先を設定する設定部と、
    を有することを特徴とする生成システム。
JP2012019283A 2012-01-31 2012-01-31 生成プログラム、生成方法、および生成システム Expired - Fee Related JP5825122B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012019283A JP5825122B2 (ja) 2012-01-31 2012-01-31 生成プログラム、生成方法、および生成システム
US13/740,585 US9002844B2 (en) 2012-01-31 2013-01-14 Generating method, generating system, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012019283A JP5825122B2 (ja) 2012-01-31 2012-01-31 生成プログラム、生成方法、および生成システム

Publications (2)

Publication Number Publication Date
JP2013156960A true JP2013156960A (ja) 2013-08-15
JP5825122B2 JP5825122B2 (ja) 2015-12-02

Family

ID=48871203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012019283A Expired - Fee Related JP5825122B2 (ja) 2012-01-31 2012-01-31 生成プログラム、生成方法、および生成システム

Country Status (2)

Country Link
US (1) US9002844B2 (ja)
JP (1) JP5825122B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016066142A (ja) * 2014-09-24 2016-04-28 富士通株式会社 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP2017111692A (ja) * 2015-12-18 2017-06-22 株式会社日立製作所 系列データ管理システムおよび装置
JP2018088215A (ja) * 2016-11-30 2018-06-07 富士通株式会社 データ管理プログラム、データ管理方法及びデータ管理装置
JP2018517956A (ja) * 2015-03-24 2018-07-05 キンダイ、インコーポレイテッドKyndi, Inc. コグニティブメモリによるグラフのインデキシング、格納、および検索
JP2019020806A (ja) * 2017-07-12 2019-02-07 富士ゼロックス株式会社 情報処理装置およびプログラム
US10803036B2 (en) 2016-08-22 2020-10-13 Fujitsu Limited Non-transitory computer-readable storage medium, data distribution method, and data distribution device

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355166B2 (en) * 2013-01-31 2016-05-31 Hewlett Packard Enterprise Development Lp Clustering signifiers in a semantics graph
US9367690B2 (en) * 2014-07-01 2016-06-14 Moxa Inc. Encryption and decryption methods applied on operating system
US10050784B2 (en) * 2014-11-13 2018-08-14 Secure Channels Inc. System and method for generating a cryptographic key
US11853562B1 (en) * 2022-06-01 2023-12-26 Western Digital Technologies, Inc. Read look ahead based on key analysis in key value data storage devices

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008102795A (ja) * 2006-10-19 2008-05-01 Fuji Xerox Co Ltd ファイル管理装置、システム及びプログラム
JP2009505290A (ja) * 2005-08-15 2009-02-05 グーグル・インコーポレーテッド 集合の類似性に基づく拡張性に富むユーザクラスタリング
US20090043797A1 (en) * 2007-07-27 2009-02-12 Sparkip, Inc. System And Methods For Clustering Large Database of Documents
JP2009134341A (ja) * 2007-11-28 2009-06-18 Mitsubishi Electric Corp ピア検索方法および通信装置
US20110234594A1 (en) * 2010-03-26 2011-09-29 Microsoft Corporation Graph clustering

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3791239B2 (ja) 1998-06-09 2006-06-28 松下電器産業株式会社 グラフ表現変換方法及びその装置、並びに自動配置方法及びその装置
JP2010123038A (ja) 2008-11-21 2010-06-03 Nippon Telegr & Teleph Corp <Ntt> 関連ウェブページ発見装置、関連ウェブページ発見方法および関連ウェブページ発見プログラム
WO2011023134A1 (en) * 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
US8819452B2 (en) * 2009-11-25 2014-08-26 Cleversafe, Inc. Efficient storage of encrypted data in a dispersed storage network
JP5342087B2 (ja) * 2011-03-30 2013-11-13 株式会社日立製作所 計算機システム及びデータ管理方法
US10671585B2 (en) * 2012-01-31 2020-06-02 Pure Storage, Inc. Storing indexed data to a dispersed storage network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505290A (ja) * 2005-08-15 2009-02-05 グーグル・インコーポレーテッド 集合の類似性に基づく拡張性に富むユーザクラスタリング
JP2008102795A (ja) * 2006-10-19 2008-05-01 Fuji Xerox Co Ltd ファイル管理装置、システム及びプログラム
US20090043797A1 (en) * 2007-07-27 2009-02-12 Sparkip, Inc. System And Methods For Clustering Large Database of Documents
JP2009134341A (ja) * 2007-11-28 2009-06-18 Mitsubishi Electric Corp ピア検索方法および通信装置
US20110234594A1 (en) * 2010-03-26 2011-09-29 Microsoft Corporation Graph clustering

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016066142A (ja) * 2014-09-24 2016-04-28 富士通株式会社 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP2018517956A (ja) * 2015-03-24 2018-07-05 キンダイ、インコーポレイテッドKyndi, Inc. コグニティブメモリによるグラフのインデキシング、格納、および検索
JP2020119591A (ja) * 2015-03-24 2020-08-06 キンダイ、インコーポレイテッドKyndi, Inc. コグニティブメモリによるグラフのインデキシング、格納、および検索
US10747740B2 (en) 2015-03-24 2020-08-18 Kyndi, Inc. Cognitive memory graph indexing, storage and retrieval
JP7064525B2 (ja) 2015-03-24 2022-05-10 キンダイ、インコーポレイテッド コグニティブメモリによるグラフのインデキシング、格納、および検索
JP2017111692A (ja) * 2015-12-18 2017-06-22 株式会社日立製作所 系列データ管理システムおよび装置
US10803036B2 (en) 2016-08-22 2020-10-13 Fujitsu Limited Non-transitory computer-readable storage medium, data distribution method, and data distribution device
JP2018088215A (ja) * 2016-11-30 2018-06-07 富士通株式会社 データ管理プログラム、データ管理方法及びデータ管理装置
JP2019020806A (ja) * 2017-07-12 2019-02-07 富士ゼロックス株式会社 情報処理装置およびプログラム

Also Published As

Publication number Publication date
JP5825122B2 (ja) 2015-12-02
US9002844B2 (en) 2015-04-07
US20130198198A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
JP5825122B2 (ja) 生成プログラム、生成方法、および生成システム
US20200336387A1 (en) Topological map presentation system, topological map presentation method, and computer readable recording medium
US10545945B2 (en) Change monitoring spanning graph queries
JP6764779B2 (ja) 同義カラム候補選出装置、同義カラム候補選出方法、及び同義カラム候補選出プログラム
US9251156B2 (en) Information processing devices, method, and recording medium with regard to a distributed file system
Ma et al. Big graph search: challenges and techniques
US10585915B2 (en) Database sharding
JP6608972B2 (ja) ソーシャルネットワークに基づいてグループを探索する方法、デバイス、サーバ及び記憶媒体
US10134067B2 (en) Autocomplete of searches for data stored in multi-tenant architecture
CN102521338B (zh) 对于数据表示项目返回的占位符
CN107958023A (zh) 数据同步方法、数据同步装置和计算机可读存储介质
CN105637489A (zh) 分布式数据库系统中的异步垃圾收集
WO2014034383A1 (ja) 情報処理装置、レコード位置情報特定方法および情報処理プログラム
US10482268B1 (en) Systems and methods for access management
US10437806B2 (en) Database management method and information processing apparatus
JP6705764B2 (ja) 生成装置、生成方法、及び生成プログラム
CN108604241B (zh) 搜索系统
JP2013242675A (ja) 分散情報制御装置、分散情報検索方法、データ分散配置方法、及びプログラム
US20160092459A1 (en) Translating a keyword search into a structured query
EP3764229A1 (en) Information processing program, information processing method, and information processing apparatus
US20160342672A1 (en) Data management system and data management method
WO2016059787A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
JP6171816B2 (ja) データ管理プログラム、データ管理装置およびデータ管理方法
JP5411954B2 (ja) ツリー抽出装置、ツリー抽出システム、ツリー抽出方法、及びツリー抽出プログラム
JP5764448B2 (ja) 文書ランキングスコアの動的更新のための方法および装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150609

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150810

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150928

R150 Certificate of patent or registration of utility model

Ref document number: 5825122

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees