适用于非关系型工作负载的 Spanner

Spanner 是一个可靠性高的全代管式数据库系统。虽然 Spanner 已经发展为一个关系型数据库管理系统, 它把作为非关系型键值对存储系统,并保留 基本特征。因此,您可以使用 将 Spanner 用作非关系型 (NoSQL) 数据库,并从该数据库迁移 将其他非关系型数据库复制到 Spanner。本文档可帮助您 您了解 Spanner 是否适合 非关系型工作负载

当传统关系型数据库开始投入使用时, 缺乏相关功能来支持要求高度 可伸缩性、可用性和计算弹性为此,他们牺牲了 一些对数据管理通常至关重要的功能,例如事务、 一致性和临时查询Spanner 旨在支持 高可用性应用和功能要求高的特性 存储数据,让客户可以 两组功能的优势。

借助 Spanner,您可以从简单的非关系型入手 存储需求,并根据需要扩缩应用。

Spanner 如何满足 NoSQL 数据库标准

Spanner 满足 NoSQL 的以下关键标准 工作负载

规模和性能

NoSQL 数据库因其可扩缩的读写能力而广受欢迎 水平。有了 Spanner,您无需担心扩缩问题 或性能问题键值对样式的 Spanner 数据库可以横向扩容,以支持数亿次读取或写入操作 每秒请求数和 PB 级数据Spanner 的计算资源 容量随工作负载变化而变化,从而保持一致的低延迟配置文件 即使应用能够扩缩几个数量级也无妨。

NoSQL API

传统的关系型数据库通常使用 SQL 进行访问, 为不熟悉关系型数据库的开发者提供了学习曲线。 这些数据库的客户端通常也依赖于持久性连接,并且 需要部署连接池基础架构以进行扩缩。在 相比之下,Spanner API 则是基于 gRPC/HTTP2 请求构建的 以及自动处理连接故障的响应模型。 Spanner 提供简洁、语言原生且高效 不需要 SQL 知识的 NoSQL 读写 API。此外, Spanner 客户端不需要任何连接池即可 。

全代管式

NoSQL 数据库的一个巨大优势是,他们被认为 管理。作为一项全代管式服务,Spanner 不会在 运维负担。Spanner 实现零停机 同时在后台进行软件和硬件更新 兼容性。Spanner API 和语义与 这些操作都是在单个机器数据库上执行的, 需要了解 Spanner 内部架构。 Spanner 可在一个节点的 1/10 到十个节点的部署上运行 支持自动伸缩、响应式伸缩, 代管式自动扩缩器

半结构化数据

Spanner 支持 JSON 和 BYTES 等灵活数据类型, 用于存储半结构化或非结构化数据。与其他 NoSQL 数据库一样, 您可以使用这些数据类型来避免指定所有存储架构 。

访问权限控制

与其他 NoSQL 数据库一样,Spanner 支持基于 IAM 的访问权限 控制。管理员可以配置和管理访问权限 无需在数据库中存储用户名和密码即可控制政策。

Spanner 与传统 NoSQL 数据库的区别

与传统 NoSQL 相比,Spanner 具有以下优势 数据库。

交易

随着应用变得越来越复杂,它们通常需要执行多行和多表 数据库的事务性操作借助 Spanner, 您需要迁移到事务型数据存储区,因为 Spanner 全面支持读写事务。如 符合 ACID 标准的数据库,Spanner 将事务性 始终保持数据库的一致性

数据建模

NoSQL 数据库中的架构设计可能不自然, 将数据整合到一个表中,以及由于无法 执行联接操作。借助 Spanner,您无需 依靠单个表或反规范化。为了优化 触摸多个表格,您可以使用表格交错。 您还可以跨表执行联接。

临时查询

即使您主要使用 NoSQL API,临时运行临时任务 用于调试或分析目的的查询。Spanner 遵循 SQL 标准查询语言。您可以使用请求优先级 将低优先级的临时流量与在线流量区分开来,或使用 Spanner 数据提升 对完全独立于在线资源的计算资源运行分析查询 数据库流量

高度一致的二级索引

应用通常需要二级索引来支持低延迟查询。 典型的 NoSQL 数据库提供最终一致的二级索引或 对索引可以增大的程度施加了限制。这可能会使情况 需要解决这些限制的应用逻辑。 Spanner 提供大规模高度一致的二级索引 没有任何尺寸限制这样,你就可以专注于 而无需操心一致性问题。

Spanner 是否适合您的 NoSQL 数据库需求?

Spanner 是一个灵活的数据存储系统,支持 SQL 和 NoSQL 使用场景。虽然有些应用一开始就使用简单的存储服务, 随着它们变得越来越复杂,他们需要更多通常无法提供的功能 例如事务、一致的二级索引,以及 灵活的查询语言Spanner 让您不受任何限制 并能根据需要扩展您的应用。

大多数非关系型工作负载都非常适合 Spanner。非 Spanner 只是提供简单的 NoSQL 读写 API, 但它还具有高可用性、高可靠性、低延迟 计算弹性和极高的可伸缩性。Spanner 让 将各种工作负载整合到一个灵活的平台上。