Distributed Hash Table (DHT)とは何ですか?
Distributed Hash Table (DHT) は、データを見つける役割を多数の独立したコンピュータに分散する共有の住所録です。一台のサーバーがどこにデータがあるかを答える代わりに、DHTはネットワーク全体で正しい場所を指し示します。スマートな大勢にファイルの場所を尋ね、数ステップで答えが返ってくるようなイメージです。
DHTがあなたのファイルを永遠に保存しているというのは誤りです。DHTはファイルそのものではなく、どこで見つけられるかの情報を保存します。実際のデータは、それをホストすることを選んだピア上に存在します。
Distributed Hash Table (DHT) の仕組み
アプリがコンテンツハッシュでラベル付けされた項目を大勢に尋ねる様子を想像してください。手順は次のとおりです。
- ステップ 1:あなたはスウォームに参加して、ノードの一つになります。
- ステップ 2:項目Xが欲しいので、そのコンテンツからハッシュを計算し、これを一意のIDとして扱います。
- ステップ 3:近くのピアに問い合わせると、問い合わせはそのIDに数学的に近いピアへ向かうよう経路付けされます。
- ステップ 4:問い合わせは責任を持つピアの近くに到達し、現在誰が項目Xを持っているかを返します。
- ステップ 5:あなたはそのピアに接続して、直接データをダウンロードします。速く、すっきり、完了。
実例としては、IPFS(InterPlanetary File System) が、あるハッシュのコンテンツをどのピアが保持しているかをDHTで発見し、そこから取得します。
Distributed Hash Table (DHT) が重要な理由
では、技術的興味以外でなぜ気にするべきでしょうか?
- 利点:中央の管理者を介さずにコンテンツを素早く見つけられるため、速度と耐障害性が得られます。
- 視点:ピアがルックアップを担い、単一障害点を減らす分散型ネットワークの重要な要素です。分散型 の特徴を支えます。
- 関連:ファイル共有のピア検出、dappsのデータ可用性、そしてピアツーピア取引での相手探しなどに使われます。
誰かが「DHTがあなたのデータを持っている」と言ったら、そのデータ自体がどこに保存されているか、何台のピアがピン留めや複製をしているかを確認しましょう。参照先はバックアップではありません。
Distributed Hash Table (DHT) の主な特徴
暗号やピアシステムで繰り返し使われる理由は次の点です:
- 検索:キーが与えられると、規模が大きくても概ね対数的なホップ数で責任あるピアを見つけます。
- 分散:索引は共有されるため、単一のサーバーが発見を止めることができません。
- 耐障害性:ピアの参加や離脱があっても、ネットワークはその変化を回避して経路付けを続けます。
- 検証可能性:キーがハッシュであるため、取得したコンテンツはキーと照合して確認できます。
バリエーション
異なる方式があり、それぞれ経路付けのスタイルやトレードオフが異なります:
- Kademlia:広く使われており、XOR距離でルーティングし、長時間接続しているピアを好みます。
- Chord:ピアをリング上に配置し、フィンガーテーブルでルーティングします。
- Pastry:プレフィックスベースのルーティングを用い、近接性も考慮します。
DHTはディレクトリ兼ルーティングシステムであり、完全な真実のデータベースではありません。コンテンツはハッシュで検証し、ピアの主張には慎重な姿勢で臨んでください。
例
IPFSを扱うアプリでコンテンツハッシュを要求すると、DHTがいくつかのピアアドレスを返し、アプリはそれらのピアから直接バイト列を取得します。IPFS(InterPlanetary File System)
豆知識
最も広く使われるDHTの一つであるKademliaは2002年に登場し、BitTorrentのマグネットリンクから暗号プロジェクトが使うコンテンツ指向ストレージまで影響を与えました。古い論文ですが今でも影響があります。
まとめ
短く言うと:DHTはピアネットワークが中央のサーバーに尋ねずに必要なものを見つけるための住所録です。単純な考えですが、大きな波及効果があります。
