database

Googleがグローバルな分散データベースCloud Spannerをローンチ、SQLとNoSQLの‘良いとこ取り’を実装

次の記事

雨の夜を走るDrive.aiのデモビデオを紹介

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データベースの利点も提供できる。

2017-02-14_0903

“データ保存データベースではなく、日々のトランザクションのためのデータベースでスケールの限界にぶつかっていたら、シャーディング*やNoSQLが次の選択肢だ”、とSrivastavaは語る。“しかし、それでもなおSQLは使い続けたい、という二股的トレードオフを抱えているなら、Spannerを選ぶべきだ。デベロッパーは、今使っているシステムを捨てたくない。だったら私たちが、そのトレードオフをできるかぎりシンプルにして差し上げたい”。〔*: sharding, 参考記事.〕

彼女によると、Cloud Spannerのデータベースには理論的には大きさの制約はないし、もちろん小さなプロジェクトでも十分に利用できるが、メインのアドバンテージは必ずしもスケーラビリティではなくて、グローバルなトランザクションの能力にある。そういう意味でCloud Spannerは、Cloud Datastoreの拡張と考えた方がよい。Cloud DatastoreはGoogleの、スケーラビリティの高いNoSQLデータベースだが、ACIDトランザクションやSQLふうのクェリもサポートしている。

cloud-spanner-4

パフォーマンスについては、まだ体験的に語れる段階ではないが、Googleの約束ではCloud Spannerの性能はそのほかのクラウドデータベースとほぼ互角である。

GoogleはCloud Spannerに関して99.9999%のアップタイムを約束しており、また提供するクライアントライブラリはJava, Go, Python, Node.jsなど複数の言語に対応している。ベータテストの間に複数の企業が、そのほかの言語のためのドライバーを作ったから、それらの言語のサポートも遠くないだろう。

料金は1ノード1時間あたり90セント(レプリケーションを含む)から始まり、ストレージは1GB1か月30セントだ。ネットワークのingressは無料、egressはGoogleの通常のクロスリージョン(複数リージョン間)とインターネットegressの料金に従う。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))