透過 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 介面時,請遵循下列最佳做法:
- 連結應用程式:使用一組支援的 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 介面中的已知問題。