キー・バリュー型データストア

  • 投稿日:
  • by

技術の基本は、まるで変わらない証左です。

 キー・バリュー型のデータを複数のサーバーに分散させる代表的な手法として「コンシステント・ハッシング」がある。この手法は大きく二つに分けられる。

 一つは、どのデータをどのサーバーに配置するか管理する「中央サーバー」が存在する「ゼロホップのコンシステント・ハッシング」。もう一つは、中央サーバーが存在しない「マルチホップのコンシステント・ハッシング」である。マルチホップのコンシステント・ハッシングは一般に「分散ハッシュテーブル」と呼ばれ、ピア・ツー・ピアの基盤技術として知られている。

 パフォーマンスの点だけを見れば、中央サーバーが存在する「ゼロホップ」のほうが優れている。中央サーバーの存在しない「マルチホップ」では、データの場所を探すために複数のサーバーに対して問い合わせる必要があるからだ。

 しかし、サーバー規模が拡大すると中央サーバーがボトルネックになる。そこで、首藤准教授は「ノンホップが適用可能なのは1000ノードまで。それ以上だとマルチホップが適している」と指摘する。ちなみに、Amazonのキー・バリュー型データストア「Amazon Dynamo」はゼロホップ、MicrosoftのWindows Azureはマルチホップのコンシステント・ハッシングである。
「キー・バリュー型データストア」開発者が大集合した夜

これは、DAM(ダイレクトアクセスメソッド)におけるハッシュ関数を、ハッシュテーブルで行うかいなかの問題と、まったく同じ構造の問題です。

まさに40年前の技術が、その実装方法を変えて蘇っただけのことです。

しかし、技術の本質とは、こう言うことです。

技術とは、ハードウェアを媒介として、その上で実現されるソフトウェアにこそ意味があります。コンピュータが、このソフトウェアをパッケージにするまでは、ハードウェアこそソフトウェアそのものでありました。

いまやこれが、ことごとく覆されてきた。工学部の学生にとって、物性とはソフトウェアのパラメタに過ぎなくなってしまったのです。

そして、まったく同じ意味で、ソフトウェアの分野には、恐ろしいまでのあらゆる分野のノウハウが集中します。いまやプログラム言語の時代は、とうの昔の話。今求められているのは、その対象とするアプリケーションの中にこそあります。

このあたりは、自己組織化アプリケーションの議論に思い切り入ってしまうのですが、今残念ながらこれにかかわる時間がない。明日書く話のことで、頭が一杯。 KAI