透過 Spanner 適用的 PostgreSQL 介面,您可以使用熟悉的 PostgreSQL 工具和語法,充分運用 Spanner 的全代管、可擴充且高可用性基礎架構。本頁面說明 PostgreSQL 介面的功能和限制。
PostgreSQL 介面的優點
- 可攜性:PostgreSQL 介面可存取各種 Spanner 功能,並使用與開放原始碼 PostgreSQL 相容的結構定義、查詢和用戶端。這可簡化將 Spanner 建構的應用程式遷移至其他 PostgreSQL 環境的程序。這項可攜性提供部署彈性,並支援災難復原情境,例如壓力過大的退出。
- 熟悉度:如果您已使用 PostgreSQL,可以透過許多相同的 PostgreSQL 陳述式和工具,快速開始使用 Spanner。在資料庫組合中使用 PostgreSQL,可減少特定產品間的差異,並採用一套通用的最佳做法。
- 毫不妥協的 Spanner:由於 PostgreSQL 介面是以 Spanner 現有的基礎架構為建構依據,因此提供 Spanner 現有的所有可用性、一致性和成本效益優勢,且不必在互補的 GoogleSQL 生態系統中,對任何可用功能做出妥協。
Spanner 不支援的 PostgreSQL 功能
請務必瞭解,PostgreSQL 介面透過與 PostgreSQL 相容的結構定義、型別、查詢和用戶端,提供 Spanner 的功能。且不支援 PostgreSQL 的所有功能。將現有的 PostgreSQL 應用程式遷移至 Spanner 時,即使使用 Spanner 適用的 PostgreSQL 介面,也可能需要進行一些重工,以因應不支援的 PostgreSQL 功能或行為差異,例如查詢最佳化或主鍵設計。不過,遷移完成後,工作負載就能享有 Spanner 的可靠性,以及獨特的多模態功能。
以下列出支援和不支援的 PostgreSQL 功能,並提供更多資訊:
- 支援的 PostgreSQL 功能:PostgreSQL 介面支援許多常用的 PostgreSQL 功能。包括結構定義和型別系統的核心部分、許多常見的查詢形狀、各種函式和運算子,以及 PostgreSQL 系統目錄的主要方面。應用程式可透過 Spanner 實作的 PostgreSQL 連線通訊協定,使用許多 PostgreSQL 用戶端。
- 不支援部分 PostgreSQL 語言功能:不支援擴充功能、使用者定義的資料類型、使用者定義的預存程序和其他功能。如需完整清單,請參閱「Spanner 中的 PostgreSQL 語言」。此外,PostgreSQL 中也有一些功能的行為與開放原始碼 PostgreSQL 不同。詳情請參閱「Spanner PostgreSQL 介面中的已知問題」。
- Spanner 控制平面:具有 PostgreSQL 介面的資料庫會使用 Spanner 和 Google Cloud工具,佈建、保護、監控及最佳化執行個體。Spanner 不支援 pgAdmin 等工具,因此無法執行管理活動。
- 支援用戶端和連線通訊協定:Spanner 支援 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 語言」。如要瞭解如何搭配 PostgreSQL 方言使用 Spanner 功能,請參閱特定功能的說明文件。
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 介面時,請遵循下列最佳做法:
- 連結應用程式:使用一組支援的 PostgreSQL 工具,有效率地建立連線。
與資料庫互動:如要進行互動式作業,請選擇下列其中一種方式:
- 熟悉的 psql 指令列工具 (使用 PGAdapter Proxy)
- Google Cloud 控制台中的直覺式 Spanner Studio 頁面
- IDE,例如 DBeaver 和 Visual Studio Code、JetBrains 和 IntelliJ
- Spanner 模擬器,可在本機電腦上模擬 Spanner。這在開發和測試程序中相當實用。
後續步驟
- 瞭解如何選擇 PostgreSQL 和 GoogleSQL。
- 按照快速入門指南建立 PostgreSQL 資料庫並與之互動。
- 進一步瞭解 Spanner 的 PostgreSQL 語言支援。
- 瞭解 PGAdapter。
- 瞭解 PGAdapter GitHub 存放區。
- 查看 PostgreSQL 介面的已知問題。