使用 Spanner Omni 进行开发

使用受支持的 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 表。如需了解详情,请参阅以下内容:

GORM

将 Spanner Omni 与 GORM 集成,GORM 是适用于 Go 编程语言的对象关系映射 (ORM) 工具。在 Go 应用中使用 GORM 的对象关系映射功能。如需了解详情,请参阅以下内容:

事务和并发

Spanner Omni 支持以下事务管理功能:

隔离级别

了解 Spanner Omni 支持的不同隔离级别,以确保数据一致性。

优化

使用以下技术优化事务性能和吞吐量。

锁定

了解如何使用显式锁定来管理对数据的并发访问。

数据访问权限和修改

使用标准 Spanner 方法(包括客户端库、CLI 和 DML)访问和修改数据。

如需了解客户端库如何管理会话,请参阅 会话。虽然底层会话概念适用于 Spanner Omni,但它仅支持 多路复用会话

读取数据

使用各种方法(包括过时数据读取和定向读取)从 Spanner Omni 读取数据。

修改数据

使用 DML、变更或 CLI 修改数据。

数据类型

Spanner Omni 支持以下数据类型来表示应用的数据:

开发和测试

配置开发环境和应用行为,以确保可靠的性能和错误处理。

流式传输数据更改

Spanner 变更数据流会近乎实时地跟踪数据库 更改,例如插入、更新和删除。它们使用 DDL 进行管理,并捕获整个数据库或特定表的详细信息,例如主键和提交时间戳。虽然 Spanner 和 Spanner Omni 之间的功能几乎相同,但 Spanner Omni 不支持 Dataflow。

如需了解详情,请参阅:

使用 Spanner 全文搜索 (FTS) 在表中搜索字词、短语或数字。FTS 会读取最新提交的数据。

FTS 的主要功能包括:

如需使用 FTS,请在要搜索的列上创建搜索索引。 Spanner 会将这些列中的数据分解为单个字词。 添加新数据时,它会立即更新索引。

FTS 搜索提供超出标准文本匹配的高级功能,例如:

Spanner 和 Spanner Omni 之间的 FTS 功能是一致的。

Spanner 中的全文差异

Spanner 支持 Spanner 中的核心 FTS 功能,但存在以下差异:

后续步骤