区間をキーとして保持する分散KVSの効率的な実現法

42
区間をキーとして保持する分散 KVS の効率的な実現法 大阪市立大学大学院 創造都市研究科 岩崎章彦 安倍広多 石橋勇人 松浦敏雄 F- 06

description

岩崎 章彦,安倍 広多,石橋 勇人,松浦 敏雄,区間をキーとして保持する分散 KVS の効率的な実現法,平成23年度情報処理学会関西支部支部大会予稿集,No. F-06,pp. 1-5, (2011-9).

Transcript of 区間をキーとして保持する分散KVSの効率的な実現法

Page 1: 区間をキーとして保持する分散KVSの効率的な実現法

区間をキーとして保持する分散KVSの効率的な実現法

大阪市立大学大学院 創造都市研究科 岩崎章彦 安倍広多 

石橋勇人 松浦敏雄 

F-06

Page 2: 区間をキーとして保持する分散KVSの効率的な実現法

はじめに

Page 3: 区間をキーとして保持する分散KVSの効率的な実現法

分散KVS( Key- Val ue St or e) とは

分散KVS

get( 1 56) → A

Keyは単一の値

417 B→871 Y→

156 A→324 R→

Key → Val ue

膨大なデータを扱う大規模分散システム

Google, Amazon, Facebook

など

Page 4: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

← Cさん

← Bさん

1時 4時

2時 7時

5時 8時← Aさん

4 時 5時

← Dさん

区間を持ったデータを扱うことは難しい!

分散KVS上で

Page 5: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

1時 4時

2時 7時

5時 8時

4 時 5時分散KVSのキーは単一の値だから. . .

← Cさん

← Bさん

← Aさん

← Dさん

区間を持ったデータを扱うことは難しい!

分散KVS上で

Page 6: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

1時

2時

5時

4時 5時Key

← Cさん

← Bさん

← Aさん

← Dさん

区間を持ったデータを扱うことは難しい!

分散KVS上で

Page 7: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

1時

2時

5時

4時 5時

3時~6時にログインしていた人を検索したい

← Cさん

← Bさん

← Aさん

← Dさん

区間を持ったデータを扱うことは難しい!

分散KVS上で

Page 8: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

1時

2時

5時

4時 5時検索されない

3時~6時にログインしていた人を検索したい

← Cさん

← Bさん

← Aさん

← Dさん

区間を持ったデータを扱うことは難しい!

分散KVS上で

Page 9: 区間をキーとして保持する分散KVSの効率的な実現法

本研究の目的

区間をキーとして扱える効率的な分散KVSの構成法を提案すること

Page 10: 区間をキーとして保持する分散KVSの効率的な実現法

関連研究

Page 11: 区間をキーとして保持する分散KVSの効率的な実現法

Range Key Ski p Gr aph

区間をキーとして扱える構造化オーバーレイネットワーク

Range Key 包含キー+

L0

L1

L2

L3

Ski p Gr aph がベース

Page 12: 区間をキーとして保持する分散KVSの効率的な実現法

1時 4時

2時 7時

5時 8時

4 時 5時

Range Key Ski p Gr aph

包含キーをたどって検索

Range Key

3時~6時にログインしていた人を検索したい

包含キー

Page 13: 区間をキーとして保持する分散KVSの効率的な実現法

Range Key Ski p Gr aph

問題点

(2)データの冗長性について考慮されていない

(1)領域計算量や挿入・削除のコストが最悪O( n)

 n: Range Keyの数

 ※最悪の場合の例

Page 14: 区間をキーとして保持する分散KVSの効率的な実現法

提案手法

Page 15: 区間をキーとして保持する分散KVSの効率的な実現法

提案手法の流れ

研究の目的「区間をキーとして扱える       効率的な分散KVSの構成法を提案すること」

(アイディア) ・区間を2次元平面上の1 点で表現

区間に対する範囲検索を 2次元平面上の範囲検索に置き換える

 ・多数の区間( 点) を分散管理するためにZnet を用いる

Page 16: 区間をキーとして保持する分散KVSの効率的な実現法

例:セッションログ管理

← Cさん

← Bさん

1時 4時

2時 7時

5時 8時← Aさん

4 時 5時

← Dさん

( 1) 区間を2次元平面上の1点で表現

例えば,Aさんの場合

Page 17: 区間をキーとして保持する分散KVSの効率的な実現法

y

x下限値をXとする

上限値をYとする

( 1) 区間を2次元平面上の1点で表現

A( 4, 5)

4

5

Aさんがログインしていた区間[4,5]

Page 18: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

下限値をXとする

上限値をYとする

( 1) 区間を2次元平面上の1点で表現

← Aさん

← Bさん

← Cさん

A( 4, 5)

C( 2, 7)

B( 5, 8)

← Dさん

Page 19: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

下限値をXとする

上限値をYとする

( 1) 区間を2次元平面上の1点で表現

A( 4, 5)

C( 2, 7)

B( 5, 8) y ≧ x

Page 20: 区間をキーとして保持する分散KVSの効率的な実現法

3時~6時に

ログインしていた人を検索したい

← Cさん

← Bさん

1時 4時

2時 7時

5時 8時← Aさん

4 時 5時

← Dさん

( 2 ) 区間に対する範囲検索

Page 21: 区間をキーとして保持する分散KVSの効率的な実現法

3時~6時に

ログインしていた人を検索したい

← Cさん

← Bさん

1時 4時

2時 7時

5時 8時← Aさん

4 時 5時

← Dさん

( 2 ) 区間に対する範囲検索

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索する場合

Page 22: 区間をキーとして保持する分散KVSの効率的な実現法

3時~6時に

ログインしていた人を検索したい

← Cさん

← Bさん

1時 4時

2時 7時

5時 8時← Aさん

4 時 5時

← Dさん

( 2 ) 区間に対する範囲検索

②指定した検索範囲と重なりがある区間 ( 点 ) を検索する場合

Page 23: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

Page 24: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

3 ≦ x

Page 25: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6 6y ≦

Page 26: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6

y ≧ x

Page 27: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6

検索領域

Page 28: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6 この2次元平面上を検索すると...

Page 29: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6

Page 30: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

①指定した検索範囲に真に含まれる区間 ( 点 ) を検索

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6区間に対する範囲検索

↓2次元平面上の

範囲検索に置き換え可能

Page 31: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

D( 1, 4)

A( 4, 5)

C( 2, 7)

B( 5, 8)

3 時 ~ 6時

← Aさん

← Bさん← Cさん

← Dさん

3

6

②指定した検索範囲に重なりがある区間 ( 点 ) を検索

Page 32: 区間をキーとして保持する分散KVSの効率的な実現法

提案手法の流れ

研究の目的「区間をキーとして扱える       効率的な分散KVSの構成法を提案すること」

(アイディア) ・区間を2次元平面上の1 点で表現

区間に対する範囲検索を 2次元平面上の範囲検索に置き換える

 ・多数の区間( 点) を分散管理するためにZnet を用いるここまで説明終了

Page 33: 区間をキーとして保持する分散KVSの効率的な実現法

・検索ホップ数:O( log m)        m: Znetに参加している物理ノード数

多数の区間 ( 点 ) の分散管理方法Znet: 多次元データを効率よく分散管理するための

構造化オーバーレイネットワーク

・複数のノードにデータを冗長配置

・空間充填曲線(Z 曲線)     Ski p Graphy

x L0

L1

L2

L3

Page 34: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

空間充填曲線(Z曲線)

0 1 2 3 4 5 6 7

0

1

2

3

4

5

6

7

・・・

・・・

Z曲線は2次元空間を埋め尽くす

2次元情報を1次元上で管理する

Page 35: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

[ Znet ] 負荷分散処理

A

B

C D

E F

G

物理ノードA B C D

E F G

ノード挿入時高負荷なノードの

担当領域を分割,担当する

負荷の平準化

Page 36: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

A B

C D

E F

G

A B C D E F G

Z 曲線 + Ski p Gr aph

Page 37: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

A B

C D

E F

G

検索範囲

A B C D E F G

Z 曲線 + Ski p Gr aph

Page 38: 区間をキーとして保持する分散KVSの効率的な実現法

y

x

A B

C D

E F

G

A B C D E F000 100 010 001 011 110

A

B

A

B

AC

L0

L1

L2

L3

C

C

D

D

D

E

E

E

G111

F G

G

GF

F

検索範囲 Ski p Gr aph

Z 曲線 + Ski p Gr aph

Page 39: 区間をキーとして保持する分散KVSの効率的な実現法

考察

Page 40: 区間をキーとして保持する分散KVSの効率的な実現法

提案手法とRange Key Ski p Gr aph との比較

※ 登録するデータ数を n , 物理ノード数を m とする.

比較項目 RKS G 提案手法

挿入・削除のメッセージ数

最悪O(n) O( log m)

1レコードあたりの領域計算量

最悪O(n) O(1)

冗長性 なし あり

Page 41: 区間をキーとして保持する分散KVSの効率的な実現法

おわりに

Page 42: 区間をキーとして保持する分散KVSの効率的な実現法

本研究では、・区間をキーとして扱える 効率的な分散KVSの構成法を提案した .

・区間を2次元平面上の1 点で表現した.

区間に対する範囲検索を 2次元平面上の範囲検索に置き換えた.

・ 多数の区間( 点) を分散管理するためにZnet を用いた.

・今後の課題   ・提案手法の実装および定量的な評価   ・関連研究との性能比較を行う