Google Cloud Day ’23 Tour in TOKYOのDay2にて行なわれたセッション「今のあなたに最適なデータベースは? 〜AlloyDB と Cloud Spanner を使い分けるためのポイント〜」のレポートです。
※画像は資料から抜粋しております。

Google Cloud Day ’23 Tourとは

Google Cloud Day ’23 Tour in TOKYO は、2023/5/23〜5/25の3日間に渡って、
Google Cloudの最新ソリューションとお客様事例についての、数多くのセッションが行なわれるイベントです。
オンデマンド配信もあるため、気になったセッションがあれば以下からチェックしてみましょう。
https://cloudonair.withgoogle.com/events/google-cloud-day-23

概要

登壇者

  • Google Cloud 江川 大地 様
    • ソリューション & テクノロジー グループ データベース スペシャリスト
    • 好きなデータベースはAlloyDB
  • Google Cloud 佐藤 貴彦 様
    • ソリューション & テクノロジー グループ データベース スペシャリスト
    • 好きなデータベースはCloud Spanner

セッション内容

Google Cloud では、高い可用性やパフォーマンスが求められるワークロードに対応するフルマネージドなリレーショナル データベース サービスとして Cloud SQL、AlloyDB、Cloud Spanner を利用できます。
このセッションでは、特に AlloyDB、Cloud Spanner にフォーカスをあて、それぞれの特徴と選択のポイントを整理していきます。
Google Cloud でデータベースを利用する際の要件や考え方を確認していただければと思います。

レポート内容

データベースの全体像

現在、マネージドデータベースは以下が提供されており、お客様のユースケースに応じた選択が可能となっている。
今回は、その中でも問い合わせの多いAlloyDBとCloud Spannerについて話していく。

AlloyDBとは

2022年末にGAされた、PostgreSQLとの互換性のあるDB。
コンソールから4ステップで簡単に作成可能で、以下の6つの特徴がある。

  • 高い可用性
  • 高いスケーラビリティ
  • 機械学習を活用した効率的な運用や機能といったインテリジェント
  • OLTPだけじゃなく分析ワークロードにおいても優れたパフォーマンス
  • PostgreSQLとの互換性を持つので利用しやすい
  • 分かりやすい料金モデル

Cloud Spannerとは

コンソールから作成するのに必要な情報は3つだけで、主に以下の3つの特徴がある。

  • ゼロダウンタイムを実現する高可用性
  • 必要な性能を得られる柔軟なスケーラビリティ
  • 運用いらずのフルマネージドRDBMS

使い分けではまず何を考えるか?

一般的に、主に以下の非機能要件が考えられる。

  • 可用性
  • 性能と拡張性
  • 運用と保守性
  • セキュリティ

今回は「可用性」と「性能と拡張性」、および他に重要なポイントとなる「データ構造と互換性」について比較する。
まずは、それぞれについて簡単に比較すると以下のようになる。

簡易比較では以下の違いくらいしか見られないが、ここから各項目を具体的に掘り下げてみる。

  • 可用性が99.99%か99.999%か
  • スケールアップかスケールアウトか

可用性

コンピュートやストレージのリソースはどちらも分離しており、障害分離や拡張性のしやすさで工夫されている。
シングルリージョンとマルチリージョンの場合のそれぞれで比較する。

シングルリージョン

どちらもマルチゾーン構成で、ストレージは同期レプリケーションしており高い可用性がある。
そのため、コンピュートに焦点を当てる。

  • AlloyDB
    • 正常動作
      • 読み書き用にプライマリ/スタンバイが1つずつ、追加でリードレプリカという構成
      • プライマリのメンテナンスやサイズ変更がある場合、10秒ほどダウンタイムがある
    • ゾーン障害時
      • RPO = 0(データロスなし)
      • RTO > 0(フェイルオーバーは60秒以内)
  • Cloud Spanner
    • 正常動作
      • 読み書き用のノードがアクティブな状態で3ゾーンで立ち上がり、同期レプリケーションを行なっている
      • 他のノードにルーティングを切り替えるだけなので、障害やメンテナンスが起きてもダウンタイムがない
    • ゾーン障害時
      • RPO = 0(データロスなし)
      • RTO = 0(ダウンタイムなし)

マルチリージョン

  • AlloyDB
    • 正常動作
      • セカンダリのクラスタを持つことができる
      • 非同期レプリケーションなので、更新処理はシングルリージョンだけで完結
        • レイテンシもシングルリージョンとほぼ変わらない
    • リージョン障害時
      • RPO > 0
      • RTO > 0
        • セカンダリへの切り替えは手動
  • Cloud Spanner
    • 正常動作
      • シングルリージョンと同じ仕組みで同期レプリケーションする
        • 2つのクラスタを持つのではなく、1つのインスタンスとして構成される
    • リージョン障害時
      • RPO = 0(データロスなし)
      • RTO = 0(ダウンタイムなし)

比較まとめ

  • どちらも99.99%の稼働率を実現できるので、可用性の観点からはどちらでも問題ない。
  • 非常にシビアな高可用性が求められるシステムでは、Cloud Spanner は複数リージョン構成時に 99.999% の稼働率を実現できる。
  • RPO/RTOの差があることに注意。

性能と拡張性

スループットを増やすにはどうするかという観点に焦点を当てる。

  • AlloyDB
    • 書き込みはインスタンスサイズの変更によるスケールアップ
    • 読み取りはリードレプリカ追加によるスケールアウト
    • ストレージは自動拡張(最大32TiBまで)
  • Cloud Spanner
    • 読み書き共にノード追加によるスケールアウト
    • ストレージは自動拡張(1ノードあたり4TiBまで)

比較まとめ

  • どちらも高いスループットを実現可能。
  • Cloud Spannerは書き込みと読み込みともにスケールアウトで拡張できるため、ダウンタイムなしで処理性能を高めることが可能。
  • AlloyDBは、提供されているインスタンスタイプで書き込み性能を満たせるのであれば選択肢となる。

互換性

  • AlloyDB
    • 互換性
      • PostgreSQLとの完全な互換性
        • アプリからは従来のPostgreSQLと考えて問題ない
        • PostgreSQLのデータ型やSQL、関数がそのまま利用可能
    • 主な拡張
      • contribモジュール
      • 3rd party モジュール
      • AlloyDB特有の拡張
  • Cloud Spanner
    • 互換性
      • Google標準SQL(ANSI SQL標準2011準拠)
      • PostgreSQL Interface(PostgreSQL互換)
    • Cloud Spannerのベストプラクティスやお作法に合わせる必要がある
    • PostgreSQLのデータ型やSQL、関数がCloud Spannerのものにマッピングされる

Cloud SpannerでPostgreSQL方言を利用する2つの方法

  • PostgreSQL Interface
    • PostgreSQLのSQL方言のみが使える
    • あくまでCloud SpannerのエンドポイントにCloud Spannerのプロトコルで通信するので注意
  • PGAdapter
    • PGAdapterを経由することで、psqlコマンドや、JDBCやpgx等、各種PostgreSQLのドライバーがを直接使うことができる。
    • PGAdapterが、PostgreSQLのプロトコルをCloud Spannerのプロトコルへ変換してくれる

比較まとめ

どちらもPostgreSQLへの互換性を持つので、PostgreSQL利用者は新しい知識を必要としない。
アプリケーションの移行を考えた時、AlloyDBは完全な互換性を持つので、そのまま移行してすぐに稼働できるケースが多い。
Cloud SpannerはPostgreSQL Interfaceを利用しても、アプリケーションの改修が必要なことに注意。

総評

  • AlloyDBを選択する際のポイント
    • PostgreSQLとの完全互換を活かして、アプリケーションを簡単に移行したい場合
    • 商用データベースから移行するにあたって、改修コストを抑えたい場合
  • Cloud Spannerを選択する際のポイント
    • 厳しい可用性の要件を実現する場合
    • 新規開発などのCloud Spannerのベストプラクティスに合わせた設計ができる場合

終わりに

Google Cloud Day ’23 Tour in TOKYOのDay2にて行なわれたセッション「今のあなたに最適なデータベースは? 〜AlloyDB と Cloud Spanner を使い分けるためのポイント〜」のレポートでした。
AlloyDBとCloud Spannerはどちらも高性能なサービスなので、どのように選定すれば良いか難しいと思っていましたが、本セッションを聴講したことで、それぞれの特徴や懸念点などが明確に理解でき、非常に学ぶことの多いセッションでした。

該当セッション(資料も掲載されています)
今のあなたに最適なデータベースは? 〜AlloyDB と Cloud Spanner を使い分けるためのポイント〜