「Google Cloud Spanner」発表。地球規模の大規模分散環境で稼働するミッションクリティカルなリレーショナルDB。NoSQL並のスケーラビリティでSQL対応、トランザクション処理を実現

2017年2月16日

Googleは、クラウド上で高度なスケーラビリティを実現する、ミッションクリティカルな業務に対応したリレーショナルデータベースサービス「Google Cloud Spanner」を発表しました

Google Cloud Spannerは、地球規模の大規模分散処理データベースとして、NoSQL並の非常に高いスケーラビリティと高い可用性、そして高速な処理を実現しつつ、SQLに対応。強い一貫性を持つトランザクション処理も実現。企業のミッションクリティカルな業務にも使えると説明されています。

地球規模に分散したリレーショナルデータベース

一般に、ミッションクリティカルな業務に対応したリレーショナルデータベースでは、高い可用性と性能を実現するために複数のサーバでクラスタを構成することで、処理の冗長性による高可用性と分散処理による高性能を実現しています。

例えばミッションクリティカル向けの代表的なリレーショナルデータベースであるオラクルの「Oracle RAC」は、基本的に高速なイーサネットやファイバーチャネルで接続された複数台のサーバ群を基盤に稼働します。これにより、万が一いずれかのサーバが失われたとしてもシステム全体としては稼働し続ける能力を備えています。

クラウド上でミッションクリティカルな業務向けに最適化されたAmazon Auroraでは分散の規模がより拡大し、「アベイラビリティゾーン」と呼ばれる物理的なデータセンター3つにまたがって稼働するようになっています。

これにより、万が一あるデータセンターが失われたとしても、システム全体としては稼働し続けるように設計され、より大きな規模の障害に耐えるようになりました。

そして今回発表されたGoogle Cloud Spannerは、地球規模で分散されたデータセンターにまたがって稼働するリレーショナルデータベースです。そのため万が一どこかの地域のデータセンター群が失われたとしても、全体としては稼働し続けられる高い可用性と高い分散処理性能を実現しています。

Spannerはグローバルなプライベートネットワークで運用

このようにデータベースの可用性と性能はより大規模に分散させるほど向上しますが、逆に大規模に分散させるほど、一貫性を保証したトランザクション処理は困難になります。

例えば分散環境におけるトランザクションで一般的に使われている2フェーズコミットでは、あるトランザクションを複数のサーバが実行したときに、すべてのサーバで正常終了したという返事が揃うまではトランザクションが完了しません。

これを地球規模で分散したデータセンター群で実現しようとすると、光の速度を上限とする通信速度がボトルネックとなってトランザクション処理が遅いものになってしまいます。万が一どこかで通信障害が発生して遅延したり通信が途絶した場合も分散トランザクションが遅くなる、あるいは失敗する、データの一貫性の維持が困難になる、などの問題が発生します。

そこでGoogle Cloud Spannerではこうした問題を生じさせず、高い可用性と高い処理性能を同時に実現すべくいくつかの対策をしています。

1つ目はGoogle Cloud Spannerが稼働するグローバルなネットワークを、すべてGoogleの高速なプライベートネットワークとして構築してある点です。すべてのデータセンターが少なくとも3本の独立したプライベートな光ファイバー回線の接続を持ち、万が一いずれかの回線が落ちても致命的な障害を起こさないようになっています。

2つ目は、2フェーズコミットとPaxosグループを用いている点です。これにより、ネットワークが遅い、もしくは途絶した環境でトランザクション処理に時間が掛かる、もしくは終わらないという制約を緩和できるとのこと。

そして3つ目は、「TrueTime」と呼ばれる技術で、すべてのサーバの時刻を正確に同期している点です。これはこれまでの同社のSpannerに関する発表から、GPSと原子時計が用いられていると見られています。

TrueTimeによってすべてのトランザクションには厳密なタイムスタンプが付けられ、これによって地球規模の分散環境におけるトランザクションの順番や一貫性の保証を実現するとされています。

Googleはこれまで数年間、社内でSpannerを運用してきており、今回それが初めて一般向けのクラウドサービスとして社外に公開されることになります。

あわせて読みたい

Google Cloud RDB クラウド 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本