Google Cloud Spanner 究竟是什么?
Google Cloud Spanner 是一种数据库,它结合了传统关系数据库管理系统 (RDBMS) 和 NoSQL 服务的功能。这种组合带来了关系数据库的优势,包括原子性、一致性、隔离性、持久性 (ACID) 事务、关系模式和 SQL 查询。同时,与 NoSQL 类似,它可以横向扩展到数百台服务器以处理事务性工作负载。云平台提供自动伸缩、同步数据复制和节点冗余。
当我们在构建基于云的应用程序时,DBA 和开发者常常必须要在传统数据库(保证事务一致性)和 NoSQL 数据库(提供简洁的数据库水平扩展性和分布式能力)中做出选择。Cloud Spanner则做到了兼顾,在一个完全可控的服务范围内,实现了以上的要求。
其特性为:
- 强一致性的横向扩展RDBMS集群:使用硬件辅助的时间同步来实现数据一致性。
- 支持跨表交易:可以跨越多个表交易--不必局限于一个表(与Apache HBase或Apache Kudu不同)。
- 主键设计驱动的表:所有的表必须有一个声明的主键(PK),它可以由多个表列组成。表的数据按PK顺序存储,这使得PK查询非常有效和快速。像其他基于PK的系统一样,实施时需要谨慎建模,并考虑到目标用例,以达到佳性能。
- 交错表:表之间可以有物理依赖关系。子表的行可以与父表的行搭配在一起。这种方法加快了可以在数据建模阶段定义的关系的查询,例如,客户和他们的发票的搭配。
- 索引:Cloud Spanner支持二级索引。一个索引由索引列和所有PK列组成。当然,一个索引也可以包含其他非索引的列。索引可以与父表交错使用,以加快查询速度。有几个限制适用于索引,比如索引中存储的额外列的大数量。另外,通过索引进行查询可能不像在其他RDBMS中那样直接。
- 服务水平协议(SLA):单区域部署的SLA为99,99%;多区域部署的SLA为99.999%。虽然SLA本身只是一个协议,而不是任何形式的保证,但我相信谷歌的人确实有一些确凿的数据来做出如此强烈的主张。
Cloud Spanner的优势
Google Cloud Spanner的杀手锏是它能够在全球和 "交易 "一致的关系型数据上运行SQL,并且能够在数据中心和地区之间进行水平扩展(或跨越)。其他可横向扩展的数据库确实存在,但它们不容易运行SQL,而SQL是处理巨大数据流的交易和报告系统的支柱。虽然任何向新技术的迁移都需要平台的重新设计,但Spanner的优势在于熟悉SQL和关系数据模型,同时享有系统的互联和可扩展性,可以在全球范围内根据容量需求的变化进行扩大和缩小。例如,随着交易场所的开放和关闭,额外的服务器可以在需要时自动上线或关闭,而这是固定的、成熟的Oracle和SQL服务器系统所无法做到的。这就是 "弹性云 "在实践中的承诺。
Cloud Spanner的优势如下:
- 大大降低了复杂性
- 大大降低了成本
- 显著减少管理费用,提高敏捷性
- 显著提高可用性和可靠性
- 在巨大的数据集上提供分析的能力
Cloud Spanner的应用场景
Cloud Spanner是为了大规模的数据而生的产品,Spanner拥有高可用性、数据分布、巨大的可扩展性,使得它可以处理复杂且大量的数据,比如说游戏数据库。
任何可以交易、出售、赠送或以其他方式从一个玩家转移到另一个玩家的游戏内货币或物品都对大型游戏后端提出了挑战。通常,游戏的流行程度可以超过传统数据库处理单节点数据库中所有内容的能力。根据游戏的类型,数据库可能会遇到处理玩家负载所需的操作数量以及存储数据量的问题。这通常会导致游戏开发人员将他们的数据库分片以提高性能,或者存储不断增长的表。这种类型的解决方案会导致操作复杂性和高维护开销。Cloud Spanner可以简化库存和交易系统,其强大的可扩展性和地理分布同步可以实现全球几十亿用户的服务器后端数据加载和分发问题。
除了游戏外,Cloud Spanner还适合零售行业、金融行业和社交软件等在全球范围内拥有庞大的用户群体的行业,利用Cloud Spanner的大型可扩展性数据库服务,实现数据的扩展,同时保证其高可用性和自动化。
目前已有Uber、SnapChat、Lucille Game等平台使用了Cloud Spanner,Lucille game的创始人表示:“Google Cloud Spanner 有一种关系数据库的感觉,您可以在其中轻松创建表之间的关系并快速提取您需要的信息。同时,它像 Google Cloud Datastore 一样横向扩展,因此我们可以添加大量数据而无需使事情过于复杂。”
来源 https://zhuanlan.zhihu.com/p/425873489
相关文章