暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
spanner中文翻译.pdf
213
19页
3次
2022-11-30
免费下载
本翻译论文源于厦门大学计算机系数据库实验室林子雨老师的云数据库技术资料专区
http://dblab.xmu.edu.cn/cloud_database_view
1 / 19 翻译:厦门大学计算机系教 林子雨 http://www.cs.xmu.edu.cn/linziyu
Google Spanner (中文版)
翻译者:厦门大学计算机系教师 林子雨 翻译时间:2012 9
E-mail: ziyulin@xmu.edu.cn 个人主页:http://www.cs.xmu.edu.cn/linziyu
【摘要】Spanner 是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。
它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。本文描述
Spanner 的架构、特性、不同设计决策的背后机理和一个新的时间 API,这个 API 可以暴
露时钟的不确定性。这个 API 及其实现,对于支持外部一致性和许多强大特性而言,是非常
重要的,这些强大特性包括:非阻塞的读、不采用锁机制的只读事务、原子模式变更。
【关键词】Google Spanner, Bigtable, distributed database
【全文目录结构
1. 介绍
2. 实现
2.1 Spanserver 软件栈
2.2 目录和放置
2.3 数据模型
3. TrueTime
4. 并发控制
4.1 时间戳管理
4.2 细节
5. 实验分析
5.1 微测试基准
5.2 可用性
5.3 TrueTime
5.4 F1
6. 相关工作
7. 未来的工作
8. 总结
致谢
参考文献
1 介绍
Spanner 是一个可扩展的、全球分布式的数据库,是在谷歌公司设计、开发和部署的。
在最高抽象层面Spanner 就是一个数据库把数据分片存储在许 Paxos[21]状态机上,
些机器位于遍布全球的数据中心内。复制技术可以用来服务于全球可用性和地理局部性。
户端会自动在副本之间进行失败恢复着数据的变化和服务器的变化,Spanner 会自动把
数据进行重新分片,从而有效应对负载变化和处理失败。Spanner 被设计成可以扩展到几
万个机器节点,跨越成百上千个数据中心,具备几万亿数据库行的规模
应用可以借助 Spanner 来实现高可用性通过在一个洲的内部和跨越不同的洲之间
制数据,保证即使面对大范围的自然灾害时数据依然可用。我们最初的客户是 F1[35]一个
本翻译论文源于厦门大学计算机系数据库实验室林子雨老师的云数据库技术资料专区
http://dblab.xmu.edu.cn/cloud_database_view
2 / 19 翻译:厦门大学计算机系教 林子雨 http://www.cs.xmu.edu.cn/linziyu
谷歌广告后台的重新编程实现。F1 使用了跨越美国的 5 个副本。绝大多数其他应用很可
会在属于同一个地理范围内的 3-5 个数据中心内放置数据副本,采用相对独立的失败模式。
也就是说,许多应用都会首先选择低延迟,不是高可用性,只要系统能够从 1-2 个数据中
心失败中恢复过来。
Spanner 的主要工作,是管理跨越多个数据中心的数据副本,但是,在我们的分布式
系统体系架构之上设计和实现重要的数据库特方面我们也花费了大量的时间。尽管有许
多项目可以很好地使用 BigTable[9]我们也不断收到来自客户的抱怨客户反映 BigTable
法应用到一些特定类型的应用上面,比如具备复杂可变的模式或者对于在大范围内分布的
多个副本数据具有较高的一致性要求其他研究人员也提出了类似的抱怨[37]谷歌的许多
应用已经选择使 Megastore[5]主要是因为它的半关系数据模型和对同步复制的支持,
Megastore 具备较差的写操作吞吐量。由于上述多个方面的因素,Spanner 已经从一个类
BigTable 的单一版本的键值存储,演化成为一个具有时间属性的多版本的数据库。数据被
存储到模式化的半关系的表中,数据被版本化,每个版本都会自动以提交时间作为时间戳
旧版本的数据会更容易被垃圾回收。应用可以读取旧版本的数据Spanner 支持通用的事务,
提供了基于 SQL 的查询语言。
作为一个全球分布式数据库,Spanner 提供了几个有趣的特性:第一,在数据的副本配
置方面,应用可以在一个很细的粒度上进行动态控制。应用可以详细规定,哪些数据中心包
含哪些数据,数据距离用户有多远(控制用户读取数据的延迟),不同数据副本之间距离有
多远(控制写操作的延迟)以及需要维护多少个副(控制可用性和读操作性能)。 数据也
可以被动态和透明地在数据中心之间进行移动从而平衡不同数据中心内资源的使用第二,
Spanner 有两个重要的特性,很难在一个分布式数据库上实现, Spanner 提供了读和写操
作的外部一致性以及在一个时间戳下面的跨越数据库的全球一致性的读操作。这些特性使
Spanner 可以支持一致的备份致的 MapReduce 执行[12]和原子模式变更,所有都是在
全球范围内实现,即使存在正在处理中的事务也可以。
之所以可以支持这些特性是因 Spanner 可以为事务分配全球范围内有意义的提交
间戳,即使事务可能是分布式的。这些时间戳反映了事务序列化的顺序除此以外,这些序
列化的顺序满足了外部一致性的要求如果一个事 T1 在另一个事务 T2 开始之前就已经提
交了,那么,T1 的时间戳就要比 T2 的时间戳小。Spanner 是第一个可以在全球范围内提供
这种保证的系统
实现这种特性的关键技术就是一个新 TrueTime API 及其实现。这个 API 可以直接暴露
时钟不确定性,Spanner 时间戳的保证就是取决于这个 API 实现的界限。如果这个不确定
很大,Spanner 就降低速度来等待这个大的不确定性结束。谷歌的簇管理器软件提供了一
TrueTime API 的实现。这种实现可以保持较小的不确定性(通常小 10ms), 主要是借助于
现代时钟参考值(比如 GPS 和原子钟)
2 部分描述了 Spanner 实现的结构、特性集和工程方面的决策 3 部分介绍我们的
新的 TrueTime API并且描述了它的实现; 4 部分描述了 Spanner 如何使用 TrueTime 来实
现外部一致性的分布式事务、不用锁机制的只读事务和原子模式更新。 5 部分提供了测试
Spanner 性能和 TrueTime 行为的测试基准,并讨论 F1 的经验。 67 8 部分讨论了相
关工作,并给出总结。
2 实现
本部分内容描述 Spanner 的结构和背后的实现机理然后描述了目录抽象,它被用来
管理副本和局部性,并介绍了数据的转移单位。最后,将讨论我们的数据模型,从而说明
为什么 Spanner 看起来更加像一个关系数据库,而不是一个键值数据库;还会讨论应用如何
of 19
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜