AlloyDB の概要

AlloyDB for PostgreSQL は、トランザクションと分析のハイブリッド処理など、特に要求の厳しいワークロード向けに設計された、PostgreSQL 対応のフルマネージド データベース サービスです。AlloyDB は Google が構築したデータベース エンジンと、クラウドベースのマルチノード アーキテクチャを組み合わせたもので、エンタープライズ グレードのパフォーマンス、信頼性、可用性を提供します。

AlloyDB の仕組み

アプリケーションは、標準の PostgreSQL プロトコルと手法を使用して AlloyDB インスタンスに接続します。アプリケーションは、PostgreSQL クエリ構文を使用してデータベースを操作します。

内部的には、AlloyDB は、データの可用性を最大化し、クエリのパフォーマンスとスループットを最適化するように設計された、クラウドベースのコンポーネントと機能の階層を利用します。 Google Cloud管理ツールを使用すると、AlloyDB デプロイの健全性をモニタリングし、ワークロードの変化する需要に最適なようにスケールとサイズを調整できます。

AlloyDB のアーキテクチャと標準 PostgreSQL の違い

従来の PostgreSQL デプロイでは、クエリを処理するデータベース エンジンとデータが保存されているストレージが同じサーバーに配置されているケースが多く見られます。AlloyDB の場合は、分離されたアーキテクチャを採用しています。コンピューティング レイヤとストレージ レイヤは分離されており、個別のスケーリングが可能です。

一般的な PostgreSQL のセットアップのスケーリングには、より大きなサーバーにアップグレードすることによる垂直スケーリングや、データの複製も行うリードレプリカを使用することによる読み取りの水平スケーリングが含まれます。

Google の分散ファイル システムに構築された AlloyDB の分離型設計には、次のようなメリットがあります。

  • 独立したスケーリング: ストレージのプロビジョニングまたはプロビジョニング解除を行うことなく、クエリの需要に基づいてコンピューティング リソース(ノードとインスタンス)をスケールアップまたはスケールダウンできます。読み取り専用ノードをスケールアウトして、可用性に影響を与えることなく読み取りのスケーラビリティを実現することもできます。データが増加すると、コンピューティングに影響を与えることなくストレージがスケーリングされます。
  • パフォーマンスの向上: 最適化されたクラウドネイティブ ストレージ エンジンにより、AlloyDB は高速なトランザクション クエリと分析クエリのパフォーマンスを実現します。これはインテリジェントなキャッシュ レイヤと高度な I/O 管理によるものです。
  • 管理の簡素化: 懸念事項の分離により、セルフマネージド PostgreSQL では手動タスクであるレプリケーション、バックアップ、パッチ適用など、多くのデータベース オペレーションを自動的に管理できます。
  • 高可用性と耐久性: 耐久性レイヤの冗長データ ストレージは複数のアベイラビリティ ゾーンにわたっており、インスタンスの健全性を問わず、データの損失が発生しない状態で自動フェイルオーバーと復元を実現します。

この基本的なアーキテクチャの違いは、AlloyDB のリソース階層に現れています。クラスタは包括的な論理データベース コンテナとして使用され、ノードはコンピューティング能力を付与し、インスタンスはアプリケーション接続ポイントとして機能します。一方で、データは分離された分散ストレージ レイヤに保持されます。

次の図は、負荷の高いワークロードを処理するようにスケーリングされたクラスタの例を示しています。このクラスタには、複数のロード バランシングされた読み取りプール インスタンスが含まれています。

プライマリ インスタンスと読み取りプール インスタンスを含むクラスタを示した図

クラスタ

特定の Google Cloudリージョン内の単一の AlloyDB デプロイでは、すべてのリソースが 1 つのクラスタに編成されます。これには、すべてのデータベース、ログ、その他のメタデータが含まれます。AlloyDB は、1 つのクラスタのすべてのリソースを単一の Virtual Private Cloud(VPC)内にデプロイし、Google が設計し AlloyDB 用に最適化されたクラウドベースのファイル システムを使用します。

ノードとインスタンス

クラスタには複数のノードが含まれます。ノードは、アプリケーションがクラスタのデータのクエリに使用する PostgreSQL 互換データベース エンジンの実行専用の仮想マシン インスタンスです。AlloyDB は、ノードをインスタンスに編成します。各インスタンスには VPC 内のプライベート静的 IP アドレスがあります。実際には、アプリケーションは PostgreSQL プロトコルを使用してこれらの IP アドレスのインスタンスに接続します。インスタンスはその後、SQL クエリをノードに渡します。

AlloyDB には次の 2 種類のインスタンスがあります。

  • プライマリ インスタンス: 各クラスタには 1 つのプライマリ インスタンスがあり、データへの読み取りまたは書き込みアクセス ポイントを提供します。プライマリ インスタンスは、高可用性(HA)または基本のいずれかです。

    • HA プライマリ インスタンス: HA プライマリ インスタンスには、アクティブ ノードとスタンバイ ノードの 2 つのノードがあります。AlloyDB はアクティブ ノードの可用性をモニタリングし、必要に応じてスタンバイ ノードをアクティブ ノードに自動的に昇格させます。

    • 基本インスタンス: 高可用性が不要な非本番環境では、必要に応じて基本インスタンスを使用できます。基本インスタンスにはノードが 1 つしかなく、スタンバイ ノードはありません。詳細については、基本インスタンスを使用してコストを削減するをご覧ください。

  • 読み取りプール インスタンス: 必要に応じて、クラスタに 1 つ以上の読み取りプール インスタンスを配置できます。各読み取りプール インスタンスには、クラスタ全体で最大 20 個の読み取り専用ノードを含めることができます。AlloyDB は、読み取りプール インスタンスに送信されたすべてのリクエストを自動的にロード バランシングし、インスタンスのノードに転送します。

シンプルなユースケースでは、クラスタにプライマリ インスタンスのみを配置し、読み取りプールを配置しないこともできます。この場合、アプリケーションはすべてのクエリにプライマリ インスタンスを使用します。負荷の高い処理の場合は、読み取りプール インスタンスをクラスタに追加できます。次に、レポート アプリケーションまたは分析アプリケーションを構成して、読み取りリクエストがそれらに送信されるようにします。この方法では、プライマリ インスタンスの負荷が軽減され、負荷が複数のノードに分散されるため、スケーラビリティが向上します。

アプリケーションのニーズに応じて、読み取りプール インスタンスのノード数をいつでも追加、削除、調整できます。また、必要に応じて、インスタンスの構成ノードのメモリ容量と vCPU の数を最小限のダウンタイムで変更することもできます。AlloyDB はデータをインスタンスではなくクラスタの柔軟なストレージ レイヤに保存するため、インスタンスのスケーリングでデータが失われるリスクはありません。

主な機能

AlloyDB は、前述のマルチノード アーキテクチャに固有の垂直方向と水平方向のスケーリングの利点を超えて、多くの点で標準の PostgreSQL インストールと区別されます。以降のセクションでは、AlloyDB の主な機能について詳しく説明します。

自動データベース機能と適応型データベース機能

すべての AlloyDB ノードに搭載されている PostgreSQL と完全に互換性のあるデータベース エンジンには、インスタンスが処理するクエリの構造と頻度を継続的に分析する機能がいくつかあります。この情報を使用して、スキーマの改善の提案や、最適化の自動的な適用を行います。

  • インデックス アドバイザーは、使用パターンに基づいて新しいインデックスを使用してデータベース スキーマを最適化する機会を見つけるのに役立ちます。

  • カラム型エンジンは、カラム形式を使用してデータをメモリに保存することで、分析クエリのパフォーマンスを高速化できます。これにより、AlloyDB は高度な処理手法を使用して、必要に応じて大量のテーブルデータを効率的にスキャンできます。

  • PostgreSQL の古いデータの自動バキューム機能の適応型バリエーションは、ワークロードの形状に最適なようにバキューム関連のパラメータを自動的に調整します。

  • 自動メモリとストレージ管理システムは、AlloyDB が動作する Google が構築したクラウドベースの環境を活用し、必要に応じてメモリとストレージの継続的な割り当てと解放を行い、最適なパフォーマンスとリソース効率でクラスタを継続的に実行します。

高可用性

デフォルトでは、AlloyDB クラスタは、2 つの異なるゾーンに配置されたプライマリ インスタンスの冗長ノードと自動フェイルオーバーを介して可用性(HA)を提供します。

HA を必要としない非本番環境で動作するクラスタでは、必要に応じて基本的な単一ゾーン プライマリ インスタンスを使用できます。

2 つ以上のノードを含む読み取りプール インスタンスを追加すると、データへのロードバランスされたマルチゾーン高可用性アクセス ポイントがさらに作成されます。すべての読み取りプール インスタンスは、プライマリ インスタンスから独立して実行されます。

リージョン固有の考慮事項の詳細については、地域とリージョンをご覧ください。

データのバックアップと障害復旧

AlloyDB の備える継続的なバックアップおよび復元システムを使用すると、調整可能な保持期間内の任意の時点に基づいて、新しいクラスタを作成できます。これにより、データ損失の事故から迅速に復元できます。

AlloyDB ではさらに、オンデマンドで、または定期的に、クラスタのデータの完全なバックアップを作成して保存できます。バックアップから新しい AlloyDB クラスタにはいつでも復元できます。このクラスタには、バックアップの作成時点で元のクラスタに入っていたすべてのデータが含まれます。

詳細については、バックアップについてをご覧ください。

障害復旧のもう一つの方法として、別々の Google Cloudリージョンにセカンダリ クラスタを作成することで、クロスリージョン レプリケーションを実現する方法もあります。AlloyDB は、指定されたプライマリ クラスタから各セカンダリ クラスタに、データを非同期でストリーミングします。必要に応じて、セカンダリ クラスタをプライマリ プール インスタンスと読み取りプール インスタンスを含むフル機能の AlloyDB クラスタにプロモートできます。

詳細については、クロスリージョン レプリケーションの概要をご覧ください。

セキュリティとアクセス制御

安全な AlloyDB Auth Proxy への接続を必須にするようにクラスタを構成できます。このプロキシは、アクセス制御に Google Cloud Identity Access and Management(IAM)を使用します。詳しくは、認可をご覧ください。

AlloyDB は認証に標準の PostgreSQL ユーザー ロール システムを使用し、AlloyDB に固有のロールもいくつか追加しています。詳細については、AlloyDB ユーザーロールを管理するをご覧ください。

暗号化

AlloyDB は、デフォルトで Google の暗号化方法を使用してすべての保存データを保護します。指定した鍵を使用してデータを暗号化する必要がある場合は、クラスタの作成時に顧客管理の暗号鍵(CMEK)を指定できます。AlloyDB は、CMEK 鍵を使用して、そのクラスタに書き込まれるすべてのデータを暗号化します。

CMEK はバックアップにも適用されます。CMEK 鍵は、オンデマンド バックアップの作成、バックアップ スケジュールの構成、バックアップからの復元時に指定できます。

詳細については、CMEK についてをご覧ください。

スムーズなメンテナンス

AlloyDB のメンテナンス オペレーションは、データベースの中断を最小限に抑えるように設計されています。プライマリ インスタンスとセカンダリ インスタンスのダウンタイムは 1 秒未満ですが、読み取りプールはダウンタイムなしで継続的に使用できます。これは、交換用サーバーを準備し、準備ができたらアクティブなサーバーとすばやく入れ替えることで実現します。このプロセス中、データベースへのアクティブな接続は一時的に切断されます。このプロセス中は、データベースを引き続き通常どおり使用できます。

この交換プロセスではダウンタイムを最小限に抑えますが、 Google Cloud コンソールと Google Cloud CLI に表示されるように、オペレーション全体に数分を要する場合があります。

このようなメンテナンス オペレーションには、Google が実行する定期的なメンテナンス タスクと、フラグの構成やインスタンスのサイズ変更など、手動で実行するタスクが含まれます。ダウンタイムが長くなったとしても、更新をすぐに適用する場合は、FORCE_APPLY データベース フラグを使用します。

AlloyDB AI

AlloyDB AI は、AI と ML の機能スイートを AlloyDB データベースに直接統合します。これまで、AI アプリケーションの構築には、複雑なデータ パイプラインと ETL プロセスを使用して、運用データベースから専用の AI / ML プラットフォームにデータを移動する必要がありました。この方法はデータ転送によるレイテンシの増加、異なるシステムの管理による運用上のオーバーヘッドの増加、ストレージの重複などの課題が発生していました。AlloyDB AI では AI 機能をデータベースに直接統合することにより、大規模な外部でのデータ移動の必要性がなくなります。

AI アプリケーションをスムーズに開発できるよう、AlloyDB AI には次の拡張機能が用意されています。

  • vector(AlloyDB AI 用にカスタマイズされた pgvector のバージョン): セマンティック検索のベクトル エンベディングを保存してインデックスに登録します。ハイブリッド クエリと類似性検索の実行をサポートします。ベクトル検索を開始するには、ベクトル検索を実行するをご覧ください。
  • alloydb_scann: ScaNN アルゴリズムを活用した効率的な最近傍インデックスを実装することにより、高性能の近似最近傍検索を可能にします。詳細については、ScaNN インデックスを作成するをご覧ください。
  • google_ml_integration: AI クエリエンジンにアクセスできるようにします。これにより、AlloyDB から ML モデルを呼び出して、エンベディングの生成、セマンティック ランキング、AI ベースのフィルタと結合、テキストの生成と要約などのタスクを実行できます。モデル エンドポイント管理では、OpenAI または Anthropic による外部モデルなどの AI モデルの登録と呼び出しができます。詳しくは、モデル エンドポイントを登録するAI オペレーターを使用してセマンティック クエリを評価するをご覧ください。
  • alloydb_ai_nl: 自然言語を使用してデータベースを操作できるようにします。これにより、アプリケーション開発者はエンドユーザーの自然言語による質問に対して精度と安全性が高い SQL クエリを生成でき、SQL を使用していないユーザーがデータにアクセスできるようになります。詳細については、自然言語の概要をご覧ください。

AlloyDB AI 機能のユースケースのリストは、生成 AI アプリケーションを構築するをご覧ください。

拡張機能のサポート

AlloyDB では、一般的な PostgreSQL 拡張機能が多数サポートされています。完全なリストについては、サポートされているデータベース拡張機能をご覧ください。

自己ホスト型の代替手段: AlloyDB Omni

Google Cloud内で AlloyDB を実行する代わりに、Google は AlloyDB Omni を提供しています。この簡素化されたダウンロード可能なエディションの AlloyDB を使用すると、強力なデータベース エンジンを、どこでも独自の Linux ベースのコンピューティング環境で実行できます。

詳細については、AlloyDB Omni についてをご覧ください。

次のステップ