PostgreSQL 页面

本页面介绍了适用于 Cloud Spanner 及其组件的 PostgreSQL 界面。它提供了有关在 PostgreSQL 和 Google 标准 SQL 之间进行选择的指南,并提供了采用和使用 PostgreSQL 界面的最佳做法。

PostgreSQL 接口让开源的 PostgreSQL 生态系统可以访问 Spanner 的全代管式功能、全代管式、不受限制的规模、强一致性、高性能以及高达 99.999% 的全球可用性。它包含 PostgreSQL SQL 方言的核心子集、支持 psql 命令行工具、母语客户端,以及集成到现有 Google 工具(如 Dataflow)中。与管理实际 PostgreSQL 数据库实例的其他服务不同,Spanner 使用与 PostgreSQL 兼容的语法公开其现有的横向扩容功能。这样可让开发者熟悉并轻松迁移应用,但无法实现 100% 的 PostgreSQL 兼容性。 依赖于 PostgreSQL 功能(如存储过程、触发器、扩展程序或可配置的隔离级别)的现有应用需要在 Spanner 上运行返工。但是,Spanner 支持的 SQL 语法在语义上等效的 PostgreSQL,这意味着针对 PostgreSQL 接口编写的架构和查询可以轻松地移植到其他 PostgreSQL 环境中。

PostgreSQL 接口支持常见的 PostgreSQL SQL 语法,包括查询、函数和运算符。此外,它还支持许多数据类型、DDL 语法和信息架构视图。应用可以使用原生 Spanner 客户端或 PGAdapter(一种实现 Open PostgreSQL 传输协议的轻量级代理)连接到支持 PostgreSQL 接口的 Spanner 数据库。最初,传输协议支持旨在用于 psql 命令行工具。

管理员可使用 Spanner 的现有控制台、API 和工具(如 gcloud CLI)预配、管理和监控启用 PostgreSQL 接口的数据库。PostgreSQL 接口在创建时按数据库进行配置。Spanner 实例可以同时包含 Google 标准 SQL 和 PostgreSQL 接口方言数据库。由于两种数据库方言都具有相同的底层分布式数据库引擎,因此它们具有相同的可伸缩性、一致性、性能和安全性特性。

PostgreSQL 页面的组件

PostgreSQL 接口包含两个主要功能:支持 PostgreSQL SQL 方言,以及支持连接到支持 PostgreSQL 接口的数据库的客户端。

PostgreSQL SQL 方言支持

PostgreSQL 界面提供了部分 PostgreSQL SQL 方言(包括 DQL、DML 和 DDL),以及一些扩展程序以支持 Spanner 的功能,例如交错表和查询提示。如需详细了解 Spanner 的 PostgreSQL 语言支持,请参阅 Cloud Spanner 中的 PostgreSQL 语言

PostgreSQL 客户端支持

开发者可以使用适用于 Java、Go、Python、Node.js、Ruby、PHP、C# 和 C++ 环境的原生开源 Spanner 客户端,将其应用连接到 PostgreSQL 接口数据库。尚不支持非 Spanner PostgreSQL 驱动程序和 ORM。

PostgreSQL 界面还支持 psql 命令行工具 。如需了解详情,请参阅 PGAdapter 简介

在 Google 标准 SQL 和 PostgreSQL 之间选择

创建 Spanner 数据库时,您可以选择 Google 标准 SQL 和 PostgreSQL 方言。方言决定了应用使用的查询和数据类型的语法和语义,以及它们如何连接到数据库。

对于给定的应用或项目,选择使用 Google 标准 SQL 或 PostgreSQL 的决定性因素应该是业务需求和目标,而不是针对 Spanner 功能的 SQL 语言支持。SQL 语言方言是与 Spanner 功能具有相同特征的对等方:

  • 两者基于相同的分布式存储和查询处理基础实现。因此,它们具有相同的性能、可扩缩性、一致性和可用性特征。
  • 两者都通过各自的相应标准语言结构(一种是 ANSI 2001,另一种是开源 PostgreSQL 事实标准)来表示 Spanner 的数据库功能,还添加了扩展来支持 Spanner 的功能,例如交错表和查询提示。
  • 这两者都使用 Spanner 管理界面:Cloud Console、gcloud CLI 和实现 DevOps 自动化的 Spanner 客户端库。
  • 这两者都使用 Spanner 应用开发接口:Spanner 客户端库、REST 和 RPC API。
  • 对于这两者,您可以使用 Spanner INFORMATION_SCHEMASPANNER_SYS 系统架构来查询数据库元数据和统计信息。

当前的 PostgreSQL 接口版本尚未与 Google 标准 SQL 和 PostgreSQL 方言完全等效。但是从长远来看,您应确定是针对给定的应用或项目使用 PostgreSQL 还是 Google 标准 SQL,如下所示:

  • 如果开发团队熟悉开源 PostgreSQL 生态系统,或者您的组织已有或正在标准化使用 PostgreSQL,请选择 PostgreSQL。

  • 选择 Google 标准 SQL:

    • 如果开发团队熟悉 Google 标准 SQL,无论是过去的 Spanner 体验,还是使用也支持 Google 标准 SQL 的其他 Google Cloud 数据库(例如 BigQuery)。
    • 如果您的组织对 Google 标准 SQL 或其底层 ANSI 2011 标准的使用进行了标准化。

如需了解详情,请参阅 Google 标准 SQL 和 PostgreSQL 之间的区分

使用 PostgreSQL 页面的最佳做法

为了有效地使用 PostgreSQL 接口,Google 建议您:

  • 使用 Cloud Console 或 Google Cloud CLI 在 Spanner 实例中创建 PostgreSQL 数据库。(您可以在同一实例中同时创建 PostgreSQL 数据库和 Google 标准 SQL 数据库。)

  • 使用 Spanner 客户端库连接访问数据库的应用。

  • 通过 PGAdapter 代理使用 psql 命令行工具与数据库进行交互。或者,您也可以使用 Cloud Console 中的编写 DDL查询页面。

后续步骤