続 単純な場合の Skip Graphs アルゴリズムを実装してみた 4

ToDo に挙げていたリファクタリング項目を全てクリア。漸く見られるコードになってきたかな。
実装の面白さの肝は

  • 隣接ノードに、再帰的に問い合わせていく部分
  • レベルを上下する事で検索パスを短くできる事
  • 結果を返すべきノードを持ち回る部分(若干 CPS っぽい)

など。

終わった

  • link-op で concurrent-join のサポートを入れた(実際には concurrent のテストはしていない)
    • 単純に link-op で受け取った key と隣のノードの情報を見比べて意図していない状態だったら、隣に link-op を投げるという仕組み
  • delete-op 整理
  • range-search-op 追加
  • insert-op リファクタリング

ToDo

  • 分散化
  • Multi-key Skip Graph
  • level の動的な拡張