Spanner 是一个可靠性高的全代管式数据库系统。虽然 Spanner 已演变为关系型数据库管理系统,但其根源是作为非关系型键值对存储系统而发展起来的,并保留了此类系统的基本特征。因此,您可以使用 将 Spanner 用作非关系型 (NoSQL) 数据库,并从 将其他非关系型数据库复制到 Spanner。本文档可帮助您了解 Spanner 是否适合您的非关系型工作负载。
当传统关系型数据库开始投入使用时, 缺乏相关功能来支持要求高度 可伸缩性、可用性和计算弹性为此,他们牺牲了一些通常对数据管理至关重要的功能,例如事务、一致性和临时查询。Spanner 旨在同时支持高可用性应用的苛刻要求和传统关系数据库提供的功能,以便客户可以充分利用这两组功能。
借助 Spanner,您可以先满足简单的非关系型存储需求,然后根据需要扩缩应用。
Spanner 如何满足 NoSQL 数据库条件
Spanner 符合 NoSQL 工作负载的以下关键条件。
规模和性能
NoSQL 数据库因其可扩缩的读写能力而广受欢迎 水平。有了 Spanner,您无需担心扩缩问题 或性能问题键值对型 Spanner 数据库可以横向扩缩,以支持每秒数亿次读写请求和 PB 级数据。Spanner 的计算容量会随工作负载而扩缩,即使应用扩缩到数个数量级,也能保持一致的低延迟配置。
NoSQL API
传统的关系型数据库通常使用 SQL 进行访问,对于不熟悉关系型数据库的开发者来说,需要学习 SQL 才能使用这些数据库。这些数据库的客户端通常也依赖于持久连接,并且需要部署连接池基础架构才能进行扩缩。相比之下,Spanner API 基于 gRPC/HTTP2 请求和响应模型构建,该模型会自动处理连接故障。Spanner 提供简单易用、与语言原生且高效的 NoSQL 读写 API,无需掌握 SQL 知识。此外,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 使用场景。虽然有些应用一开始只有简单的存储需求,但随着复杂性的增加,它们需要 NoSQL 数据库通常不提供的更多功能,例如事务、一致的次级索引和灵活的查询语言。借助 Spanner,您不受这些限制的约束,可以根据需要扩展应用。
大多数非关系型工作负载都非常适合使用 Spanner。Spanner 不仅提供简单明了的 NoSQL 读写 API,还具有高可用性、高可靠性、低延迟、计算弹性和极高可伸缩性。借助 Spanner,您可以将各种工作负载整合到一个灵活的平台上。