网易视频云:Infobright初探.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网易视频云:Infobright初探要点

网易视频云:Infobright初探网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网易视频云与大家分享一下Infobright。Infobright是一个有多年历史的开源的adhoc数据仓库软件。它首次发布于2005年,并于2008年开源社区版本。并在2009年成为MySQL合作伙伴,并集成到MySQL中。Infobright虽然集成到MySQL中,默认有一个BrightHouse引擎,但是与InnoDB/MyISAM这类引擎不同在于,Infobright有自己的查询优化层,它仅仅是利用的MySQL原有的一些查询解析以及重写机制。??Infobright最大的特点是列式存储,数据压缩以及基于它独有的知识网格(Knowledge grid)查询优化方式。暂时撇开列存以及压缩不表,本文着重分析知识网格的实现方式,以及它的查询优化器如何进行SQL优化。传统的数据库利用创建索引进行查询优化,无论是MyISAM这样堆表索引或者是InnoDB主键的聚蔟索引,都是建立表中的若干列到整条表纪录的映射关系,目的就是为了已较小的访问代价尽快的定位符合查询条件的数据行,为控制访问代价,最流行的数据库索引是由B树,以及B树的变种来实现。?B树一般使用二分查找的方式从根节点到叶子节点定位纪录。当索引能完全存储在内存中时,索引查询的速度会非常的快。然而当索引需要内外存换入换出时,性能会有明显的下降。不仅是性能,B树索引本身占用的空间也相对较大,常见的索引键构成为索引列加行号或者是索引列加主键,一条索引键对应一条记录,当数据库使用不当,或者是为查询建立过多索引或者索引中含有过多的列时,索引本身的体积会很快成为一个现实的问题。此外,B树索引也不适合unique键值较少的列(效率低),同时也不支持前导模糊查询。所以B树索引最适合的是小数据量的OLTP场景。Infobright为OLAP设计,它没有索引的概念,而是利用知识网格进行数据的筛选,从而达到降低数据访问代价的目的。在说明知识网格之前首先需要说明一些基础的概念:1.DataPack(DP):BrightHouse引擎将数据按照64k行的大小切分成一个个Rough rows,Rough rows根据列由分为一个个DP, DP是BrightHouse底层的数据存储单元,也是基本压缩解压单元。2.DataPackNode(DPN):一个DPN与一个DP对应,存储了一些基本信息,最大值,最小值,平均值、记录值总和, null值的数量以及记录的总数量。3.Knowlege Node (KN):相比DPN更高层次的一些智能化的信息,包括有直方图、字符位图、pack-to-pack。在存储引擎层,DPN和KN组成了知识网格,DP是底层的存储。DP包含65536条数据,而且根据DP内数据分布的不同会采用不同的压缩方式,部分压缩算法的解压代价是较高的,知识网格的作用类似于索引能有效地过滤查询中不符合条件的数据,从而加快查询响应速度。知识网格采用了一种模糊处理的概念,因此以相对较小的代价来定位以DP为最小单位的数据,根据Infobright的白皮书上的说明,知识网格只占据数据总大小的1%以下,因此在绝大多数情况下可以轻松装入内存。而且知识网格是一个“智能”的查询过滤器,能根据线上查询的负载优化自身的内容。接下来我们来看一下知识网格的实现。KN有三种基本的类型:? ?现实中,数据对于上述的三种KN的影响较大,比如HIST中数据的稠密性,并且列内的DP之间的依赖关系没有涉及,根据机器学习或者数据挖掘的理论,尚可引入更多的信息来帮助加速查询。? ? ?DPN、HIST以及CMAP在数据导入的时候伴随着生成,而Pack-to-Pack则是在查询的过程中生成,知识网格数是持久化到外存的,DPN存储于表目录.bht文件中,与数据文件隔离,随着数据加载同时load到内存中。而KN由配置文件指定位置,HIST.xxx.yyy.rsi为直方图文件,CMAP.xxx.yyy.rsi为CMAPs文件,JPP.xxx.yyy.xxx.yyy.rsi为Pack-to-Pack文件,xxx是表的编号,yyy为列号,当查询需要时才load到一个专门的内存KN Pool中。KN这些持久化的数据会随着新的导入/更新/删除操作(后两者为企业版特有功能)做一些append操作,也会随着新的Join查询进行更新。如果要保证知识网格与数据的强同步,会极大程度的降低数据导入/更新的速度,比如针对Pack-to-Pack,新增的数据需要扫描对应

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档