PostgreSQL 页面

借助适用于 Spanner 的 PostgreSQL 接口,您可以使用熟悉的 PostgreSQL 工具和语法来利用 Spanner 的全代管式、可伸缩且高度可用的架构。本页面可帮助您了解 PostgreSQL 接口的功能和限制。

PostgreSQL 接口的优势

  • 可移植性:PostgreSQL 页面使用与开源 PostgreSQL 兼容的架构、查询和客户端,提供对 Spanner 众多功能的访问。这简化了将基于 Spanner 构建的应用迁移到其他 PostgreSQL 环境的过程。这种可移植性可提供部署灵活性,并支持灾难恢复场景,例如应力退出。
  • 熟悉:如果您已经在使用 PostgreSQL,则可以使用许多相同的 PostgreSQL 语句和工具快速上手使用 Spanner。在整个数据库产品组合中使用 PostgreSQL 意味着,特定产品与一组通用最佳实践之间的差异会减少。
  • 无折扣的 Spanner:由于它基于 Spanner 的现有基础构建,因此 PostgreSQL 页面可提供 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 和 Spanner 控制平面:具有 PostgreSQL 接口的数据库使用 Spanner 和 Google Cloud工具来预配、保护、监控和优化实例。Spanner 不支持用于执行管理活动的工具,例如 pgAdmin。
  • 客户端和传输协议支持:Spanner 使用 PGAdapter 支持 PostgreSQL 传输协议的核心查询功能。PGAdapter 是一个轻量级代理,可与您的应用一起运行。这样,许多 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:此轻量级代理可简化连接管理和身份验证。如需了解详情,请参阅 PGAdapter 概览

    • Spanner 客户端:Spanner 为各种编程语言(Java、Go、Python、Node.js、Ruby、PHP、C#、C++)提供了开源 Spanner 客户端,以及 Spanner JDBC 驱动程序Go 的 SQL 软件包的驱动程序。Spanner 客户端会直接连接到 Spanner 的全球端点,而无需代理。不过,Spanner 客户端与现有的 PostgreSQL 客户端、ORM 或工具不兼容。

使用 PostgreSQL 页面的最佳做法

使用 PostgreSQL 界面时,请遵循以下最佳实践:

  1. 连接应用:使用一组受支持的 PostgreSQL 工具高效连接。
  2. 与数据库交互:如需执行交互式工作,请在以下选项之间进行选择:

后续步骤