`

Google Spanner

阅读更多

Spanner  技术特点

基于时间戳的多版本并发控制(MVCC)

应用可控的数据多副本跨数据中心存储

TrueTime api   (GPS和原子钟实现的时间API,能将数据中心之间的节点时间同步精确到10ms以内

跨数据中心复制

 

在读写事务中使用wound-wait算法来避免死锁。当客户端发起一个读写事务的时候,首先是读操作,他先找到相关数据的leader replica,然后加上读锁,读取最近的数据。在客户端事务存活的时候会不断的向leader发心跳,防止超时。当客户端完成了所有的读操作,并且缓存 了所有的写操作,就开始了两阶段提交。客户端闲置一个coordinator group,并给每一个leader发送coordinatorid和缓存的写数据。

leader首先会上一个写锁,他要找一个比现有事务晚的时间戳。通过Paxos记录。每一个相关的都要给coordinator发送他自己准备的那个时间戳。

Coordinatorleader一开始也会上个写锁,当大家发送时间戳给他之后,他就选择一个提交时间戳。这个提交的时间戳,必须比刚刚的所有时间戳晚,而且还要比TT.now()+误差时间 还有晚。这个Coordinator将这个信息记录到Paxos

在让replica写入数据生效之前,coordinator还有再等一会。需要等两倍时间误差。这段时间也刚好让Paxos来同步。因为等待之 后,在任意机器上发起的下一个事务的开始时间,都比如不会比这个事务的结束时间早了。然后coordinator将提交时间戳发送给客户端还有其他的 replica。他们记录日志,写入生效,释放锁。

分享到:
评论

相关推荐

    Google Spanner–全球分布式数据库

    ### Google Spanner——全球分布式数据库的关键知识点 #### 一、概览 Google Spanner是一款由谷歌研发的全球分布式数据库系统,旨在提供可扩展性、多版本支持、同步复制能力,并且能够在全球范围内分发数据。它...

    Google Spanner原理:地球上最大的单一数据库.pdf

    Google Spanner是一个由Google开发的全球分布式数据库系统,被誉为地球上最大的单一数据库。Spanner的设计目标是提供极高的可扩展性,同时保持数据的一致性和可用性。它突破了CAP理论的局限,实现了在分布式系统中的...

    2012-Google Spanner (中文版)1

    【Google Spanner】是谷歌公司开发的一个创新的分布式数据库系统,设计目标是可扩展性、全球分布、同步复制以及提供外部一致性。它首次实现了全球范围内的数据分布,并且支持强一致性的分布式事务,这对于需要跨地域...

    Google_Spanner中文版

    Google Spanner是一个由谷歌开发的分布式数据库系统,它旨在提供高度可扩展性、全球分布、同步复制和外部一致性。作为第一个实现全球分布式并支持外部一致性的数据库,Spanner解决了传统数据库在大规模分布式环境下...

    Python库 | django-google-spanner-2.2.1b1.tar.gz

    《Python库django-google-spanner-2.2.1b1:连接Google Spanner的Django扩展》 在Python的世界里,开发人员常常依赖各种库来提高效率和代码质量。"django-google-spanner-2.2.1b1"是这样一个库,它专为Django框架...

    Spanner论文

    Spanner是谷歌设计、构建和部署的一款可扩展、多版本、全球分布式以及同步复制的数据库。它是首个能在全球规模上分布数据并支持外部一致的分布式事务的系统。Spanner通过在世界各地数据中心的多组Paxos状态机之间...

    从Google Spanner漫谈分布式存储与数据库技术.pdf

    #资源达人分享计划#

    分布式数据库-Spanner1

    Google Spanner是一款由Google开发的全球分布式关系型数据库系统,它在设计上兼顾了水平扩展性和强一致性,旨在为大型、复杂、多地区的应用提供服务。作为一款分布式数据库,Spanner解决了传统单体数据库在处理大...

    支持GoogleCloudSpanner的Laravel数据库驱动

    在当今的云计算环境中,Google Cloud Spanner作为一款全球分布式的关系型数据库,提供了强大的水平扩展能力和严格的事务处理能力。它结合了传统SQL数据库的强大功能与NoSQL数据库的高可用性和可扩展性,特别适合需要...

    spanner-osdi2012

    ### Spanner: Google's Globally-Distributed Database #### 概述 Spanner是Google开发的一款可扩展、多版本、全球分布式的数据库系统,并且支持同步复制功能。它首次实现了在全球范围内分布式存储数据的同时,还...

    Spanner, TrueTime & the CAP Theorem

    《Spanner, TrueTime & the CAP Theorem》这篇文章聚焦于Google的分布式数据库系统Spanner、时间同步技术TrueTime以及在分布式系统中广泛讨论的CAP定理。这些是现代大规模分布式计算环境中的核心概念,尤其在Java...

    java-spanner-jdbc

    Google Java版Google Cloud Spanner JDBC客户端适用于Java惯用客户端。快速开始如果您使用的是Maven,请将其添加到pom.xml文件中: < dependency> < groupId>...

    spanner Google’s Globally-Distributed Database

    ### Spanner:Google的全球分布式数据库 #### 概述 Google的Spanner是一款可扩展、多版本、全球分布且同步复制的数据库系统。它是首个能够在全球范围内分发数据并支持外部一致性的分布式事务处理的系统。本文将...

    (5)Spanner- Google’s Globally Distributed Database.pdf

    Spanner: Google’s Globally Distributed Database Spanner 是 Google 开发的全球分布式数据库系统,具有可扩展、多版本、全球分布式和同步复制等特点。它是第一个在全球范围内分布数据并支持外部一致分布式事务的...

    awesome-spanner:精选的Google Cloud Spanner参考资料,工具,库等精选清单

    很棒的扳手 精选的工具,库等精选清单。 如果您知道其他很棒的... yo-一种命令行工具,用于为Google Cloud Spanner生成Go代码。 handy-spanner-非官方SQLite支持的Spanner仿真器。 spannerz-查询计划程序可视化

    go-sql-driver-spanner:适用于Go的Google Cloud Spanner驱动程序

    go-sql-driver-spanner 适用于Go的软件包的驱动程序。 这是一项正在进行的工作,请不要在生产中使用它。 import _ "github.com/rakyll/go-sql-driver-spanner"db , err := sql . Open ( "spanner" , "projects/...

    python-spanner-orm:用Python编写的Spanner ORM

    Google Cloud Spanner ORM 这是用Python编写的轻量级ORM,建立在Cloud Spanner的基础上。 这不是官方支持的Google产品。 入门 如何安装 确保Python 3.7是您环境的默认python版本,然后运行: pip install git+...

Global site tag (gtag.js) - Google Analytics