使用受支持的 Spanner 功能开发 Spanner Omni 应用。虽然 Spanner Omni 与 Spanner 共享许多功能,但在客户端库、命令行界面 (CLI) 和控制台功能方面存在差异。
受支持的 Spanner 开发功能包括:
主要区别
虽然 Spanner 开发体验的大部分内容都适用,但 Spanner Omni 在以下方面有所不同:
受支持的客户端库: Spanner Omni 支持 Java、Go 和 Python 客户端库。
命令行界面 (CLI): Spanner Omni CLI 是一种专用工具,与 Google Cloud CLI 不同。虽然它具有类似的语法,但在运行命令时无需提供
--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 文档中 编写连接到 Spanner 的 Hibernate 应用。
GORM
将 Spanner Omni 与 GORM 集成,GORM 是适用于 Go 编程语言的对象关系映射 (ORM) 工具。在 Go 应用中使用 GORM 的对象关系映射功能。如需了解详情,请参阅以下内容:
在 Spanner 文档中 与 GORM (GoogleSQL) 集成。
在 Spanner 文档中 与 GORM (PostgreSQL) 集成。
事务和并发
Spanner Omni 支持以下事务管理功能:
事务概览:了解读写 事务和只读事务。
时间戳边界:控制读取的过时程度。对于 Spanner Omni, 您可以将 版本保留期限 (
version_retention_period) 配置为最多 30 天。在 Spanner 中,您可以将其配置为最多一周。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 功能,但存在以下差异: