https://qiita.com/pa_pa_geno/items/c5fc5ea0d5daf415080d
Advent Calendarへの参加は、というかQiitaへの投稿自体が初めてなので緊張します。 本記事ではCloud Spannerについての概説と設計上の要点などをまとめてみました。技術的な解説というよりは実設計レベルの話を中心にします。 今後ますます注目されるサービスだと思いますが、これから使う人にとって理解の一助になれば幸いです。 ちなみに本記事はスケールアウトするSQLシステム(2017/8/22)での発表をベースにしています。ほとんどはこの時に話した内容そのままです。 このイベントでの発表スライドも参考にしてみてください。
GCPで提供されているデータベースサービスのひとつで、2012年ごろからGoogle社内では使用されてきた。 2017年2月にGCPサービスとしてβリリース、2017年7月には東京リージョンで正式版が提供されている。 Google社内ではAdWordsやGooglePlayなどのサービスで使っているらしく、使用規模や信頼性は十分であることが分かる。
GCPにはデータベースとして使えるサービスはいくつかあり、それぞれ得意な領域や料金体系が異なる。
本題ではないが、それぞれのサービスについてさわりだけ説明する。 (筆者は全部を触ったわけではないので参考程度に)
スケーラビリティの高いNoSQLで、GCPのデータベースサービスとしては最も高パフォーマンス(たぶん)。料金はお高め。 シャーディングがフルマネージドで、文字通り「Big」なデータを扱うことに長けている。IoTなどで使うのに適している。 トランザクションはなく、複雑なことをするのには不向き。 BigQueryから直接クエリを投げられるというのは地味なメリット。 なお2017年12月現在では東京リージョンがない。
Bigtableのアーキテクチャ上に構築されたサービス。 リレーショナルじゃないデータベースだが、複数のキーをまたいだトランザクションも使えたりする。 スケールイン・スケールアウトともフルマネージド。 月間あたりの使用量について無料枠がある。そのためスモールスタートにとても適してると言える。 すでに数多くのスマホゲームでも使用されていることから分かるようにRDBMSからの置き換えとしてはまずDatastoreが挙がる。 しかしDatastoreを使う場合、RDBMSを使う場合とは設計思想がかなり異なってくるので「置き換えには結構苦労した」な話もよく聞く。
GCP上で使えるMySQLで、2ndGenerationになり他のクラウドサービスのMySQL互換サービスとも遜色なくなった。 DatastoreやSpannerで謳っているようなスケーラビリティのメリットなどは得られないので、これを使うためにGCPを選択する必要は今のところないが、運用案件の一部の機能を任せることはある。 2017年12月現在ではMySQL5.6とMySQL5.7が使用できる。(PostgreSQLがベータ版で使用できるようになったようだ)