Googleを支える大規模分散システム

工藤拓氏の講演。インフラ。


GoogleFileSystemっていうストレージをマネージするやつと、
BigTagleっていうGoogleがスクラッチで作ったデータベースで構成されている。


BigTableはエクセルシートみたいなテーブル構造になってて非常にシンプル。
行がドメイン(xx.co.jp)、列がコンテンツ(xx.html)みたいな形でデータが格納されている。


データはソートされて入っていて、
ドメインが同じだとコンテンツはそれぞれ似たような構成をしているので
圧縮して保存できるのだそう。


カラムは時間軸を持っていて、その時のスナップショットを取得できる。


データは勝手につっこんでいくだけで、裏側で勝手にサーバが分散されて構成されていく。
# このテーブルはこれくらいのサイズだからこれくらいの表領域がどのデータファイルに〜
# とか考える必要がない。


商用のRDBでは、アプリケーション毎にアクセスパターンが全く異なる場合に
対処できなかったり、非常にメタな部分でチューニングが必要になるのに対応ができないため、
BigTableを使っている。


抽象化は内側で何をやっているのかわからなくなってしまうので極力避ける。
(例えば商用RDBを使ってSQLを使ってアクセスするようなことは抽象的)


で、データが格納されているファイルシステムは、
数千台のサーバのどれが逝っても大丈夫なように
アプリケーションレイヤでFailOver用にコミットログを取りながら
動いている。


数千台のサーバという規模になると、DNSという仕掛けは使えない。
(常にいずれかのサーバは逝ってるため、頻繁にIPが変わり、それが正しいのか判別が難しい)
そのため、Chubbyというメタデータを持った仕掛けを用意している。
# すいません、うろ覚えで間違ってるかも。。

また、SSTableというB-Treeのデータストレージを用意している。
# 何のためか忘れてしまいました。。。


で、その結果1秒間に120万リクエストを処理して、
1秒間に700メガ書き込めて、16ギガ読み込めるらしい。

    • -

なんというか、規模がでかすぎて、
でも、仕掛けはシンプルで男前な感じがして、
話を聞いているだけで、ワクワクしてしまいました。