网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。现在,网易视频云的技术专家给大家分享一篇技术性文章:Google Mesa论文笔记。

Mesa是Google用于广告的数据仓库系统, 拥有准实时的数据更新能力, 和低延迟的数据查询性能。 系统高可用性、可靠性、扩展性都非常优秀, 数据规模可达PB级别, 支持每秒数百万行写入。 每天数十亿查询请求 。

Mesa的设计目标:

原子更新。 单个用户操作可能会涉及多项关系数据更新, 影响数据仓库中数千个物化视图, 表和视图必须原子更新, 避免读到不一致的结果。

一致性和正确性。 在多机房部署的情况下, 仍然保证强一致性, 可重复读。

可用性。没有任何单点, 能容忍整个机房故障。

准实时更新。 每秒数百万行更新吞吐率, 分钟级别数据更新延迟。

查询性能。 同时支持低延时的在线报表业务,和高吞吐的批量业务。 99%的点查询(查询一条记录)在100ms内完成, 查询吞吐率可达到每天万亿行。

扩展性。 万亿行数据 , 达到PB存储量。

在线修改表结构。

Mesa的数据模型是数据立方体, 表包含多个维度属性(keys), 和多个度量属性(values)。 表上可定义物化视图, 譬如表C是定义在表B上的物化视图, 其定义查询为SELECT SUM(Clicks), SUM(Cost) GROUP BY AdvertiserId, Country。 物化视图可以提高查询效率, 当然也放大了数据更新量, 因为系统必须维护父表和物化视图的数据一致性 。

多版本机制

更新采用批量方式。 一段时间内(通常是几分钟)的更新操作累积在一起, 批量更新入库。 与关系数据库MVCC机制类似, 一批更新操作产生一个新版本(版本号从0开始连续编号), 查询都是针对一个特定版本的数据快照, 所以更新操作不会影响到查询一致性。

物理存储和索引结构

Mesa底层是一个KV存储结构, 所有维度属性作为key, 度量属性作为Value。 如下图所示, Mesa使用与Leveldb类似的两层delta结构存储KV。 singleton代表一次update操作产生的delta, cumulatives代表多个版本的累计delta, base是所有历史更新积累而成的基础数据。多个singleton定期合并形成cumulatives, cumulatives定期合并到base。 通过这种方式, mesa支持到分钟级(5分钟)的数据更新延迟,且保证了查询性能。

Mesa表和索引采用相同的存储方式, 各自有各自的两层delta结构。 base/cumulative/singleton按照索引key顺序组织成多个数据文件, 存储于Colossus。 每个索引都会存储完整的记录, 所以查询时不存在回表操作。数据文件分为多个大小相近的row blocks, row block内部按照列存来组织并压缩, 以获得较高的压缩比。 提取row block首key的固定长度前缀构成数据文件摘要索引。查找记录时先从摘要索引定位row block, 解压缩row block相关列,进一步在row block中定位记录。

查询

Mesa查询通过查询服务器来实现, 没有实现类似Google兄弟产品powerdrill或者dremel类似的多层树状查询执行模型, 如果查询涉及的数据量较大时,性能会有瓶颈。 Mesa提供的查询能力也比较有限, 只是一些简单的条件过滤和group by, 高层数据库引擎比如MySQL,F1,Dremel可基于mesa的查询能力提供更强大的SQL能力,比如join query。 Mesa通过查询的标签区分在线查询和离线批量查询, 避免这两者相互干扰,能同时满足两种类型查询需求。

Mesa实现了一些基本的查询优化措施: 1) delta pruning。 根据delta的key范围跳过一些不命中的delta。理论上mesa也可以利用row block的统计调过一些不满足的block, 但是文章没有提到这种优化措施。 2) scan-to-seek优化, (A,B)两列索引,如果查询只指定了B上条件, 也尽量利用索引调过不必要的数据访问。( 这种优化常见于MySQL等关系数据库)。

除了基本查询之外, 针对一些离线分析业务, Mesa也支持Map Reduce框架。

总体看来Mesa支持的SQL能力比较有限, 查询的效率比较依赖于索引或者物化视图定义。

异地复制

全局唯一的无状态committer赋予更新唯一版本号, 并提交到异地高可用(paxo协议实现)的Global update storage中。 各数据中心的mesa实例从Global Update storage拉取更新,应用到本地, 等到所有数据中心都应用 成功时候, committer才增加commit version, 此时更新才对查询可见。 committer本身是无状态的, 所以自身高可用不成问题。

总结

Mesa是能同时满足准实时数据更新, 低延迟查询, 且可用性、扩展性都表现不错的数据库仓库系统。 Google内部类似的系统有PowerDrill,Dremel, 虽然有些不同的地方, 但是应用场景上也略有重叠, 很好奇Google内部是如何定位这些系统的。

网易视频云专家分享:Google Mesa论文笔记相关推荐

  1. hbase实战技术分享案例【网易视频云技术分享】

    网易视频云:HBase最佳实践-列族设计优化 http://jingyan.baidu.com/article/642c9d3414e5c8644a46f7f5.html 网易视频云:网易HBase基 ...

  2. linux内核视频 网易,网易视频云技术分享:UML调试Linux内核

    原标题:网易视频云技术分享:UML调试Linux内核 网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点 ...

  3. 网易视频云技术分享:记一次.gitignore的操作细节

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

  4. mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PASS服务.在线教育.远程医疗.娱乐秀场 ...

  5. 网易视频云技术分享:linux软raid的bitmap分析

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

  6. 网易视频云技术分享:HBase - 建表语句解析

    网易视频云的技术专家给大家分享一篇技术性文章:HBase - 建表语句解析. 像所有其他数据库一样,HBase也有表的概念,有表的地方就有建表语句,而且建表语句还很大程度上决定了这张表的存储形式.读写 ...

  7. 网易视频云干货分享:2B产品经理如何养成

    2016年10月23日,由网易云和pmcaff共同举办的易创课堂在北京中关村创业大街成功举行,众多产品大咖齐聚一堂,探讨自己在从业期间踩过的坑与实践经验.其中,网易视频云资深产品经理钱栩磊也参加了本次 ...

  8. 网易视频云一站式托管音视频技术 助推游戏直播新方向

    回顾过去的一年,视频直播俨然成为互联网界最抢眼领域之一.一夜之间,秀场直播类的网易BOBO.六间房,全民直播类的花椒.映客,游戏直播类的斗鱼.虎牙,纷纷破土而出,200多家创业公司正在野蛮生长.视频直 ...

  9. 网易视频云:HBase —— RegionServer宕机案件侦查

    网易视频云:HBase -- RegionServer宕机案件侦查 网易视频云  2016-04-21 11:45  阅读:92 摘要:网易视频云技术分享:HBase RegionServer宕机案件 ...

最新文章

  1. macbook下载苹果版Photoshop cc2019 for mac
  2. FFmpeg转HTML5支持的视频格式
  3. Integer.parseInt() 与 Integer.valueOf() 区别
  4. 05_SpringCloud整合声明式HTTP客户端-Feign
  5. Linux模块加载流程及如何让系统开机自动加载模块
  6. (案例五)将数据保存在MongoDB中
  7. linux mysql2013_linux下MySQL安装
  8. CLR via C# 3 读书笔记(4):第1章 CLR执行模型 — 1.4 执行程序集代码
  9. 找到MySQL服务器发生SWAP罪魁祸首
  10. 为了面试阿里大数据岗位,我花了半年总结了这些干货内容
  11. 常微分方程的解析解(方法归纳)以及基于Python的二阶微分方程边值问题的数值算例实现
  12. 【渝粤题库】国家开放大学2021春1062文学英语赏析题目
  13. 制作双系统U盘启动盘【Ventoy】
  14. 未明学院:“我是女生,能做数据分析吗?”
  15. 机房收费系统——退卡
  16. 链表(提高)-数据结构(二)
  17. 一台计算机地址线32根,若有一台计算机,它的地址线有32根,则它的寻址空间是...
  18. Latex提取与合并pdf文档(超实用)
  19. crmsh配置pacemaker集群时报错 CIB not supported: validator 'pacemaker-2.5'
  20. cmath库里的常用函数

热门文章

  1. scp port 22: Connection refused
  2. FPGA inout类型的使用总结
  3. Apollo自动驾驶进阶课(4)——Apollo无人车定位技术
  4. Python基本操作
  5. 手机投屏电脑软件一键投屏电脑
  6. html5上传mov视频播放,Html5通过数据流方式播放视频的实现
  7. Java 11手册:最聪明的技巧来简化Java 11导航
  8. Android开发之通知栏Notification详解
  9. 使用MAX30205传感器制作Arduino数字体温计
  10. 还在做搬运,拼凑,洗稿的自媒体作者醒醒吧!行业大地震已经来临