资源描述:
《网易视频云专家分享:GoogleMesa论文笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、网易视频云专家分享:GoogleMesa论文笔记网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。现在,网易视频云的技术专家给大家分享一篇技术性文章:GoogleMesa论文笔记。Mesa是Google用于广告的数据仓库系统,拥有准实时的数据更新能力,和低延迟的数据查询性能。系统高可用性、可靠性、扩展性都非常优秀,数据规模可达PB级别,支持每秒数百万行写入。每天数十亿查询请求。Mesa的设计目标:原子更新。单个用户操作可能会涉及多项关系数据更新,影响数据仓库中数千
2、个物化视图,表和视图必须原子更新,避免读到不一致的结果。一致性和正确性。在多机房部署的情况下,仍然保证强一致性”可重复读。可用性。没有任何单点,能容忍整个机房故障。准实时更新。每秒数百万行更新吞吐率,分钟级别数据更新延迟。查询性能。同时支持低延时的在线报表业务,和高吞吐的批量业务。99%的点查询(查询一条记录)在100ms内完成,查询吞吐率可达到每天万亿行。扩展性。万亿行数据,达到PB存储量。在线修改表结构。Mesa的数据模型是数据立方体,表包含多个维度属性(keys),和多个度量属性(values)o表上可定义物化视图,譬如表C是定义在表B上
3、的物化视图,其定义查询为SELECTSUM(Clicks),SUM(Cost)GROUPBYAdvertiserld,Countryo物化视图可以提高查询效率,当然也放大了数据更新量,因为系统必须维护父表和物化视图的数据一致DatePublisherldCountryClicksCostAdvertiserldCountryClicksCost1US15352UK100502US200100(c)MesatableC2013/12/31100US10322014/01/01100US2051032014/01/01200UK10050(a)Me
4、satableADateAdvertiserldCountryClicksCost2013/12/311US10322014/01/011US532014/01/012UK100502014/01/012US200100(b)MesatableB多版本机制更新采用批量方式。一段时间内(通常是几分钟)的更新操作累积在一起,批量更新入库。与关系数据库MVCC机制类似,一批更新操作产生r新版本(版本号从0开始连续编号),查询都是针对一个特定版本的数据快照,所以更新操作不会影响到查询一致性。物理存储和索引结构Mesa底层是一个KV存储结构,所有维度属性
5、作为keyz度量属性作为Value。如下图所示,Mesa使用与Leveldb类似的两层delta结构存储KVOsingleton代表一次update操作产生的delta,cumulatives代表多个版本的累计delta,base是所有历史更新积累而成的基础数据。多个singleton定期合并形成cumulatives,cumulatives定期合并到base。通过这种方式,mesa支持到分钟级(5分钟)的数据更新延迟,且保证了查询性能。Mesa表和索引采用相同的存储方式,各自有各自的两层delta结构。base/cumulative/sing
6、leton按照索引keylSJW且织成多个数据文件,存储于Colossus。每个索引都会存储完整的记录,所以查询时不存在回表操作。数据文件分为多个大小相近的rowblockszrowblock内部按照列存来组织并压缩,以获得较高的压缩比。提取rowblock首key的固定长度前缀构成数据文件摘要索引。查找记录时先从摘要索引定位rowblock,解压缩rowblock相关列,进一步在rowblock中定位记录。查询Mesa查询通过查询服务器来实现,没有实现类似Google兄弟产品powerdrill或者dremel类似的多层树状查询执行模型,如果
7、查询涉及的数据量较大时,性能会有瓶颈。Mesa提供的查询能力也比较有限,只是一些简单的条件过滤和groupby,高层数据库引擎比如MySQL,Fl,Dremel可基于mesa的查询能力提供更强大的SQL能力比如joinqueryoMesa通过查询的标签区分在线查询和离线批量查询,避免这两者相互干扰,能同时满足两种类型查询需求。Mesa实现了一些基本的查询优化措施:1)deltapruning。根据delta的key范围跳过一些不命中的delta。理论上mesa也可以利用rowblock的统计调过一些不满足的block,但是文章没有提到这种优化措
8、施。2)scan・to・seek优化,(A,B)两列索引,如果查询只指定了B上条件,也尽量利用索引调过不必要的数据访问。(这种优化常见于MySQL等关