Microsoftの初めてのグローバルな分散クラウドデータベース「Cosmos DB」の一般提供開始が発表されたのは、5月に開催されたMicrosoftの開発者向け年次イベント「Build」でのことだった。そしてその次の週に、Googleもグローバル分散データベース「Cloud Spanner」の一般提供開始を発表した。
3大パブリッククラウドプロバイダーのうちの2社から、短期間の間に同じ分野の製品が発表されたわけだが、ここではCloud Spannerについて解説したい。ありがたいことに、今回の記事の執筆にあたり、Google Cloudの製品管理担当ディレクターであるDominic Preuss氏から説明を受けることができた。では、本題に入ろう。
競合製品との比較
この記事ではまず、Spannerを、AmazonとMicrosoftの競合するクラウドデータベースと比較してみよう。ここで行うのは、詳細な競合分析というよりは、相対的な位置づけの確認だ。
最初に理解しておくべき点は、SpannerはオペレーショナルOLTP(オンライントランザクション処理)ワークロードを処理することを主目的としたリレーショナルデータベースであり、ACID(原子性、一貫性、独立性、永続性)の機能を完全に備えているということだ。Spannerはリレーショナルデータベースサービスの単純なスケールアップ版ではない。それは「Google Cloud SQL」の縄張りだ。Spannerはデータウェアハウスでもない。その種のワークロードには、「Google BigQuery」が用意されている。また、NoSQLデータベースでもない。GoogleのNoSQLデータベースには、「Cloud Bigtable」がある。
Spannerが比較されるべき相手は、「結果的整合性」と呼ばれる考え方を採用したNoSQLデータベースである、Amazonの「DynamoDB」や、やはりNoSQLデータベースで、ACIDや結果的整合性、そしてその中間のものも含めて幅広い一貫性モデルを使用できる、Microsoftの「Cosmos DB」だろう。
アナリティクスの観点からの比較
また、SpannerはOLTPに特化して設計されたリレーショナルデータベースではあるが、データベース内で実行するオペレーショナルアナリティクスにも使用できる。とすれば、SpannerはリレーショナルでACIDに完全に対応しており、オペレーショナルアナリティクスにもある程度対応している「Azure SQL Database」や「Amazon Relational Database Service」(RDS)と比較すべきだという見方もできる。
しかし、リレーショナルでACIDであるという理由で、SpannerをAzure SQL DatabaseやAmazon RDSと比較するのは、それほど簡単ではない。なぜなら、GoogleのCloud SQLもそうだが、SQL DatabaseやRDSはオンプレミス用に作られたデータベース管理システムのクラウド版であるのに対して、Spannerはクラウドを前提に設計されているからだ。Cosmos DBとDynamoDBについても事情は同じだ。
また、Spannerはクエリとデータの定義(テーブル等の作成)にはSQLを使用しているものの、データの操作や書き込みにはSQLを使用しない。そのかわり、「突然変異」したAPIを使用しており、その構文はオブジェクトリレーショナルマッピング(ORM)に似ているが、それよりもプロパティ指向になっている。この点でも、Azure SQL DBやAmazonのRDSとは異なっている。これらの理由から、単純な比較は難しい。