Get Things Right

My English blog is here http://getthingsright.blogspot.com/

Google App Engine Datastore

グーグルのインフラを一言で表現するなら「スケールアウト」になる。グーグルのインフラは特別なコンピューターではなく、コスト面で優位にある普通のコンピューターを繋げ合わせ、まるで一つのコンピューターとして動くことができる、分散•協調を司るプログラム群で成り立っている。

スケールアウトとは、サーバーを付け加えるだけで、計算機資源(例えばストレージ容量)の問題を解消できる仕組みである。「取り替える」ではなく、「付け加える」だ。家庭では新しいノートパソコンを購入したりと「取り替える」だけが主な選択肢。たとえ古いパソコンも使い続けることはできるが、そこには新しいパソコンと合わせて「まるで一つのコンピューター」として動かすような仕組みはない。

スケールアウトの利点はコストパフォーマンスがあげられる。その実態はボトルネックを極力抑えたファイルシステム(GFS、大規模データ)、データベース(Bigtable、小規模構造化データ)、Chubby(小規模データ、ロック•通知機能有り)等々、ボトルネックを作らないシステム群。これらシステム群の上にアプリケーションを構築するプログラマは何がボトルネックとなり、ボトルネックをさけるためのプログラミングの作法を理解する必要がある。

グーグルは自身のインフラをGoogle App Engine(GAE)という形で一般の利用者にも解放している。ファイルシステムのレイヤーからスケールアウトを意識したインフラを構築しているグーグルがクラウド時代において、より大きな計算機資源をより安価で使いやすい形でプログラマに提供してくれれば、「一人が大きく世界を変えることができる」可能性を高めることになる。これは凄いこと。

GAEはデータを保管する手段としてDatastoreというBigtable上に構築されたインタフェースを提供している。DatastoreはO/Rマッパーのようにデータをオブジェクト指向そのままに操作することができ、データは数値、日付、文字等、関係なしに、バイト列として一括してまとめられ、キーとともに保存される。検索の際は、別途作成される並び替えが済んでいるインデックスとキーのテーブルを使用する(インデックススキャン)。キーを予め取得している場合は、インデックススキャンなしにデータを取り出すことが可能だ。

参考

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

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

オープンソース徹底活用Slim3onGoogleAppEngineforJava

オープンソース徹底活用Slim3onGoogleAppEngineforJava

http://d.hatena.ne.jp/kazunori_279/
https://sites.google.com/site/io/under-the-covers-of-the-google-app-engine-datastore
http://www.google.com/events/io/2009/sessions/TransactionsAcrossDatacenters.html