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. 與資料庫互動:如要進行互動式工作,請選擇下列任一選項:

後續步驟