Date post: | 29-Jun-2015 |
Category: |
Technology |
Upload: | kota-abe |
View: | 1,460 times |
Download: | 6 times |
Skip Graphをベースとした 高速な挿入と検索が可能な 構造化オーバレイの提案
大阪市立大学大学院 創造都市研究科 播磨 裕太・安倍 広多 石橋 勇人・松浦 敏雄
2013/01/25 電子情報通信学会 情報ネットワーク研究会
はじめに Peer-to-Peer(P2P)への注目 ◦ 耐故障性 ◦ 負荷分散 ◦ スケーラビリティ
オーバレイネットワーク ◦ 非構造化オーバレイ ◦ 構造化オーバレイ
2
Skip Graph 構造化オーバーレイの1つ ◦ DHTでは困難な範囲検索・近傍検索が可能
3
2 5 6 7 9 14
範囲検索 6以上10以下
近傍検索 5未満で最大
本研究の目的 Skip Graphをベースとした 新たな構造化オーバレイの提案 ◦ ノードの挿入・検索を高速化
4
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)レベル
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*
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*
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*
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*
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に挿入
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*
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*
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*
リスト内にマッチするノードが 見つからなかった
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から始まるリストを作って挿入終了
Skip Graphの挿入アルゴリズム 挿入時間: O(w * logwn) ◦ 挿入時間: 挿入時に通信したノード数 ◦ 各レベルで横方向に辿るノード数は平均 w ◦ レベルは logwn
15
2 5 6 7 9 14 Level 0
010 101 001 111 100 011 メンバシップベクタ
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*
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では自分自身しかいない
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目)
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を飛び越えてしまう
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))
提案手法 Skip Graphをベース ◦ メンバシップベクタを廃止 ◦ 目標とするリスト数wを導入 (メンバシップベクタの基数wに相当)
各レベルで左方向にポインタを複数持つ ◦ これを経路表として利用 ◦ 右方向は1ノードのみ(Skip Graphと同様)
21
提案手法 各レベルで左方向最大 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
提案手法(リスト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
提案手法(リスト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
提案手法|挿入アルゴリズム (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
提案手法|挿入アルゴリズム (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
提案手法|挿入アルゴリズム (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のリストを選択 (乱数で)
提案手法|挿入アルゴリズム (4) 1つの近隣ノード集合を参照するだけでは リスト数を過小評価する可能性がある
(リスト数 < w) と判断すると新たにリストを作るため,目標リスト数(w)をオーバーする
より正確なリスト数を得るため,得られたリスト数がw未満ならば,最大k個の近隣ノード集合を参照
提案手法|挿入アルゴリズム (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つあると判断できるようになった
挿入アルゴリズムの比較 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
提案手法の検索アルゴリズム 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
検索アルゴリズムの比較 Skip Graph ◦ 平均経路表サイズは約2 * logwn
提案手法 ◦ 近隣ノード集合も経路表として用いる ◦ 平均経路表サイズは約(r + 1) * logwn 経路表サイズが大きい分,より高速に目的ノードに 近づける
32
評価(挿入時間) 提案手法と従来のSkip Graphとで オーバレイネットワークを構成し,挿入時間の分布を測定 ◦ ノード数: 10,000 ◦ Skip Graph メンバシップベクタの基数w = 2 ◦ 提案手法 目標リスト数: w = 2, 4, 8, 16 近隣ノード集合数: r = w
33
実験結果(挿入時間)
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)
評価(検索時間) 検索時間の分布を取得
条件は前と同じ
35
実験結果(検索時間)
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)
評価(経路表サイズと検索時間の関係) 提案手法では,rとwを変化させることで 経路表サイズを自由に変更可能
経路表サイズと検索時間との関係を調べた
提案手法のパラメータ ◦ w = 2, 4, 8, 16, 32, 64 ◦ r = w, 2w, 3w, 4w
37
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
まとめ Skip Graphをベースとした 構造化オーバレイを提案 ◦ メンバシップベクタを廃止しリストIDを導入 ◦ 近隣ノード集合を導入 ◦ Skip Graphと比べて経路表サイズを増やし, 検索時間を短縮 ◦ 経路表サイズが増えているにも関わらず, 挿入時間も高速化(ただしメッセージ数は増加) ◦ 経路表サイズはrとwで調整可能
39
今後の課題 他のアルゴリズムとの比較 ◦ Skip Tree Graphなど
リスト数修復アルゴリズムの実装および評価
ネットワーク距離を考慮した拡張
40