海外コメンタリー

グーグルのグローバル分散DB「Cloud Spanner」は何が違うのか - (page 2)

Andrew Brust (Special to ZDNet.com) 翻訳校正: 石橋啓一郎 2017年07月19日 06時30分

  • このエントリーをはてなブックマークに追加
  • 印刷

成り立ち

 Google社内で使用されていたバージョンのSpannerは、「AdWords」や「Google Play」などのワークロードを処理するために開発された。Googleによれば、これらのサービスではもともと、MySQLを使用し、手動でシャーディングを行っていた。この手法の問題は、その手動でのシャーディングだった。この手法を採用することで、MySQLが本来対応していないスケールアウトが可能になったが、これは非常に扱いにくいもので、データベースの再シャーディングには年単位の処理を必要とした。

 Googleは、柔軟にシャーディングを行える機能をネイティブに備え、リレーショナルなスキーマとストレージが使用可能で、ACIDに対応しており、ゼロダウンタイムをサポートしているデータベースを必要としていた。そのようなデータベースは存在していなかったため、Googleは自前で開発を行い、Spannerの原型が生み出された。その後10年近くにもおよぶ自社製品でのテストを経て、同社はCloud Spannerとその公開APIの一般提供にたどり着いた。

スケールアウトとACIDの両立

 Spannerは、自動シャーディング機能を持っているにもかかわらず、まもなくリージョン間トランザクションにも対応する予定だ。そんなことが可能なのなら、従来のリレーショナルデータベースでは、何故それができなかったのだろうか。また、Spannerがスケールアウトに対応しながら、従来のリレーショナルデータベースが持つ性質も失っていないのに対し、これまでのプラットフォームがスケールアップモデルにしか対応できなかった理由は何だろうか。Spannerは、どうやってこの2つを両立しているのだろうか。

 ポイントはトランザクションのコミット方法だ。従来のシステムでは、データベースが地理的に分散している場合、2相コミットと呼ばれるプロトコルを用いていた。この手法では、各サイトでの作業がすべて完了するまで、コミットが完了しなかった。しかしSpannerでは、各サイトにほかのサイトの完全な複製が用意されており、Paxosコンセンサスアルゴリズムを使用して、大半のサイトで作業が完了したはずの時点でトランザクションをコミットしている。更新が完了していないサイトのユーザーが、さらに処理を行った場合、そのサイトで処理が完了するまでの間、処理は完了済みのサイトにリルートされる。この方式では、タイミングによっては一部のユーザーに余分の遅延が発生するが、分散型の一般的なデータベースで見られる処理の渋滞を排除することができる。

さらなる工夫

 特に重要なのはPaxosアルゴリズムだが、そのほかのソフトウェア的な工夫や、最適化されたネットワークやハードウェアも使い勝手に貢献している。例えば、書き込み操作中にデータをロックする際、Spannerの場合は、行全体をロックするのではなく、特定のセル(特定の行の特定の列にあるセル)だけをロックする。これによって競合を最小限に抑えることができるため、トランザクションのコミットを高速化しつつ、データベース全体の一貫性を確保することができる。また、少し古いバージョンのデータを「ステイル」(古い)データとして読み込み専用に提供することで、不必要な競合をさらに減らしている。

 高速化のためのもう1つの工夫として、Spannerでは、子データを物理的に親データと一緒にストアしている。一般的なデータベースでは、これらのデータは別のテーブルにストアされる。これによって、階層的なデータを含むクエリ(例えば発注情報と品目名)を、テーブルの結合を経ずに一度に実行することができる。

 CAP定理では、分断耐性と一貫性を保ちながら高い可用性を確保することは不可能だとされているが、Spannerは分散データベースにつきものの制約の一部を、最適化によってひとつずつ緩和することで、この定理を(よい意味で)上手に逃れている。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

  • このエントリーをはてなブックマークに追加

この記事を読んだ方に

連載

CIO
月刊 Windows 10移行の心・技・体
ITアナリストが知る日本企業の「ITの盲点」
シェアリングエコノミーの衝撃
デジタル“失敗学”
コンサルティング現場のカラクリ
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「展望2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
セキュリティインシデント対応の現場
エンドポイントセキュリティの4つの「基礎」
企業セキュリティの歩き方
サイバーセキュリティ未来考
ネットワークセキュリティの要諦
セキュリティの論点
スペシャル
エンタープライズAIの隆盛
インシュアテックで変わる保険業界
顧客は勝手に育たない--MAツール導入の心得
「ひとり情シス」の本当のところ
ざっくり解決!SNS担当者お悩み相談室
生産性向上に効くビジネスITツール最前線
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell Technologies World
AWS re:Invent
AWS Summit
PTC LiveWorx
吉田行男「より賢く活用するためのOSS最新動向」
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
日本株展望
企業決算
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]