分享好友 站长动态首页 网站导航

Cloud Spanner 完全托管式关系型数据库服务

2022-05-31 15:04 · 头闻号数据库

前沿

2012~2013年Google 相继发表了Spanner和F1两套系统的论文,让业界第一次看到了关系模型和NoSQL的扩展性在一个大规模生产系统上融合的可能性。Spanner 通过使用硬件设备(GPS时钟+原子钟)巧妙地解决时钟同步的问题,而在分布式系统里,时钟正是最让人头痛的问题。Spanner的强大之处在于即使两个数据中心隔得非常远,也能保证通过TrueTime API获取的时间误差在一个很小的范围内(10ms),并且不需要通讯。Spanner的底层仍然基于分布式文件系统,不过论文里也说是可以未来优化的点。

Google的内部的数据库存储业务,大多是3~5副本,重要的数据需要7副本,且这些副本遍布全球各大洲的数据中心,由于普遍使用了Paxos,延迟是可以缩短到一个可以接受的范围(写入延迟100ms以上),另外由Paxos带来的Auto-Failover能力,更是让整个集群即使数据中心瘫痪,业务层都是透明无感知的。F1是构建在Spanner之上,对外提供了SQL接口,F1是一个分布式MPP SQL层,其本身并不存储数据,而是将客户端的SQL翻译成对KV的操作,调用Spanner来完成请求。严格来说,是Spanner和F1一起开创了NewSQL风格。

简介

Cloud Spanner 是一项完全托管式用于关键任务的关系型数据库服务,可提供全球范围的事务一致性、自动同步复制功能以实现高可用性。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的数据中心,上万亿的行。除了夸张的扩展性之外,他还能同时通过同步复制和多版本来满足外部一致性,可用性也是很好的。冲破CAP的枷锁,在三者之间完美平衡。它是BigTable的继任者。谷歌称Spanner不是一个纯粹的关系型系统,因为每个表必须有主键,以及对两种 SQL 方言的支持:Google 标准 SQL(ANSI 2011 及扩展程序)和 PostgreSQL。

优势

特性

场景

Spanner 是一种分布式的、全球可扩展的 SQL 数据库服务,该服务将计算与存储分离,使其可在存储之外单独扩缩处理资源。 Spanner 这种分布式扩缩特性使其成为不可预测的工作负载(如在线游戏)的理想解决方案。

事务

Spanner 系统中的分布式事务通过两阶段提交协议2PC实现。2PC是一类特殊的一致性协议,假设一个分布式事务涉及了多个数据节点,2PC可以保证在这些节点上的操作要么全部提交,要么全部失败,从而保证了整个分布式事务的原子性ACID里的A。协议中包含两个角色:协调者coordinator和参与者participant/cohort。协调者是分布式事务的发起者,而参与者是参与了事务的数据节点。在协议最基本的形式中,系统中有一个协调者和多个参与者。Cloud Spanner 中的事务是一组读写操作,它们跨数据库中的列、行和表,在单个逻辑时间点以原子方式执行。

Cloud Spanner 支持以下事务模式:

模型

一个 Cloud Spanner 数据库可以包含一个或多个表。这些表与关系型数据库表类似,它们也是由行、列和值构成的,并且包含主键。Cloud Spanner 中的数据是强类型的:必须为每个数据库定义一个架构,并且该架构必须指定每个表中每一列的数据类型。允许的数据类型包括标量和数组类型,也可以在表上定义一个或多个二级索引。

父子表

可以通过两种方式在 Cloud Spanner 中定义父子关系,表交错和外键。Cloud Spanner 的表交错是许多父子关系的理想选择,其中子表的主键包含父表的主键列。子行及其父行共用位置可以显著提高性能,外键是一种较通用的父子解决方案,并解决了其他用例。外键不限于主键列,而表可以具有多个外键关系,二者在某些关系中可以作为父键,而在其他关系中可以作为子键。但是,外键关系不隐含表在存储层中的共用位置关系。

主键

每个表都必须有一个主键,并且该主键可以由该表的零列或多列组成,如果将某个表声明为另一个表的子表,则父表的主键列必须是子表主键的前缀,Cloud Spanner 会按主键值得排序顺序存储行,并在父行之间插入共享相同主键前缀的子行,这意味着,如果父表的主键由 N 列组成,则其每个子表的主键也必须由相同的 N 列组成,顺序相同,并且以相同的列开始。这种沿着主键维度在父行之间插入子行的行为称为交错,而子表也称为交错表。

分片

表之间定义最多七层的父子关系层次结构,意味着可以将七个逻辑上独立的表的行存储在一起。如果表中的数据量比较少,那么您的数据库或许可以由单个 Cloud Spanner 服务器处理。然而,当相关表不断增长,开始达到单个服务器的资源限制时。Cloud Spanner 会将数据划分为称作“分片”的区块,各个分片可以彼此独立移动并被分配给不同物理位置的多个服务器。分片包含一系列连续的行。这一范围的开始和结束键称为“分片边界”。Cloud Spanner 会根据大小和/或负载自动添加和移除分片边界,这样做会改变数据库中的分片数量。

复制

Cloud Spanner 复制的优势包括以下几点:

总结

Spanner是第一个可以在全球范围内提供这种保证的系统,符合 ACID 标准的数据库,可自动进行副本、分片和事务处理,因此可以快速扩容以满足任何使用模式的要求,Cloud Spanner 基于 Google 的专用网络构建,在数十亿用户都在使用的 Google 服务中已久经考验。它可实现高达 99.999% 的可用性,在计划内维护和架构变更期间可以做到零停机。IT 管理员和数据库管理员往往忙于执行数据库运维工作。现在,借助 Cloud Spanner,只需点击几下鼠标即可创建或扩缩可在全球范围内复制的数据库,并降低数据库维护费用。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞