PostgreSQL 介面

透過 Spanner 適用的 PostgreSQL 介面,您可以使用熟悉的 PostgreSQL 工具和語法,充分運用 Spanner 的全代管、可調整大小且可用性高的基礎架構。本頁面可協助您瞭解 PostgreSQL 介面的功能和限制。

PostgreSQL 介面的優點

  • 可攜性:PostgreSQL 介面可讓您使用與開放原始碼 PostgreSQL 相容的結構定義、查詢和用戶端,存取各種 Spanner 功能。這可簡化將在 Spanner 上建構的應用程式遷移至其他 PostgreSQL 環境的程序。這種可攜性可提供部署彈性,並支援災難復原情境,例如緊急退出。
  • 熟悉性:如果您已使用 PostgreSQL,可以使用許多相同的 PostgreSQL 陳述式和工具,快速開始使用 Spanner。在資料庫產品組合中使用 PostgreSQL,可減少特定產品之間的差異,並提供一套共同的最佳做法。
  • 不妥協的 Spanner:由於 PostgreSQL 介面是建構在 Spanner 現有基礎上,因此可提供 Spanner 現有的可用性、一致性和價格效益,同時不必犧牲 GoogleSQL 生態系統中提供的任何功能。

Spanner 不支援的 PostgreSQL 功能

請務必瞭解,PostgreSQL 介面會透過與 PostgreSQL 相容的結構定義、類型、查詢和用戶端提供 Spanner 的功能。但不支援 PostgreSQL 的所有功能。即使使用 Spanner 適用的 PostgreSQL 介面,將現有的 PostgreSQL 應用程式遷移至 Spanner 可能仍需要重新調整,以便配合不支援的 PostgreSQL 功能或行為差異,例如查詢最佳化或主鍵設計。不過,一旦遷移完成,工作負載就能享有 Spanner 的可靠性和獨特的多模型功能。

下列清單提供 PostgreSQL 支援和不支援的功能詳細資訊:

  • 支援的 PostgreSQL 功能:PostgreSQL 介面支援 PostgreSQL 的許多常用功能。這包括結構定義和類型系統的核心部分、許多常見的查詢形狀、各種函式和運算子,以及 PostgreSQL 系統目錄的重要部分。應用程式可透過 Spanner 實作 PostgreSQL 線路通訊協定,使用許多 PostgreSQL 用戶端。
  • 不支援某些 PostgreSQL 語言功能:不支援擴充功能、使用者定義的資料類型、使用者定義的預存程序和其他功能。如需完整清單,請參閱「Spanner 中的 PostgreSQL 語言」。PostgreSQL 中也有一些功能的運作方式與開放原始碼 PostgreSQL 不同。詳情請參閱「Spanner PostgreSQL 介面中的已知問題」。
  • Spanner 和 Spanner 控制平面:使用 PostgreSQL 介面的資料庫會使用 Spanner 和 Google Cloud工具來佈建、保護、監控及最佳化執行個體。Spanner 不支援 pgAdmin 等工具,因為後者用於管理活動。
  • 用戶端和通訊協定支援:Spanner 使用 PGAdapter 支援 PostgreSQL 通訊協定的核心查詢功能,PGAdapter 是與應用程式一同執行的輕量 Proxy。這可讓許多 Spanner 用戶端與 Spanner PostgreSQL 介面資料庫原封不動地運作,同時充分利用 Spanner 的全球端點和連線管理功能,以及 IAM 驗證機制。Google 的內部基準測試顯示,與直接連線至 Spanner 內建端點相比,PGAdapter 不會增加任何明顯的額外延遲。

行政與管理

PostgreSQL 介面支援 Spanner 資料庫的管理作業,並提供下列功能:

  • 統一體驗:使用 Spanner 現有的控制台、API 和 Google Cloud CLI 等工具,佈建、管理及監控支援 PostgreSQL 介面的資料庫。
  • 彈性設定:在建立時為每個資料庫設定 PostgreSQL 介面。單一 Spanner 執行個體可同時支援 GoogleSQL 和 PostgreSQL 介面資料庫。
  • 共享的優點:兩種資料庫方言都使用相同的基礎分散式資料庫引擎,可確保一致的擴充性、一致性、效能和安全性。

功能

Spanner 的 PostgreSQL 介面提供兩項主要功能,可與 PostgreSQL 生態系統整合:

  • PostgreSQL 方言支援

    Spanner 提供 PostgreSQL SQL 方言的子集,包括資料查詢語言 (DQL)、資料操縱語言 (DML) 和資料定義語言 (DDL)。此外,它還包含可支援 Spanner 專屬功能的擴充功能,例如交錯表存留時間 (TTL)查詢提示

    如要進一步瞭解支援的 PostgreSQL 語言元素,請參閱「Spanner 中的 PostgreSQL 語言」。如要瞭解如何使用 Spanner 功能搭配 PostgreSQL 方言,請參閱特定功能的說明文件。

  • PostgreSQL 用戶端支援

    Spanner 可讓您透過各種用戶端連線至資料庫:

    • PostgreSQL 生態系統工具:您可以使用 PostgreSQL JDBC 驅動程式PostgreSQL pgx 驅動程式等熟悉的工具,將應用程式連結至 PostgreSQL 介面資料庫。如需支援的驅動程式、ORM 和工具清單,請參閱「PostgreSQL 驅動程式和 ORM」。

    • psql 指令列工具:支援熱門的 psql 互動式環境,可讓您直接從終端機執行查詢、探索中繼資料,以及載入資料。

    • PGAdapter:這項輕量 Proxy 可簡化連線管理和驗證作業。詳情請參閱 PGAdapter 總覽

    • Spanner 用戶端:Spanner 提供多種程式語言 (Java、Go、Python、Node.js、Ruby、PHP、C#、C++) 的開放原始碼 Spanner 用戶端,以及 Spanner JDBC 驅動程式Go 的 SQL 套件驅動程式。Spanner 用戶端可直接連線至 Spanner 的全球端點,不必透過 Proxy。不過,Spanner 用戶端不支援現有的 PostgreSQL 用戶端、ORM 或工具。

使用 PostgreSQL 介面的最佳做法

使用 PostgreSQL 介面時,請遵循下列最佳做法:

  1. 連結應用程式:使用一組支援的 PostgreSQL 工具,以便有效連線。
  2. 與資料庫互動:如要進行互動式工作,請選擇下列任一選項:

後續步驟