Spanner论文理解
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论文理解相关推荐
- A Learned Representation for Artistic Style论文理解
A Learned Representation for Artistic Style论文理解 这篇论文是在Perceptual losses for real-time style transfer ...
- 图卷积网络进行骨骼识别代码_【骨骼行为识别】2s-AGCN论文理解
Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition 论文链接: https:/ ...
- PacificA: Replication in Log-Based Distributed Storage Systems 论文理解
PacificA: Replication in Log-Based Distributed Storage Systems 论文理解 思考:论文有个结论说,相比 GFS 具有中心化的实体,Pacif ...
- Google Spanner 论文笔记
Google Spanner 论文笔记 架构 复制与一致性 TrueTime 事务 数据迁移 Google Spanner是谷歌的全球级分布式数据库(Golbally-Distributed Data ...
- [计算机视觉] AprilTag 2: Efficient and robust fiducial detection(2016)论文理解
论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...
- [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解
论文地址 chrome-extension://cdonnmffkdaoajfknoeeecmchibpmkmg/assets/pdf/web/viewer.html?file=https%3A%2F ...
- 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解
6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解 解决什么问题 本文创新点\贡献 本文IDEA来源 方法 方向向 ...
- 论文理解【RL - Exp Replay】—— 【ReMERN ReMERT】Regret Minimization Exp Replay in Off-Policy RL
标题:Regret Minimization Experience Replay in Off-Policy Reinforcement Learning 文章链接:Regret Minimizati ...
- Transformer(二)--论文理解:transformer 结构详解
转载请注明出处:https://blog.csdn.net/nocml/article/details/110920221 本系列传送门: Transformer(一)–论文翻译:Attention ...
最新文章
- redis桌面管理工具 redis-desktop-manager使用指南(转)
- 第十六届全国大学智能车竞赛华南赛区成绩汇总
- java aab全排列_编译原理习题课答案.ppt
- 操作系统原理之进程调度与死锁(三)
- python连连看小游戏_python递归法实现简易连连看小游戏
- 【报告分享】2020年中国金融科技企业领袖观点洞察报告.pdf(附下载链接)
- tableau货架图制作_举个栗子!Tableau技巧(33):实用漏斗图的三种制作方法
- Prototype使用$()函数
- Unity与安卓开发的一些路径知识
- 关于计算机音乐编创的论文,音乐论文写作
- 使用Web3j(JAVA)开发ETH钱包-1
- Foxmail中的文件夹丢失解决方法
- 计算机实战项目 之 含文档+PPT+源码等]精品基于Uniapp实现的美食餐厅订餐点餐APP
- 从南沙图书馆到故宫博物院,隐藏着怎样的未来世界?
- 数显电接点压力表与指针电接点压力表的区别
- 常微分方程的数值解-欧拉、四阶龙格-库塔法等C语言
- 图像描述的注意力可视化
- ubuntu卸载旧的NVIDIA驱动,安装新驱动,并安装Nvidia-docker2
- java根据ip反查地理位置的实现方法
- VDI云桌面功能目标