Googleは、はじめ四次元ポケットを作った

NO IMAGE

Googleといえば、世界最大の検索エンジンをもち、無料の有用なサービスを数多く展開するインターネット業界の巨人ですが、多くの人は、Googleの最も優れた技術は検索機能だと考えている人がほとんどだと思います。

一般的な人にとって、Googleの検索機能といえば、画像も検索できるし、動画も検索できるし、検索できないものが無いのではないか?と思われるため、Googleの最大の技術が検索技術だと考えるでしょうが、実は違います。

インターネットの技術を知っている人であれば、ご存じの方も多いでしょうが、Googleの最も優れている技術はデータベースです。

Bigtable」と呼ばれ、検索はもちろん、YouTubeやGoogle Map、Google Analytics、Gmailなど70以上のプロジェクトの基板はこのデータベースです。

この「Bigtable」の最大の特徴は、高速な読み込みが出来ることです。それを可能にしているのが、列指向DBMSです。通常のデータベースは、行指向になっており、新しいデータは次の行に追加されていきます。マイクロソフトのアクセスや、MySQL、オラクルなど、これまで一般的だったデータベースとは根本的に思想が異なります。

しかし、列指向DBMSがなぜ行指向(いわゆる一般的なデータベース)よりも高速な読み込みが可能になるのか?という疑問がでてきます。

これは、ハードディスクの処理時間と関係してきます。ハードディスクがデータを読み込むとき、ヘッダというデータ読み込み用の針が、ハードディスクの円盤状をあっちこっちに動きまわってデータを拾います。(古いパソコンだとカリカリと音がするのはあの針が動いている音です)

古いWindows PCを使ったことがある人だと必ず経験があるかと思いますが、カリカリと音がしている間は画面はフリーズしているか、動作がとても重くなってしまいます。これは、ヘッダが移動している間は、データを読み込むことが出来ないため、時間がかかってしまうのです。これをシークタイムと呼びます。

シークタイムが早ければ、早いほど読み込みが高速になるというわけですが・・・いまいちピンと来ない人の為に分かりやすく説明すると、行指向型データベースは、一つの大きなハイテクビルで、列指向DBMSは小屋の集まりです。

ハイテクビルは、そのビル内での作業性は抜群ですが、仮にある人を呼び出して、出てくるまでに時間差が生じます。もしその人が1階にいれば、すぐに出てこれるかもしれませんが、200階にいた場合、出てくるまでにエレベーターを使っても時間がかかります。

一方、小屋の集まりだと、階層は1階しか無いので外に呼び出しをかけたらすぐに出てこれます。一つ一つの造りはチープですが、ある人を呼び出す時には、こちらのほうが効率的です。

ハイテクビルでは、そのビル内である程度の作業ができてしまう反面、同じビルを建てるのに莫大なコストが掛かってしまうことと、複製が難しいということが上げられます。

小屋の場合、安価で場所さえあればいくつでも建てられ、構造が単純なので複製も簡単に行なえます。

この違いが、列指向と行指向の違いと理解しておくと良いかもしれません。

ハードのリソースが少なかった時代は、1台のハードを効率的に使おうということで、ハイテクビルの発想が必要でした。

しかし、ハードディスクもどんどん安くなり、ハードのリソースが十分になった現在は、ハードのスペックをあげるよりも安価なハードを効率よく利用したほうがコストパホーマンスが良いため、小屋発想が生まれたのです。

ちなみに、Googleの初期のサーバーは特殊なハードウェアは一切使わず、Pentium IIが搭載されたPCを積み上げただけのかなりシンプルなものでした。

現在も、日本のスーパーコンピューター「京」の様なスペックを持ったサーバーをGoogleは利用していません。(グーグル自社設計のサーバーを初公開より)

出し入れだけの特化した結果、処理速度が格段に向上し、膨大なデータの中からでもすぐにほしい情報を取り出せることが可能になったわけですが、列指向DBMSはそれしか出来ないと言っても過言ではありません。なので、不足している部分は全てアプリケーションで補う必要があります。

「ドラえもん」にたとえるなら、はじめGoogleは四次元ポケットを作ったが、そこに入れる道具も作らないと意味が無いので、今でも一生懸命便利な道具を開発しているのです。


Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)