Google の巨大テーブル“どうして商用のデータベースを使わないのですか?”楽しそうにプレゼンを進めるのは、5月28日と29日、サンフランシスコの Moscone West で行われた「GoogleI/O」(Google の技術者カンファレンス)のセッションに登場した、Google のフェローである Jeff Dean 氏だ。 これは、Google が独自に開発した、「BigTable」と呼ばれる、システムに関する Q&A 部分なのだが、1つのテーブルで 6,000TB、6百万ギガバイトにもなるというのだ。 もう少し馴染みのあるようなテーブル、例えばカラムが20個あるテーブルなら何行になるだろうか? 1つのカラムに平均10文字入っているとすると、1文字2バイトで換算すると1行あたり平均200バイトになる。 6,000,000,000,000,000 / 200 = 30,000,000,000,000行 見るだけでも恐ろしいが、300億行だ。 このような途方もない巨大システムの舞台裏を、Jeff 氏は楽しそうに紹介したのだった。 この舞台裏にはあるのは、巨大で高価なサーバーではない。ラックというサーバーの棚に、安価なサーバーがこれ以上ないというほど目一杯詰め込まれ、フロアに並ぶ、見渡す限りのラックだ。 サーバーの数は、なんと数十万台規模だと推定されている。 「サーバーは、通常3年間使用可能」 「もし1万台のサーバーを持っていたら、一日に10台が寿命による入れ替えとなる」 ということは、数十万台サーバーを運用していたら、毎日数百台を入れ替える計算になる。 ますます途方もない話だ。 これらを人手に頼って管理していたら、大変なことになるのは想像に難くない。そこでこれらのインフラは、自律的に稼動するように高度な管理ソフトウェア(分散ファイルシステム)で制御されている。 そしてその上に、BigTable などの革新的なソフトウェアが乗っているのだ。 BigTable は、名前を聞くとテーブルのようだが、むしろスプレッドシート(もしくはハッシュテーブル)に近いものだ。 例えばカラムの数は可変で、カラムにグループをつけられるし、行にキーがついていたりする。 いわゆるデータベースというと事前に構造を定義しなければならない。つまり、定義してあるから取り出せるというわけだ。 一方 Google が提供するような検索エンジンは全く性質が異なる。事前にとってくる Web ページなどの情報はどんなものか定義できないので、とにかくシンプルに格納しておいて、柔軟に探して取り出せるようにするものだ。 そしてこの BigTable もそういうコンセプトに基づいている。 さて、この BigTable のコンセプトを忠実に実装しているようなプロジェクト(HyperTable)が存在するので、よく知っているデータベースの MySQL と性能などを比較してみたい。 次回はその詳細と結果を報告するので、お楽しみに。 記事提供:db4objects
|