PostgreSQL Interface

Spanner 用の PostgreSQL Interface を使用すると、使い慣れた PostgreSQL ツールと構文を使用して、Spanner のフルマネージド、スケーラブル、高可用性のインフラストラクチャを活用できます。このページでは、PostgreSQL Interface の機能と制限事項について説明します。

PostgreSQL Interface の利点

  • ポータビリティ: PostgreSQL Interface を使用すると、オープンソースの PostgreSQL と互換性のあるスキーマ、クエリ、クライアントを使用して、Spanner の幅広い機能にアクセスできます。これにより、Spanner で構築されたアプリケーションを別の PostgreSQL 環境に移動することが容易になります。このポータビリティにより、デプロイの柔軟性が向上し、強制退出などの障害復旧シナリオがサポートされます。
  • 使いやすさ: PostgreSQL をすでに使用している場合は、多くの同じ PostgreSQL ステートメントとツールを使用して Spanner をすぐに使い始めることができます。データベース ポートフォリオ全体で PostgreSQL を使用すると、特定のプロダクト間の差異が減り、共通のベスト プラクティスが確立されます。
  • 妥協のない Spanner: PostgreSQL Interface は Spanner の既存の基盤上に構築されているため、補完的な GoogleSQL エコシステムで利用可能な機能に妥協することなく、Spanner の既存の可用性、整合性、費用対パフォーマンスのメリットをすべて提供します。

Spanner でサポートされていない PostgreSQL の機能

PostgreSQL Interface は、PostgreSQL と互換性のあるスキーマ、データ型、クエリ、クライアントを介して Spanner の機能を提供します。PostgreSQL のすべての機能をサポートしているわけではありません。既存の PostgreSQL アプリケーションを Spanner に移行する場合、Spanner 用の PostgreSQL Interface を使用している場合でも、サポートされていない PostgreSQL 機能や、クエリの最適化や主キーの設計などの動作の違いに対応するために、ある程度の変更が必要になる可能性があります。ただし、移行が完了すると、ワークロードは Spanner の信頼性と独自のマルチモデル機能を利用できるようになります。

次のリストは、サポートされている PostgreSQL 機能とサポートされていない PostgreSQL 機能の詳細を示しています。

  • サポートされている PostgreSQL 機能: PostgreSQL インターフェースは、PostgreSQL で最もよく使用される機能の多くをサポートしています。これには、スキーマと型システムのコア部分、一般的なクエリの形状、さまざまな関数と演算子、PostgreSQL のシステム カタログの重要な側面が含まれます。アプリケーションは、Spanner のPostgreSQL ワイヤプロトコル実装を介して接続することで、多くの PostgreSQL クライアントを使用できます。
  • PostgreSQL 言語機能の一部はサポートされていません。拡張機能、ユーザー定義データ型、ユーザー定義ストアド プロシージャなどの機能はサポートされていません。完全なリストについては、Spanner の PostgreSQL 言語をご覧ください。PostgreSQL には、オープンソースの PostgreSQL とは動作が異なる機能もあります。詳細については、Spanner の PostgreSQL Interface の既知の問題をご覧ください。
  • Spanner と Spanner コントロール プレーン: PostgreSQL Interface を使用するデータベースは、Spanner と Google Cloud のツールを使用して、インスタンスのプロビジョニング、保護、モニタリング、最適化を行います。Spanner は、管理アクティビティ用の pgAdmin などのツールをサポートしていません。
  • クライアントとワイヤ プロトコルのサポート: Spanner は、アプリケーションと一緒に実行される軽量プロキシである PGAdapter を使用して、PostgreSQL ワイヤ プロトコルのコア クエリ機能をサポートしています。これにより、多くの Spanner クライアントは、Spanner のグローバル エンドポイントと接続管理、IAM 認証を活用しながら、Spanner PostgreSQL Interface データベースをそのまま使用できます。Google の内部ベンチマークによると、PGAdapter を使用した場合、Spanner の組み込みエンドポイントへの直接接続と比較して、顕著なレイテンシの増加はないことがわかっています。

管理

PostgreSQL Interface は、次の機能を使用して Spanner データベースの管理をサポートします。

  • 統合されたエクスペリエンス: Spanner の既存のコンソール、API、Google Cloud CLI などのツールを使用して、PostgreSQL インターフェース対応データベースのプロビジョニング、管理、モニタリングを行います。
  • 柔軟な構成: PostgreSQL インターフェースをデータベースごとに作成時に構成します。1 つの Spanner インスタンスには、GoogleSQL インターフェース データベースと PostgreSQL インターフェース データベースの両方を配置できます。
  • 共有されるメリット: どちらのデータベース言語も、同じ基盤となる分散データベース エンジンを共有しているため、一貫したスケーラビリティ、整合性、パフォーマンス、セキュリティが保証されます。

機能

Spanner の PostgreSQL Interface には、PostgreSQL エコシステムとの統合を可能にする 2 つの主な機能があります。

  • PostgreSQL 言語のサポート

    Spanner は、データクエリ言語(DQL)、データ操作言語(DML)、データ定義言語(DDL)などの PostgreSQL SQL 言語のサブセットを提供します。また、インターリーブされたテーブル有効期間(TTL)クエリヒントなど、Spanner 固有の機能をサポートする拡張機能も含まれています。

    サポートされている PostgreSQL 言語要素の詳細については、Spanner の PostgreSQL 言語をご覧ください。PostgreSQL 言語で Spanner の機能を使用する方法については、特定の機能のドキュメントをご覧ください。

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

    Spanner では、さまざまなクライアントからデータベースに接続できます。

    • PostgreSQL エコシステム ツール: PostgreSQL JDBC ドライバPostgreSQL pgx ドライバなどの使い慣れたツールを使用して、アプリケーションを PostgreSQL インターフェース データベースに接続できます。サポートされているドライバ、ORM、ツールの一覧については、PostgreSQL ドライバと ORM をご覧ください。

    • psql コマンドライン ツール: 一般的な psql インタラクティブ環境がサポートされているため、ターミナルから直接クエリの実行、メタデータの探索、データの読み込みを行うことができます。

    • PGAdapter: この軽量プロキシを使用すると、接続管理と認証を簡素化できます。詳細については、 PGAdapter の概要をご覧ください。

    • Spanner クライアント: Spanner には、さまざまなプログラミング言語(Java、Go、Python、Node.js、Ruby、PHP、C#、C++)用のオープンソースの Spanner クライアントと、Spanner JDBC ドライバGo の SQL パッケージ用のドライバが用意されています。Spanner クライアントは、プロキシを使用せずに Spanner のグローバル エンドポイントに直接接続します。ただし、Spanner クライアントは、既存の PostgreSQL クライアント、ORM、ツールとの互換性はありません。

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

PostgreSQL Interface を使用する場合は、次のベスト プラクティスに従ってください。

  1. アプリケーションを接続する: サポートされている PostgreSQL ツールのセットを使用して、効率的な接続を行います。
  2. データベースを操作する: インタラクティブな作業の場合は、次のいずれかを選択します。

次のステップ