Google Megastore分布式存储技术全揭秘

&">nbsp;

导读:本文根据Google最新Megastore论文翻译而来,原作者为Google团队,团队人员包括:Jason Baker,Chris Bond,James C.Corbett,JJ Furman,Andrey Khorlin,James Larson,Jean-Michel Léon,Yawei Li,Alexander Lloyd,Vadim Yushprakh。翻译者为国内知名IT人士。

在上个月举行的创新数据系统研讨会上(CIDR),Google公开了其Megastore分布式存储技术的白皮书。

Megastore是谷歌一个内部的存储系统,它的底层数据存储依赖Bigtable,也就是基于NoSql实现的,但是和传统的NoSql不同的 是,它实现了类似RDBMS的数据模型(便捷性),同时提供数据的强一致性解决方案(同一个datacenter,基于MVCC的事务实现),并且将数据 进行细颗粒度的分区(这里的分区是指在同一个datacenter,所有datacenter都有相同的分区数据),然后将数据更新在机房间进行同步复制 (这个保证所有datacenter中的数据一致)。

Megastore的数据复制是通过paxos进行同步复制的,也就是如果更新一个数据,所有机房都会进行同步更新,因为使用paxos进行复制, 所以不同机房针对同一条数据的更新复制到所有机房的更新顺序都是一致的,同步复制保证数据的实时可见性,采用paxos算法则保证了所有机房更新的一致 性,所以个人认为megastore的更新可能会比较慢,而所有读都是实时读(对于不同机房是一致的),因为部署有多个机房,并且数据总是最新。

为了达到高可用性,megastore实现了一个同步的,容错的,适合长距离连接的日志同步器

为了达到高可扩展性,megastore将数据分区成一个个小的数据库,每一个数据库都有它们自己的日志,这些日志存储在NoSql中

Megastore将数据分区为一个Entity Groups的集合,这里的Entity Groups相当于一个按id切分的分库,这个Entity Groups里面有多个Entity Group(相当于分库里面的表),而一个Entity Group有多个Entity(相当于表中的记录)

在同一个Entity Group中(相当于单库)的多个Entity的更新事务采用single-phase ACID事务,而跨Entity Group(相当于跨库)的Entity更新事务采用two-phase ACID事务(2段提交),但更多使用Megastore提供的高效异步消息实现。需要说明的一点是,这些事务都是在同一个机房的,机房之间的数据交互都 是通过数据复制来实现的。

传统关系型数据库使用join来满足用户的需求,对于Megastore来说,这种模型(也就是完全依赖join的模型)是不合适的。原因包括

1.高负载交互性型应用能够从可预期的性能提升得到的好处多于使用一种代价高昂的查询语言所带来的好处。

2.Megastore目标应用是读远远多于写的,所以更好的方案是将读操作所需要做的工作转移到写操作上面(比如通过具体值代替外键以消除join)

3.因为megastore底层存储是采用BigTable,而类似BigTable的key-value存储对于存取级联数据是直接的

所以基于以上几个原因,Megastore设计了一种数据模型和模式语言来提供基于物理地点的细颗粒度控制,级联布局,以及申明式的不正规数据存储来帮助消除大部分joins。查询时只要指定特定表和索引即可。

当然可能有时候不得不使用到join,Megastore提供了一种合并连接算法实现,具体算法这里我还是没弄清楚,原文是[the user provides multiple queries that return primary keys for the same table in the same order; we then return the intersection of keys for all the provided queries.]

使用Megastore的应用通过并行查询实现了outer joins。通常先进行一个初始的查询,然后利用这个查询结果进行并行索引查询,这个过程我理解的是,初始查询查出一条数据,就马上根据这个结果进行并行 查询,这个时候初始查询继续取出下一条数据,再根据这个结果并行查询(可能前面那个外键查询还在继续,使用不同的线程)。这种方法在初始查询数据量较小并 且外键查询使用并行方式的情况下,是一种有效的并且具有sql风格的joins。

Megastore的数据结构介于传统的RDBMS和NoSql之间的,前者主要体现在他的schema表示上,而后者体现在具体的数据存储上 (BigTable)。和RDBMS一样,Megastore的数据模型是定义schema中并且是强类型的。每一个schema有一个表集合,每个表包 含一个实体集合(相当于record),每个实体有一系列的属性(相当于列属性),属性是命名的,并且指定类型,这些类型包括字符串,各种数字类型,或者google的protocol buffer。这些属性可以被设置成必需的,可选的,或者可重复的(一个属性上可以具有多个值)。一个或者多个属性可以组成一个主键。

在上图中,User和Photo共享了一个公共属性user_id,IN TABLE User这个标记直接将Photo和User这两张表组织到了同一个BigTable中,并且键的顺序(PRIMARY KEY(user_id,photo_id)?是这个还是schema中定义的顺序?)保证Photo的实体存储在对应的User实体邻接位置上。这个机 制可以递归的应用,加速任意深度的join查询速度。这样,用户能够通过操作键的顺序强行改变数据级联的布局。其他标签请参考原文。

(责任编辑:蒙遗善)

时间: 2024-10-03 00:16:03

Google Megastore分布式存储技术全揭秘的相关文章

打开天窗说“亮话”,手淘这些年的技术大揭秘

中国云计算产业最具影响力的盛会之一--2016杭州云栖大会(https://yunqi.aliyun.com/)将在云栖小镇召开.连续举办七届的云栖大会一直是业界了解阿里云计算生态发展和应用趋势.体验前沿技术和产品的最佳平台,来自海内外的上万名开发者.创业者聚集于此,分享着他们对云计算的思考与实践经验.7年来,从产品发布到行业解决方案展示,从关注技术到技术与服务并重,从单一的客户到生态全景的展现,大会的核心内容一直在"进化",而2016年杭州云栖大会,则以"飞天・进化&quo

云存储:大米盘应用分布式存储技术和规模化硬件架构

云存储的定价与人们对一些工具的定价无异.长期以来,几乎所有的厂商都在重复着同样的口号:"用户只需对他们使用的东西支付费用."公共云存储的价格范围为每月每GB 12%到25%. 不过,云存储真正节约成本的地方可能与是否能够解决企业用户的附带成本问题息息相关,因为他们需要在云中存储属于自己的数据."一些需要对自己的数据进行管理的企业发现他们可以摆脱数据中心的困扰了,于是他们渐渐地开始屈服与云存储."企业战略集团公司一分析师Terri McClure指出:"如果

【高德地图API】汇润做爱地图技术大揭秘

原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以标记做爱地点与详情的地图.这不就是中国版的I just made love麽? 滑到屏幕底下,看了看阅读量,哇塞,居然有4万3!!!说明实在是有很多人关注做爱地图啊.本着研究地图的心情(绝对不是为了什么价值300的智能情趣用品!),我也就点击了[阅读原文]-- 好吧,为了证明我真的不是为了奖品,我会

第三代google排名搜索引擎技术出台

     seo于日前发布了对google第三代搜索引擎与p2p搜索引擎的分析比对.seo分析后认为p2p搜索引擎目前难以撼动传统搜索引擎的优势地位,只能称为未来技术.但seo认为,无论是传统的搜索引擎还是p2p搜索引擎必须是一种智能化的,能够理解世界上所有事务的高新技术.       seo分析称,第二代 google排名搜索引擎虽然比第一代在搜索速度.针对多种语言信息的扩展等方面有所改进,在以自然语言为查询语言方面也做了一些探索.然而,随着Internet的强势发展,网上庞大的数字化信息和人

第三代google排名搜索引擎技术与P2P

第二代 google排名搜索引擎虽然比第一代在搜索速度.针对多种语言信息的扩展等方面有所改进,在以自然语言为查询语言方面也做了一些探索.然而,随着Internet的强势发展,网上庞大的数字化信息和人们获取所需信息能力之间的矛盾日益突出.IDC在2001年下半年公布的一份报告表明,前期被大肆宣传为"使用简便易用,搜索结果丰富"的google排名搜索引擎技术正在被信息更集中的局域网取代,因为大多数搜索系统的表现与用户的期望值相差太大,诸如数据量高速增长的视频.音频等多媒体信息的检索,现在仍

Kubernetes – Google分布式容器技术初体验

Kubernetes – Google分布式容器技术初体验 Kubernetes是Google开源的容器集群管理系统.前几天写的 分布式服务框架的4项特性 中提到一个良好的分布式服务框架需要实现 服务的配置管理.包括服务发现.负载均衡及服务依赖管理. 服务之间的调度及生命周期管理. 由于Kubernetes包含了上述部分特性,加上最近Google新推出的Container Engine也是基于Kubernetes基础上实现,因此最近对Kubernetes进行了一些尝试与体验. 运行环境 Kube

华为分布式存储技术与应用实践

华为分布式存储技术与应用实践 陈坚 --技术趋势 --华为分布式存储技术原理与优势 --华为分布式存储应用实践 华为分布式存储技术与应用实践

Google VR技术大揭秘

VR 虚拟现实(Virtual Reality)技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的.交互式的三维动态视景和实体行为的系统仿真, 使用户沉浸到该环境中. 附:Wikipedia VR产品 Google VROculusHTC Vivi Google VR for Android Google VR SDK同时支持DayDream和CardBoard. 包含了一些用于创建App的简单API和支持DayDream手机.DayDream控

HP 发布全系列支持 Google 云打印技术的无线打印机

去年4月 Google 第一次对外宣布了他们的云打印计划,这一功能不但可以让远程无线打印成为现实,更解决了手持设备打印不方便的老大难问题.截至今日,Chrome 中的云打印已经基本可用,而另外一方面 Google 的合作伙伴 HP 也在今天隆重发布了全系列支持云打印的无线打印机(http://www.hp.com/united-states/campaigns/hp-eprint-google-cloud-print/),用户可以从 Cr-48,移动版 Gmail 和 Google Docs 等