グーグルが構築した大規模システムの現実、そしてデザインパターン(2)~BigTable編

2010年8月25日

グーグルが「Evolution and Future Directions of Large-Scale Storage and Computation Systems at Google」(グーグルにおける、大規模ストレージとコンピュテーションの進化と将来の方向性)という講演を、6月に行われたACM(米国計算機学会)主催のクラウドコンピューティングのシンポジウム「ACM Symposium on Cloud Computing 2010」で行っています。

講演の内容を4つの記事(MapReduce編、BigTable編、教訓編デザインパターン編)で紹介しています。この記事はMapReduce編の続き、BigTable編です。

分散処理に対応するBigTable

次はBigTableの説明に移ろう。BigTableは、大規模分散の半構造化データストアシステムだ。

グーグルでは多くの構造的なデータを保存している。ページランクの計算のためのURLやWebのデータ、ユーザーごとのデータ、位置情報等々。しかもこれが大規模に存在している。これを数千台のマシンで分散処理でき、故障にも対応できるようなストレージが必要だった。

fig

BigTableの基本的なデータモデルは、ロー、カラム、それにタイムスタンプによるバージョニング。

fig

BigTableを分散処理に対応させるメカニズムが、Tabletと、TabletのSplittingだ。Tabletには多くのローが保存されており、Tabletにデータを格納していくとTabletが大きくなっていく。そしてある程度大きくなったらTabletを分割し、分散させていく。

fig

BigTableはグーグルの主要なデータストアであり、多くの実際のサービスで使われている。

fig

BigTableに付随する実行コード

さて、BigTableについての新しい情報も紹介しよう。

以前は、グーグル内のそれぞれのグループが独自にBigTableを利用し、それぞれがBigTableを管理していた。現在ではBigTable専用チームで管理するようにしている。

また、性能分離を向上させている。グーグルマップ、ブックスキャニングチームなどが大量のMapReduceをはじめても影響がないようになった。耐障害性も向上させている。

fig

レプリケーションも進歩しており、データは3つの異なるデータセンターにレプリケーションされるようになった。レプリケーション間での一貫性はEventual Consistency(結果整合性)を採用している。

ユーザー向けのほとんどのデータはレプリケーションされるようになっている。

fig

BigTable Coprocessorsと呼ぶ、Tabletごとに付随するコードを実行できるようにした。このコードはTabletの分割などにも追随していく。RPCによる操作とは異なり、「これこれの行をとりだしたい」という抽象化した要求をTabletに対して投げ、複数のサーバで並列に実行できる。

fig

マルチデータセンターの上に作られるSpanner

現在取り組んでいるのが「Spanner」だ。グーグルがこれまで(Spanner以前に)作ってきたのは、個別のデータセンター用のものだった。サービスデベロッパはそれらを組み合わせてクラスタレベルでのアプリケーションを作ってきた。

Spannerでは、マルチデータセンターの上にストレージやコンピューテーションを作ろうとしている。さらに、プログラマは強いコンシステンシも容易に使えるようになる。

fig

Spannerのゴールは、10万台から1000万台程度のサーバで構成され、1つのネームスペースを持つものだ。内部はゾーンという単位で管理しようとしている。

fig

次回は、グーグルが大規模システム構築で学んだこと。教訓編です。

あわせて読みたい

クラウド Google データセンター




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本