最近分散ハッシュテーブルというのが気になります。簡単に言うとネットワーク上に分散されたハッシュテーブルです。
Googleのファイルシステムなどでも実装されている技術で、大規模なデータの取り扱いに向いています。まともに使える分散ハッシュテーブルを実装するには、以下の機能を実装する必要があります。
- 管理サーバ不要なピュアP2P
- ノード離脱時のデータのレプリケーション
- ノード参加時のデータ分散・受入
- 高速なデータ検索
- 高速なデータ取得
- ストップレスでのノードの参加・離脱
これらをきちんと実装すると、こんなことが出来ます。
- ノードが故障してもストップレスでノードの交換
- ノードが故障してもデータを維持
- ストップレスでノードの追加
- 分散ハッシュテーブルをファイルシステムとするラッパーによって巨大なファイル郡の取り扱い
ノードといっているのはサーバです。サーバが故障しても、レプリカを再度生き残っているノードで分散化することで、ストップレスで運用が可能になります。ノードが追加されたときも、追加されたノードが他のノードのデータやデータのレプリカを受け入れる事によって、各ノードの平均データ数が減り、結果として保存可能な容量が増えるわけです。スケーラビリティが要求されるウェブサイトでは必須の要件です。
この技術があれば、エンタープライズな世界においても、安価なサーバで信頼の置けるデータストアとして運用できます。Googleでも毎日かなりなサーバが壊れているみたいです。台数が多いので平均故障間隔が実感できるレベルだと思いますが、「壊れても問題ない、だから安価なサーバでよい。」というポリシーには心が惹かれます。データの規模によってサーバを増やせばいいので、初期投資も非常に少なく済むのが特徴です。
どうやって実装するかは、少しずつ紹介していきます。