BigTable、MegaStore、Spanner三个概念并行,有各自不同的应用场景

Spanner数据库最核心的贡献(个人感觉):True Time

细节描述链接:http://nil.csail.mit.edu/6.824/2020/notes/l-spanner.txt

在多个Data Center储存数据:

1、为了avaiability

2、为了快速相应,locality

读写,写写,读读等场景特性和设计要考虑的内容不一致,无论是单机数据库还是分布式数据库,都需要针对不同场景进行不同的考虑

同时会带来下面两个问题

1、因为paxos只要求一半以上的机器有记录,所以可能出现少部分机器信息延迟的问题,导致local无法读取最新的数据(for speed may fail to get latest)

2、执行一个事务可能会牵扯到多个shard,每个shard有多个分片,对应一个paxos group,操作比较麻烦

Read/Write transaction

涉及2-phase commit,2-phase locking

红色虚线标记的是一个shard的replica paxos group

一个框的是paxos group leader

两个框的是paxos group leader + transaction coordinator

执行流程

1、client发送请求给对应的paxos group leader, leader给对应数据加锁,并发送prepare信息给组员,一半以上组员回复ok后可以发送回复(对应paxos规则)给TC

2、TC收集齐回复后发送commit要求给leader,leader再次分发要求,一半以上执行完毕后返回ack

use 2-phase locking来保证serializability

人们不愿意用2-phase locking,因为如果TC崩溃的话会持续持有锁极大程度影响效率

Spanner解决方法:paxos group内部其他机器可以无缝替代leader

上图一大问题:大量信息跨data center远距离传递,传递一次花费ms单位

R/W事务执行起来流程太复杂太慢了,Read Only事务执行起来完全没必要这么麻烦

Read Only Transaction

读的时候不需要加锁,吞吐量增大10倍

依然需要满足:

1、Serializable

2、External Consistency(对应linearizable)

二者区别参考链接:

Spanner - External consistency - 知乎

关于Spanner中的TrueTime和Linearizability - 知乎

如果R O事务什么都不做,直接读最新的数据会发生什么

不管T3怎么排都无法获得serializable的数据(xy不是同一版本互相矛盾)

Spanner使用了类似MVCC的方法

设计时间戳标记每个事务

RW事务对应commit时间,RO事务对应start时间;

RW继续加锁和2-phase commit,RO直接读版本之前的信息

示例:

执行时间不一致,通过时间戳强行serializable

类似MVCC开始的View操作

问题:

Spanner让机器倾向于从local读取数据,如果读取的server不是majority而是少数,即没获得最新的数据怎么办呢?

Spanner引入了新机制,safe time

local进行delay,如果发现最新time stamp是13,则只有获得timestamp大于等于15的时候才会回答15的问题

新问题:各个机器的表不完全同步,不可能完全一致

What If Clock is not Synced?

RW事务没有任何影响,通过2-phase commit机制依然可以顺利执行

RO事务需要进行深入分析

时间戳太大时,需要等待log entry收到当前时间戳信息,正确但是太慢;

时间戳太小时,无法读到最新的内容,也与实际的serializable违背。

解决方法:通过GPS等机制广播通知当前时间

获得实时数据的示例图:

snapshot:快照机制

Spanner论文理解相关推荐

  1. A Learned Representation for Artistic Style论文理解

    A Learned Representation for Artistic Style论文理解 这篇论文是在Perceptual losses for real-time style transfer ...

  2. 图卷积网络进行骨骼识别代码_【骨骼行为识别】2s-AGCN论文理解

    Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition 论文链接: https:/ ...

  3. PacificA: Replication in Log-Based Distributed Storage Systems 论文理解

    PacificA: Replication in Log-Based Distributed Storage Systems 论文理解 思考:论文有个结论说,相比 GFS 具有中心化的实体,Pacif ...

  4. Google Spanner 论文笔记

    Google Spanner 论文笔记 架构 复制与一致性 TrueTime 事务 数据迁移 Google Spanner是谷歌的全球级分布式数据库(Golbally-Distributed Data ...

  5. [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解

    论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...

  6. [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解

    论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...

  7. 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解

    6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解 解决什么问题 本文创新点\贡献 本文IDEA来源 方法 方向向 ...

  8. 论文理解【RL - Exp Replay】—— 【ReMERN ReMERT】Regret Minimization Exp Replay in Off-Policy RL

    标题:Regret Minimization Experience Replay in Off-Policy Reinforcement Learning 文章链接:Regret Minimizati ...

  9. Transformer(二)--论文理解:transformer 结构详解

    转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...

最新文章

  1. redis桌面管理工具 redis-desktop-manager使用指南(转)
  2. 第十六届全国大学智能车竞赛华南赛区成绩汇总
  3. java aab全排列_编译原理习题课答案.ppt
  4. 操作系统原理之进程调度与死锁(三)
  5. python连连看小游戏_python递归法实现简易连连看小游戏
  6. 【报告分享】2020年中国金融科技企业领袖观点洞察报告.pdf(附下载链接)
  7. tableau货架图制作_举个栗子!Tableau技巧(33):实用漏斗图的三种制作方法
  8. Prototype使用$()函数
  9. Unity与安卓开发的一些路径知识
  10. 关于计算机音乐编创的论文,音乐论文写作
  11. 使用Web3j(JAVA)开发ETH钱包-1
  12. Foxmail中的文件夹丢失解决方法
  13. 计算机实战项目 之 含文档+PPT+源码等]精品基于Uniapp实现的美食餐厅订餐点餐APP
  14. 从南沙图书馆到故宫博物院,隐藏着怎样的未来世界?
  15. 数显电接点压力表与指针电接点压力表的区别
  16. 常微分方程的数值解-欧拉、四阶龙格-库塔法等C语言
  17. 图像描述的注意力可视化
  18. ubuntu卸载旧的NVIDIA驱动,安装新驱动,并安装Nvidia-docker2
  19. java根据ip反查地理位置的实现方法
  20. VDI云桌面功能目标

热门文章

  1. python核心编程是一本好书
  2. 车辆网络安全的未来(上):车辆开发中的威胁分析、风险评估和安全设计、漏洞分析
  3. 如何保持旺盛的精力 张锡纯的“元气诠” 关于静坐 修行的方法
  4. FZU - 2243 - Daxia like uber (单源最短路)
  5. 网店seo,网店seo搜索优化
  6. 提问的艺术(中文版)
  7. java migrate_migrate4j:基于java的数据库迁移工具
  8. 南阳nyoj586疯牛 和nyoj619详解总结
  9. Linux 内核console设备实现详解
  10. go语言借用github链接调用本地gitlab库