40
Skip Graphをベースとした 高速な挿入と検索が可能な 構造化オーバレイの提案 大阪市立大学大学院 創造都市研究科 播磨 裕太・安倍 広多 石橋 勇人・松浦 敏雄 2013/01/25 電子情報通信学会 情報ネットワーク研究会

Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Embed Size (px)

DESCRIPTION

本稿では,構造化オーバーレイネットワークの1つであるSkip graphに対して,ノードの挿入時間と検索時間の双方を改善する手法を提案する.Skip graphは複数レベルの双方向連結リストから構成されるが,提案手法では(1)各連結リストにおいて左右のポインタに加え,左方向の複数のノードへのポインタを保持する,(2)各レベルの経路表に上位レベルの連結リストの情報も格納する,といった技法を用いる.提案手法はシミュレーションによって有効性を確認した. In this paper, we propose techniques to improve insertion and lookup time of skip graphs, a kind of structured overlay network that consist of multiple levels of doubly-linked lists. We introduce several techniques such as (1) each node maintains multiple pointers for leftward nodes in addition to the immediate left and right pointers, and (2) a routing table at each level maintains the information about the linked lists at the next higher level. The effectiveness of the method was experimentally confirmed by simulations. その他の情報: http://bit.ly/Yw6QJ8

Citation preview

Page 1: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphをベースとした 高速な挿入と検索が可能な 構造化オーバレイの提案

大阪市立大学大学院 創造都市研究科 播磨 裕太・安倍 広多 石橋 勇人・松浦 敏雄

2013/01/25 電子情報通信学会 情報ネットワーク研究会

Page 2: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

はじめに  Peer-to-Peer(P2P)への注目 ◦ 耐故障性 ◦ 負荷分散 ◦ スケーラビリティ

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

2

Page 3: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graph  構造化オーバーレイの1つ ◦ DHTでは困難な範囲検索・近傍検索が可能

3

2 5 6 7 9 14

範囲検索 6以上10以下

近傍検索 5未満で最大

Page 4: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

本研究の目的  Skip Graphをベースとした 新たな構造化オーバレイの提案 ◦ ノードの挿入・検索を高速化

4

Page 5: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの構造

5

2 5 6 9 14

2 6

5 9

14

Level 0

Level 1

010 101 001 100 011 メンバシップベクタ (基数w = 2)

6 2 14

5 9 Level 2

0*

1*

10*

01*

00*

1つのリスト内のノード数は1/w

平均logw(N)レベル

Page 6: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

62 5 6 9 14

2 6

5 9

14

Level 0

Level 1

010 101 001 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

Page 7: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

72 5 6 7 9 14

2 6

5 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

Page 8: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

82 5 6 7 9 14

2 6

5 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

左に辿ってメンバシップベクタを確認

0*

1*

10*

01*

00*

Page 9: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

92 5 6 7 9 14

2 6

5 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

さらに左に辿ってメンバシップベクタを確認

0*

1*

10*

01*

00*

Page 10: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

102 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00* Level 1に挿入

Page 11: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

112 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

Page 12: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

122 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

Page 13: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

132 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

リスト内にマッチするノードが  見つからなかった

Page 14: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  ノード7を挿入

142 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

11から始まるリストを作って挿入終了

Page 15: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの挿入アルゴリズム  挿入時間: O(w * logwn) ◦ 挿入時間: 挿入時に通信したノード数 ◦ 各レベルで横方向に辿るノード数は平均 w ◦ レベルは logwn

15

2 5 6 7 9 14 Level 0

010 101 001 111 100 011 メンバシップベクタ

Page 16: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの検索アルゴリズム  7 → 2

162 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

Page 17: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの検索アルゴリズム  7 → 2

172 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

Level 2では自分自身しかいない

Page 18: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの検索アルゴリズム  7 → 2

182 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

Level 1において目的のノードに 近い方へ転送(1hop目)

Page 19: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの検索アルゴリズム  7 → 2

192 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

Level 1において左方向に 転送すると2を飛び越えてしまう

Page 20: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

Skip Graphの検索アルゴリズム  7 → 2

202 5 6 7 9 14

2 6

5 7 9

14

Level 0

Level 1

010 101 001 111 100 011 メンバシップベクタ

Level 2

6 2 14

5 9

0*

1*

10*

01*

00*

7 11*

Level 0において目的のノードが見つかったので転送(2hop目)

挿入時間:  O(w  *  logw(n))

Page 21: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法  Skip Graphをベース ◦ メンバシップベクタを廃止 ◦ 目標とするリスト数wを導入 (メンバシップベクタの基数wに相当)

 各レベルで左方向にポインタを複数持つ ◦ これを経路表として利用 ◦ 右方向は1ノードのみ(Skip Graphと同様)

21

Page 22: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法  各レベルで左方向最大 r 個のノードへの ポインタを持つ ◦ 近隣ノード集合と呼ぶ ◦  r = 3

22

2 5 6 7 9 12 14

2 6 12

5 7 9 14

Level 0

Level 1

ノード9のLevel 0における近隣ノード集合

レベル 近隣ノード集合 1 7, 5, 14 0 7, 6, 5

Page 23: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法(リストID)  各リストにIDを振る ◦ 接続先の選択に利用

23

2 5 6 7 9 12 14

2 6 12

5 7 9 14

Level 0

Level 1

リストID

82

83

80

Page 24: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法(リストID)  近隣ノード集合内の各ノードが 1つ上のレベルで所属するリストIDも保持する

24

2 12 14

2 6 12

Level 0

Level 1

5 7 9

5 7 9 14

6

82

83

80

レベル 近隣ノード集合 1 796, 592, 1496

0 782, 683, 582

Page 25: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法|挿入アルゴリズム (1)  ノード9を挿入 ◦ 各レベルの目標リスト数w = 2 ◦ 近隣ノード集合のサイズr = 3

25

2 5 6 7 12 14

2 6 12

5 7 14

Level 0

Level 1 82

83

80

Page 26: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法|挿入アルゴリズム (2)  ノード9を挿入 ◦ 各レベルの目標リスト数w = 2 ◦ 近隣ノード集合のサイズr = 3

26

2 5 6 7 9 12 14

2 6 12

5 7 14

Level 0

Level 1 82

83

80

レベル 近隣ノード集合 0 683, 582, 283 コピー

レベル 近隣ノード集合 0 613, 512, 213

レベル 近隣ノード集合 0 712, 613, 512, 213

7を追加 2削除

レベル 近隣ノード集合 0 782, 683, 582

Page 27: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法|挿入アルゴリズム (3)  ノード9を挿入 ◦ 各レベルの目標リスト数w = 2 ◦ 近隣ノード集合のサイズr = 3

27

2 5 6 7 9 12 14

2 6 12

5 7 14

Level 0

Level 1 82

83

80

レベル 近隣ノード集合 0 782, 683, 582

レベル1において 少なくともリストが2つ存在することがわかる

目標リスト数に達しているので リストID82か83のどちらかと接続

9

ID82のリストを選択 (乱数で)

Page 28: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法|挿入アルゴリズム (4)  1つの近隣ノード集合を参照するだけでは リスト数を過小評価する可能性がある

  (リスト数 < w) と判断すると新たにリストを作るため,目標リスト数(w)をオーバーする

 より正確なリスト数を得るため,得られたリスト数がw未満ならば,最大k個の近隣ノード集合を参照

Page 29: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法|挿入アルゴリズム (5)  ノード9を挿入 ◦ 各レベルの目標リスト数w = 2 ◦ 近隣ノード集合のサイズr = 3

29

2 5 6 7 12 14

2

6

12

5 7 14

Level 0

Level 1

9

9 82

83

80

レベル 近隣ノード集合 0 782, 683, 582

レベル1において,リスト数は 1つしかないと誤判定してしまう

レベル リスト数判断用近隣ノード集合 0 782, 683, 582, 283, 1482, 1283

精度を上げるため近隣ノード集合内で最も遠いノードからも近隣ノード集合を取得

レベル1にリストが少なくとも2つあると判断できるようになった

Page 30: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

挿入アルゴリズムの比較  Skip Graph ◦ 1つずつ辿るため 挿入に時間がかかる

 提案手法 ◦ 近隣ノード集合を利用し一度にr 個まとめてチェックすることで高速化

30

010 101 001 111 100 011 メンバシップベクタ

2 5 6 7 9 12 14

Level 0

80

レベル 近隣ノード集合 0 782, 683, 582

Page 31: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

提案手法の検索アルゴリズム  7 → 17

31

2 5 6 7 12 14

2 6 12

5 7 14

Level 0

Level 1 82

83

80 9

9

2

5

6

7

12

14

9

93

94

92

96

Level 2

17

17

17

レベル 近隣ノード集合 2 14??

1 592, 1496, 992

0 683, 582, 280

Page 32: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

検索アルゴリズムの比較  Skip Graph ◦ 平均経路表サイズは約2 * logwn

 提案手法 ◦ 近隣ノード集合も経路表として用いる ◦ 平均経路表サイズは約(r + 1) * logwn  経路表サイズが大きい分,より高速に目的ノードに 近づける

32

Page 33: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

評価(挿入時間)  提案手法と従来のSkip Graphとで オーバレイネットワークを構成し,挿入時間の分布を測定 ◦ ノード数: 10,000 ◦ Skip Graph  メンバシップベクタの基数w = 2 ◦ 提案手法  目標リスト数: w = 2, 4, 8, 16  近隣ノード集合数: r = w

33

Page 34: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

実験結果(挿入時間)

34

0

0.05

0.1

0.15

0.2

0.25

0.3

10 20 30 40 50 60 70 80 90 100

Freq

uenc

y

Insertion time

Skip Graph

提案手法 (w = 2)

提案手法 (w = 4)

提案手法 (w = 8)

Better 提案手法 (w = 16)

Page 35: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

評価(検索時間)  検索時間の分布を取得

 条件は前と同じ

35

Page 36: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

実験結果(検索時間)

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0 5 10 15 20 25 30

Freq

uenc

y

Number of hops 36

Skip Graph

提案手法 (w = 2)

提案手法 (w = 4)

提案手法 (w = 8)

Better 提案手法 (w = 16)

Page 37: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

評価(経路表サイズと検索時間の関係)  提案手法では,rとwを変化させることで 経路表サイズを自由に変更可能

 経路表サイズと検索時間との関係を調べた

 提案手法のパラメータ ◦ w = 2, 4, 8, 16, 32, 64 ◦  r = w, 2w, 3w, 4w

37

Page 38: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

2 3 4 5 6 7 8 9

10

10 100 1000

Ave

. loo

kup

time

Routing table size (# of pointers)

実験結果(経路表サイズと検索時間の関係)

38

Skip Graph

w = 2

w = 4

w = 8

w = 16 w = 32

w = 64

r = w r = 2w

r = 3w

r = 4w

Page 39: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

まとめ  Skip Graphをベースとした 構造化オーバレイを提案 ◦ メンバシップベクタを廃止しリストIDを導入 ◦ 近隣ノード集合を導入 ◦ Skip Graphと比べて経路表サイズを増やし, 検索時間を短縮 ◦ 経路表サイズが増えているにも関わらず, 挿入時間も高速化(ただしメッセージ数は増加) ◦ 経路表サイズはrとwで調整可能

39

Page 40: Skip Graphをベースとした高速な挿入と検索が可能な構造化オーバレイの提案

今後の課題  他のアルゴリズムとの比較 ◦ Skip Tree Graphなど

 リスト数修復アルゴリズムの実装および評価

 ネットワーク距離を考慮した拡張

40