Googleが今日、Cloud Spannerのベータローンチを発表した。それは、ミッションクリティカルなアプリケーションのための、グローバルな分散データベースだ。Cloud SpannerはGoogleの一連の、クラウドベースのデータベースサービスの仲間に加わる…それらは、Bigtable, Cloud SQL, そしてCloud Datastoreなどだが、しかしその重要な特徴は、従来的な関係データベースとNoSQLデータベースの両方の長所を取り入れて、トランザクションの一貫性(整合性)とスケーラビリティの容易さの両方を実現していることだ。現実的に分かりやすい言い方をすると、MySQLやPostgreSQLなどのデータベースでスケールの限界にぶつかっているデベロッパーが、クェリなどの現状を維持しつつ、その限界を乗り越えるために採用する代替的データベースだ。
Cloud Spannerという名前に見覚えのある方は、それはたぶんGoogleがこのデータベースの過去のバージョンを社内的に使っていて、2012年にはそれに関するペーパーを公開しているからだ。GoogleのDeepti Srivastavaによると、Googleは2007年に、MySQLに代わるデータベースとしてSpannerの開発に着手した。それまでは同社のさまざまなプロダクトで、MySQLが使われていた。しかし今日では、Google Photosや、Googleのそのほかの多くのミッションクリティカルなアプリケーションがSpannerを使っている。その同じデータベースを今回、外部デベロッパーにも公開したものが、Cloud Spannerなのだ。
デベロッパーは、SQLベースのアプリケーションを書くときに集積した知識をそのまま新しいデータベースに持ち込んで、SQLのシンタックスを用い、顧客にはACIDなトランザクションを提供できる(しかもそれを自分たちのセールスポイントにもできる)が、しかしそれと同時に、Google自身がそのプロダクトの運用のために必要としている、スケーラビリティとグローバルなネットワークの組み合わせなど、今日的なNoSQLデータベースの利点も提供できる。
“データ保存データベースではなく、日々のトランザクションのためのデータベースでスケールの限界にぶつかっていたら、共有データベースやNoSQLが次の選択肢だ”、とSrivastavaは語る。“しかし、それでもなおSQLは使い続けたい、という二股的トレードオフを抱えているなら、Spannerを選ぶべきだ。デベロッパーは、今使っているシステムを捨てたくない。だったら私たちが、そのトレードオフをできるかぎりシンプルにして差し上げたい”。
彼女によると、Cloud Spannerのデータベースには理論的には大きさの制約はないし、もちろん小さなプロジェクトでも十分に利用できるが、メインのアドバンテージは必ずしもスケーラビリティではなくて、グローバルなトランザクションの能力にある。そういう意味でCloud Spannerは、Cloud Datastoreの拡張と考えた方がよい。Cloud DatastoreはGoogleの、スケーラビリティの高いNoSQLデータベースだが、ACIDトランザクションやSQLふうのクェリもサポートしている。
パフォーマンスについては、まだ体験的に語れる段階ではないが、Googleの約束ではCloud Spannerの性能はそのほかのクラウドデータベースとほぼ互角である。
GoogleはCloud Spannerに関して99.9999%のアップタイムを約束しており、また提供するクライアントライブラリはJava, Go, Python, Node.jsなど複数の言語に対応している。ベータテストの間に複数の企業が、そのほかの言語のためのドライバーを作ったから、それらの言語のサポートも遠くないだろう。
料金は1ノード1時間あたり90セント(レプリケーションを含む)から始まり、ストレージは1GB1か月30セントだ。ネットワークのingressは無料、egressはGoogleの通常のクロスリージョン(複数リージョン間)とインターネットegressの料金に従う。