使用受支持的 Spanner 功能通过 Spanner Omni 开发应用。虽然 Spanner Omni 与 Spanner 共享许多功能,但在客户端库、命令行界面 (CLI) 和控制台功能方面存在差异。
支持的 Spanner 开发功能包括:
主要区别
虽然大部分 Spanner 开发体验都适用,但以下方面在 Spanner Omni 中有所不同:
支持的客户端库:Spanner Omni 支持 Java、Go 和 Python 客户端库。
命令行界面 (CLI):Spanner Omni CLI 是一种专用工具,与 Google Cloud CLI 不同。虽然它与
--instance具有类似的语法,但在运行命令时,您无需提供--instance标志。控制台限制:Spanner Omni 控制台是只读的,因此您无法使用它来修改部署或数据库。
以下 Spanner 功能和最佳实践适用于 Spanner Omni。
最佳实践和应用场景
请遵循以下最佳实践和使用情形,为 Spanner Omni 设计和优化应用。
将 Spanner 用作游戏数据库:利用 Spanner 的可伸缩性和一致性来构建游戏后端。
SQL 最佳实践:优化查询以提高性能和效率。大多数概念都适用于 Spanner Omni。由于 Spanner Omni 不支持分层存储,因此时间戳谓词下推等概念可能无法完全适用。此外,Spanner Omni 不具备查询计划可视化功能。
语言框架
将 Spanner Omni 与热门语言框架集成:
Hibernate ORM
使用 Hibernate 对象关系映射 (ORM) 将 Java 对象映射到 Spanner Omni 表。详情请参阅以下内容:
Spanner 文档中的与 Hibernate ORM (PostgreSQL) 集成。
Spanner 文档中的编写连接到 Spanner 的 Hibernate 应用。
GORM
将 Spanner Omni 与 GORM 集成,后者是适用于 Go 编程语言的对象关系映射 (ORM) 工具。在 Go 应用中使用 GORM 的对象关系映射功能。详情请参阅以下内容:
Spanner 文档中的与 GORM 集成 (GoogleSQL)。
Spanner 文档中的与 GORM (PostgreSQL) 集成。
事务和并发
Spanner Omni 支持以下事务管理功能:
事务概览:了解读写和只读事务。
时间戳边界:控制读取操作的过时程度。对于 Spanner Omni,您可以将版本保留期限 (
version_retention_period) 配置为最多 30 天。在 Spanner 中,您可以将此时间段配置为最多一周。了解 GoogleSQL 数据库和 PostgreSQL 数据库中的提交时间戳。
TrueTime 和外部一致性:了解 Spanner 如何在整个部署中保持一致性。
隔离级别
了解 Spanner Omni 支持的不同隔离级别,以确保数据一致性。
优化
使用这些技巧可优化事务性能和吞吐量。
锁定
了解如何使用显式锁定来管理对数据的并发访问。
数据访问权限和修改
使用标准 Spanner 方法(包括客户端库、CLI 和 DML)访问和修改数据。
如需了解客户端库如何管理会话,请参阅会话。虽然底层会话概念适用于 Spanner Omni,但它仅支持多路复用会话。
读取数据
使用各种方法(包括过时数据读取和定向读取)从 Spanner Omni 读取数据。
修改数据
使用 DML、变更或 CLI 修改数据。
数据类型
Spanner Omni 支持以下数据类型来表示应用的数据:
在 GoogleSQL 和 PostgreSQL 中使用数组。
开发和测试
配置开发环境和应用行为,以确保可靠的性能和错误处理。
流式输出数据更改
Spanner 变更数据流可近乎实时地跟踪数据库更改,例如插入、更新和删除。使用 DDL 进行管理,可捕获整个数据库或特定表的详细信息,例如主键和提交时间戳。虽然 Spanner 和 Spanner Omni 的功能几乎完全相同,但 Spanner Omni 不支持 Dataflow。
如需了解详情,请参阅:
变更数据流概览:了解变更数据流的作用和工作方式。
创建和管理变更数据流:了解如何使用 DDL 创建、修改和删除变更数据流。
全文搜索
使用 Spanner 全文搜索 (FTS) 在表中搜索字词、短语或数字。FTS 会读取最新提交的数据。
FTS 的主要功能包括:
如需使用 FTS,请在要搜索的列上创建搜索索引。Spanner 会将这些列中的数据分解为单个字词。添加新数据时,它会立即更新索引。
FTS 搜索除了提供标准文本匹配功能外,还提供以下高级功能:
Spanner 和 Spanner Omni 之间的 FTS 功能是一致的。
Spanner 中的全文差异
Spanner 支持 Spanner 中的核心 FTS 功能,但存在以下差异: