写点什么

Google 发布 Spanner 论文,宣告重回分布式事务语义

  • 2012-10-17
  • 本文字数:1299 字

    阅读完需:约 4 分钟

上个月,在 Operating System Design and Implementation(OSDI '12)大会上, Google 放出了 Spanner 的详细信息——Spanner 是一个高可伸缩、全球复制的半关系型数据库。上周,Google 又给出了论文合著者 Wilson Hsieh 的一个与 OSDI 2012 上演讲相关的视频,该视频专注于论文里的一些关键概念,InfoQ 的 Alex Popescu 发表了一篇文章,内容是 Berlin Buzzwords 上 Alex Lloyd 提供的更多详细信息。研究证明 ACID 语义不需要牺牲高可伸缩性,推翻了 NoSQL 是高可伸缩性持久化的万灵药的想法。论文中的这句话很好地表明了这一观点:

我们认为,最好是让应用程序开发者在出现瓶颈时处理由事务使用过度引起的性能问题,而非总是在缺少事务的情况下进行编码。

Spanner 项目源于 Google Adwords 系统在持久化方面的需要,该解决方案既要满足关系型与事务性,同时又要在全球范围内可伸缩部署。 MegaStore 仅部分满足这些关注点,因为在跨洲际事务时没有可预计的延时是无法实现其一致性保障的。在 Spanner 中,分布式事务的延时问题是通过 Google 的 TrueTime API 来处理的,这基本上是一个针对时钟不确定性(clock uncertainty)问题的解决方案。

通过大范围网络中的多个参考时间确定时钟时间时,时钟漂移和网络延时会引入时钟不确定性(在论文中用ε符号表示)。参考时间混合了 GPS 时间和原子时钟,通过冗余降低了它们的错误率。通过确定影响时钟不确定性的因素,将其上限控制在一个承诺的等待间隔里(两倍的ε),就能实现外部一致性保证以及其他一些好处,比如无锁读事务、非阻塞读以及原子 Schema 变更。因此,承诺的等待间隔直接和时钟不确定性绑在了一起,不确定性越高,等待间隔就越长,也会拖慢 Spanner。然而,为了降低较长等待间隔(通常是 10ms,但呈现长尾分布)带来的影响,Spanner 在等待时间里执行了 Paxos(一致协议)或两阶段提交的准备阶段。

Spanner 的数据模型与 Megastore 类似,都是半关系型层次化结构模型。Timothy O’Brien 在 O’Reilly 上的博客里对 Spanner 做了一个总结:

一套 Spanner 部署是由一些管理服务器组成的,它们是用来管理跨数据中心的多个“区域”(Zone)的。一台“区域主服务器”(Zone master)和一系列“位置代理”(location proxy)管理了成百上千的“Spanserver”,它们是在 Spanner 数据库中执行批量工作的。Spanserver 中存储的数据单元称为“目录”(directory),每个单元中都实现了一个位于 Tablet 之上的 Paxos 状态机。Spanserver 以 B 树的形式存储数据,使用了一个复合键,再结合上一个时间戳和一个值。

Cloudant Labs 在他们的博客里指出了 Spanner 缺少的两块东西:

显然 Spanner 目前还不支持二级索引的自动处理。而且,它不支持以后能达到一致状态的“离线”访问(像 CouchDB 那样的离线访问)。

NuoDB 为他们的解决方案申请了专利,从他们的专利描述来看,也实现了和Spanner 相同的功能,但Google 宣称Spanner 是第一个全球复制、可伸缩的ACID 数据库。围绕NoSQL vs. NewSQL 之争,Spanner 对您的产品和项目实现会产生何种影响呢?

查看英文原文 Google Publishes Paper On Spanner Ushering a Return to Distributed Transactional Semantics

2012-10-17 09:184979
用户头像

发布了 135 篇内容, 共 61.9 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

6000 字 |Redis 分布式锁|从青铜到钻石的演进方案

悟空聊架构

redis 缓存 分布式锁 redis分布式锁 6月日更

自制文件系统 —— 1 什么文件系统

奇伢云存储

Linux 文件系统 Go 语言

《面试官:谈谈你对索引的认知》之B-树

架构精进之路

MySQL 索引结构 6月日更

Dubbo 服务治理

青年IT男

dubbo

用敏捷扑克做需求评审的3大优势,你get了吗?

LigaAI

高效工作 团队管理 产品思考

一文带你认识队列数据结构

华为云开发者联盟

Java 数据结构 数组 队列

从VMWare安装到Nginx配置

wildpig

nginx vmware Centos 7

dex优化对Arouter查找路径的影响

vivo互联网技术

android mongodb

Serverless over Storage

焱融科技

云计算 容器 云原生 高性能 文件存储

苏州源控电子科技怎么样?名副其实的行业新星

Geek_8a195c

架构之:软件架构漫谈

程序那些事

架构 系统架构 软件设计 程序那些事

在 Python 中解析和修改 XML,你会么?

华为云开发者联盟

Python xml 字符串 Python XML 解析器

智慧光伏能源-园区光伏发电能源管控可视化

一只数据鲸鱼

数据可视化 智慧园区 智慧能源 能源管理 光伏发电

因为一个字符校对问题,我的大厂面试挂了

华为云开发者联盟

MySQL 字符 字符校对 语句 MySQL5.7

工业制造业在数字化时代的三大发展方向

CECBC

HTTP协议

IT视界

网络协议 HTTP 网络通信协议

聊一聊我最近使用的uniCloud是个什么玩意

麦洛

uniapp unicloud

百度爱番番与Servicemesh不得不说的故事

百度Geek说

安迈云首席战略官于晓晖:去中心化云计算构建Web3.0世界

DT极客

净筹6亿美元:微盟正在加速拉开差距

ToB行业头条

SaaS 微盟

react源码解析2.react的设计理念

全栈潇晨

React React Hooks react源码

智慧工厂VR拆解零件——3D虚实现实可视化系统

一只数据鲸鱼

数据可视化 工业互联网 vr 智慧工厂 零件拆解

数字人民币有望为全球贸易结算开辟新视窗

CECBC

NUCLEO-L432KC实现GPIO控制(STM32L432KC)

不脱发的程序猿

嵌入式 stm32 单片机 NUCLEO-L432KC STM32L432KC

【Flutter 专题】116 图解 PhysicalModel & PhysicalShape 裁切小组件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军

华为云开发者联盟

modelarts 工作负载 大赛 severless lstm架构

人生算法:涌现,在自己身上发挥群体智慧

石云升

读书笔记 6月日更

通证经济— 激励机制、社会生产、后资本主义

CECBC

模块五作业

c

架构实战营

实现接口幂等性的四种方案!

李阿柯

面试 编程之路 幂等性

GitHub上收录400余篇任正非的讲话稿

不脱发的程序猿

GitHub 开源 程序人生 任正非讲话

Google发布Spanner论文,宣告重回分布式事务语义_DevOps & 平台工程_Jeevak Kasarkod_InfoQ精选文章