PostgreSQL Interface

このページでは、Cloud Spanner とそのコンポーネントの PostgreSQL InterfaceL について説明します。PostgreSQL と Google 標準 SQL の選択に関するガイダンスと、PostgreSQL Interface を導入して使用するためのベスト プラクティスについて説明します。

PostgreSQL Interface を使用すると、Cloud Spanner の機能(フルマネージド、無制限のスケーリング、強整合性、高パフォーマンス、最大 99.999% のグローバル可用性)がオープンソースの PostgreSQL エコシステムから利用できるようなります。このインターフェースは、デベロッパーが使いやすく、アプリケーションのポータビリティにも優れています。サポートされている SQL 構文については、PostgreSQL Interface では、PostgreSQL と同じセマンティクスを使用します。つまり、PostgreSQL Interface に対して作成されたアプリケーションは、別の PostgreSQL 環境へ簡単に移植できます。ただし、スケーラビリティや可用性など機能以外の面で Cloud Spanner 特有のメリットはありません。また、PostgreSQL との 100% の互換性が目標でもありません

PostgreSQL Interface には、一般的なクエリ構文、関数、演算子など、オープンソースの PostgreSQL SQL 言語の豊富なサブセットが備わっています。さらに、オープンソース PostgreSQL のデータ型、DDL 構文、情報スキーマビューの中核となる要素もサポートされています。アプリケーションは、ネイティブの Cloud Spanner クライアントやオープン PostgreSQL ワイヤ プロトコルを実装するサイドカー プロキシを使用して、PostgreSQL Interface 対応の Cloud Spanner データベースに接続できます。もともと、ワイヤ プロトコルのサポートは、一般的な PostgreSQL コマンドライン ツール psql との使用を対象としています。

管理者は、Cloud Spanner の既存のコンソール、API、gcloud などのツールを使用して、PostgreSQL Interface 対応データベースのプロビジョニング、管理、モニタリングを行います。PostgreSQL Interface は、データベースごとに、その作成時に構成されます。Cloud Spanner インスタンスには、Cloud Spanner データベースの Google 標準 SQL と PostgreSQL Interface の両方を含めることができます。

PostgreSQL Interface のコンポーネント

PostgreSQL Interface は、2 つの主要な機能(PostgreSQL の SQL 言語のサポートと、PostgreSQL Interface 対応データベースに接続するクライアントのサポート)から構成されています。

PostgreSQL の SQL 言語のサポート

PostgreSQL Interface は、DQL、DML、DDL などの PostgreSQL SQL 言語のサブセットを提供し、インターリーブされたテーブルやクエリ ヒンティングなどの Cloud Spanner 機能をサポートする拡張機能を提供します。Cloud Spanner の PostgreSQL 言語サポートの詳細については、Cloud Spanner の PostgreSQL 言語をご覧ください。

PostgreSQL クライアントのサポート

デベロッパーは、ネイティブのオープンソース Cloud Spanner クライアントを使用して、アプリケーションを PostgreSQL Interface データベースに接続できます。プレビュー リリースでは、最初に Java、JDBC、Go、Python の環境がサポートされます。

また、PostgreSQL Interface は、PGAdapter による PostgreSQL ワイヤ プロトコルのサポートも提供します。PGAdapter は、Google がサポートするオープンソース プロキシで、オープンソース PostgreSQL が使用するワイヤ プロトコルと Cloud Spanner が使用する gRPC ワイヤ プロトコル間の変換を行います。詳細については、PGAdapter についてをご覧ください。

PostgreSQL か Google 標準 SQL かの選択

Cloud Spanner データベースを作成するときに、Google 標準 SQL かオープンソースの PostgreSQL 言語かのいずれかを選択できます。その言語によって、アプリケーションで使用するクエリとデータ型の構文とセマンティクス、およびデータベースに接続する方法が決まります。

特定のアプリケーションやプロジェクトで PostgreSQL と Google 標準 SQL のどちらを使用するかを決めるのは、Cloud Spanner の機能における SQL 言語サポートではなく、ビジネスニーズと目標です。SQL 言語の方言は、Cloud Spanner の機能に関して同じ特性を共有する同等の関係にあります。

  • どちらも同じ分散ストレージとクエリ処理基盤の上に実装されています。そのため、パフォーマンス、スケーラビリティ、整合性、可用性の特性が共通しています。
  • どちらも Cloud Spanner のデータベース機能を、それぞれの標準言語構造のサブセット(1 つは ANSI 2001、もう 1 つはオープンソースの PostgreSQL デファクト スタンダード)を使用して表現し、インターリーブ テーブルやクエリヒントなどの Cloud Spanner の機能をサポートする拡張機能が追加されています。
  • どちらも Cloud Spanner の管理インターフェース(Cloud Console、Google Cloud CLI、DevOps 自動化用の Cloud Spanner クライアント ライブラリ)を使用します。
  • どちらも Cloud Spanner アプリケーション開発インターフェース(Cloud Spanner クライアント ライブラリ、REST、RPC API)を使用します。
  • どちらも Cloud Spanner の INFORMATION_SCHEMA システム スキーマおよび SPANNER_SYS システム スキーマを使用して、データベースのメタデータと統計情報をクエリします。

プレビュー リリースでは、Google 標準 SQL と PostgreSQL Interface 間の完全対応はまだ実現されていません。ただし、長期的には、特定のアプリケーションやプロジェクトに PostgreSQL と Google 標準 SQL のどちらを使用するかを次のように決定する必要があります。

  • 開発チームがオープンソースの PostgreSQL エコシステムに慣れているか、組織で PostgreSQL が標準化されているか、標準化を進めている場合は、PostgreSQL を選択してください。

  • 開発チームが Google 標準 SQL に慣れている場合は、Google 標準 SQL を選択してください。これは、過去に Cloud Spanner に関する経験がある、BigQuery など Google 標準 SQL もサポートしている他の Google Cloud データベースを扱っている、または組織が Google 標準 SQL やその基盤となる ANSI 2011 標準を使用しているか、標準化を進めている場合が該当します。

PostgreSQL Interface の使用に関するベスト プラクティス

PostgreSQL Interface のプレビュー版を効果的に使用するには、次のことをおすすめします。

  • Cloud Console または Google Cloud CLI を使用して、Cloud Spanner インスタンスに PostgreSQL データベースを作成します(同じインスタンスに PostgreSQL データベースと Google 標準 SQL データベースの両方を作成できます)。

  • Cloud Spanner クライアント ライブラリを使用して、データベースにアクセスするアプリケーションを接続します。

  • PGAdapter プロキシ経由で psql コマンドライン ツールを使用して、データベースをインタラクティブに操作します。または、Cloud Console の [DDL を記述] ページと [クエリ] ページを使用できます。

次のステップ