Multi-key Skip Graph の仕組みを学ぶ
「単一ピアに複数キーを保持可能とするSkip Graph拡張の提案」という論文で提案されている Multi-key Skip Graph を学ぶ。
大変苦労して読み解いたので、以下にまとめた事は間違っている可能性が高いので注意。
誤りがありましたらぜひご指摘ください。
背景
Skip Graph は 1 ノードに 1 (key, value) を保持する事が前提のアルゴリズム。
これでは効率の良い Key-value storage として使えないので 1 ノードに複数の (key, value) を保持できる Multi-key Skip Graph アルゴリズムを導入したい。
Multi-key Skip Graph
論文の解説を補うまとめ。
- 2 つの大事なポイントがある
- 1. 物理ピア毎に membership vector が発行される
- これにより各レベルでの検索が同一物理ピアで行われる事が保証され効率が良い
- 2. Range Search のときにのみ、物理ピアを意識したテクニックが必要とされる
- 1. 物理ピア毎に membership vector が発行される
- 論文中に「検索範囲を仮想ピアによって分けられる部分領域に分割し、各部分領域毎にクエリを送る」が分かりづらかった。
- 検索範囲 [1, 6] を部分領域1, 2 に分けるとは、membership vector 00 において見つかった [1, 6] にマッチする仮想ピア 1 -> 3 -> 6 において、1 と 3 の間、3 と 6 の間に別の物理ピアの仮想ピアがあるかもしれない事を考慮することを意味する。
- つまり [1, 3]、[3, 6] というクエリを別の物理ピアに投げてクエリを完結させる。