brighthouse小结

原创 2013年12月02日 15:51:22
1、面向即时查询的分析级开源数据仓库(An Analytic Data Warehouse for Ad-hoc Queries)
     (1)列存储、自动调谐(column-oriented data warehouse with automatically tuned)
             a1、高压缩比,特别在内容的分析、决策支持查询(in the context of analytic,decision support querying)
             a2、列存储适合分析级数据仓库,对列的小集合的选择访问,强调对数据的压缩(suitable for analytic data warehousing,with selective access to small subsets of columns and emphasis on data compression)
             a3、行存储是OLTP系统的更好选择(a better choice for OLTP system)
             a4、更好的策略:混合列存储和行存储的优点(suggesting mixed horizontal/vertical decomposition)
     (2)知识网格(Konwledge Grid-ultra small overhead metadata),极度小的头元数据-取代了传统索引(an alternative to classical indexes)
              b1、查询的优化和执行,减少对数据的读和解压缩的需求(query optimization and execution,by minizing the need of data reads and data decompression)
              b2、自动创建和高层次的数据的数据的使用(an idea of automatic creation and usage of higher-level data about data)
              b3、知识网格的元素是知识结点(Knowledge Nodes),用来描述单个数据或行的相对大的部分(describle relatively large (conbinations of)portions of single data items or rows),即数据块(Data Packs),而不再是单个数据或行
              b4、知识结点比标准的索引更小,以至能够更快的基于内存处理,更体现在较多类型的存储能力上(far smaller than standard indexes,which results in their faster,in-memory processing,as well as in the ability of storing more of their types),适合即时的带不可预测方法的查询的处理的增长需求(fits well with a growing need of dealing with ad-hoc,unpredictable ways of querying),帮助减少物理模型重新调整(helps to eliminate physical model retuning)



      (3)数据块(Data Packs)
       
     (4)Optimizer:获取数据请求;在KG里迭代执行SQL计划;规避掉不需要的DP;仅解压缩不确定的DP;
2、infobright-基于brighthouse引擎的开源数据仓库实现
        Infobright采用了和MySQL一致的构架,分为两层。上层是服务及应用管理,下层是存储引擎。Infobright的默认存储引擎是brighthouse,但是Infobright还可以支持其他的存储引擎,比如MyISAMMRG_MyISAMMemoryCSV
       Infobright通过三层来组织数据,分别是DP(Data Pack)DPNData Pack Node)、KNKnowledge Node)。而在这三层之上就是无比强大的知识网络(Knowledge Grid)。
         

        数据块(DP)是存储的最低层,列中每64K个单元组成一个DPDP比列更小,具有更好的压缩比率;又比单个数据单元更大,具有更好的查询性能。

  数据块节点(DPN),DPNDP之间是一对一的关系。DPN记录着每一个DP里面存储和压缩的一些统计数据,包括最大值、最小值、null的个数、单元总数countsum等等。

  KN里面存储着指向DP之间或者列之间关系的一些元数据集合,比如值发生的范围(MIn_Max)、列数据之间的关联。大部分的KN数据是装载数据的时候产生的,另外一些事是查询的时候产生。

  在这三层之上是知识网络(Knowledge Grid),Knowledge Grid构架是Infobright高性能的重要原因。
 
      Knowledge Grid可分为四部分,DPN、Histogram、CMAP、P-2-P。
      Histogram用来提高数字类型(比如date,time,decimal)的查询的性能。
      DPN中有mix、max,Histogram中把Min-Max分成1024段,如果Mix_Max范围小于1024的话,每一段就是就是一个单独的值。这个时候KN就是一个数值是否在当前段的二进制表示。
      Histogram的作用就是快速判断当前DP是否满足查询条件。比如select id from customerInfo where id>50 and id<70。那么很容易就可以得到当前DP不满足条件。所以Histogram对于那种数字限定的查询能够很有效地减少查询DP的数量。
      CMAP是针对于文本类型的查询,CMAP是统计当前DP内,ASCII在1-64位置出现的情况。
   
       比如上面的图说明了A在文本的第二个、第三个、第四个位置从来没有出现过。0表示没有出现,1表示出现过。查询中文本的比较归根究底还是按照字节进行比较,所以根据CMAP能够很好地提高文本查询的性能。
      Pack-To-Pack是Join操作的时候产生的,它是表示join的两个DP中操作的两个列之间关系的位图,也就是二进制表示的矩阵。
3、Infobright高压缩比分析
     Infobright号称数据压缩比率是10:140:1Infobright压缩是根据DP里面的数据类型,系统自动选择压缩算法,并且自适应地调节算法的参数以达到最优的压缩比。
     通常情况下 KN数据大小占数据总大小的 1%左右;
4、Infobright工作原理
      Rough SetsInfobright的核心技术之一,Infobright在执行查询的时候会根据Knowledge GridDP分成三类:Relevant Packs、Irrelevant Packs、Suspect Packs
     
    每一列总共有5DP,其中限制条件是A>6。所以A1A2A4就是Irrelevant PacksA3Relevant PacksA5Suspect Packs。那么执行查询的时候只需要计算B5中满足条件的记录的和然后加上SumB3),SumB3)是已知的。此时只需要解压缩B5这个DP。从上面的分析可以知道,Infobright能够很高效地执行一些查询,而且执行的时候where语句的区分度越高越好。where区分度高可以更精确地确认是否是Relevant Packs或者是Irrelevant Packs亦或是Suspect Packs,尽可能减少DP的数量、减少解压缩带来的性能损耗。在做条件判断的使用,一般会用到HistogramCMAP,它们能够有效地提高查询性能。
    多表连接的的时候原理也是相似的。先是利用 Pack-To-Pack产生join 的那两列的DP之间的关系。
  比如:SELECT MAX(X.D) FROM T JOIN X ON T.B = X.C WHERE T.A > 6Pack-To-Pack产生T.BX.CDP之间的关系矩阵M。假T.B的第一个DPX.C的第一个DP之间有元素交叉,那么M[1,1]=1,否则M[1,1]=0。这样就有效地减少了join操作时DP的数量。
    
    每个DP中的64K个元素被当成是一个序列,其中所有的null的位置都会被单独存储,然后其余的non-null的数据会被压缩。数据的压缩跟数据的类型有关,infobright会根据数据的类型选择压缩算法。infobright会自适应地调节算法的参数以达到最优的压缩比;
5、Infobright查询优化
    
     (1)配置环境:根据README里的要求,配置brighthouse.ini文件;
  (2)选取高效的数据类型
  (3)使用comment lookup:可以减少存储空间,提高压缩率,对charvarchar字段采用它可以提高查询效率。实现机制很像位图索引,实现上利用简短的数值类型替代char字段已取得更好的查询性能和压缩比率。使用时除了对数据类型有要求,对数据也有一定的要求。一般要求数据类别的总数小于10000并且当前列的单元数量/类别数量大于10比较适合年龄,性别,省份这一类型的字段。
  (4)尽量有序地导入数据:每一列分成nDP,每个DPN 列面存储着DP的一些统计信息。有序地导入数据能够使不同的DPDPN 内的数据差异化更明显。比如按时间date顺序导入数据,那么前一个DPmaxdate<=下一个DP min(date),查询的时候就能够减少可疑DP,提高查询性能。
  (5)使用高效的查询语句:尽量不适用or,可以采用in或者union取而代之;减少IO操作,原因是infobright里面数据是压缩的,解压缩的过程要消耗很多的时间;查询的时候尽量条件选择差异化更明显的语句;Select中尽量使用where中出现的字段。原因是Infobright按照列处理的,每一列都是单独处理的。限制在结果中的表的数量,也就是限制select中出现表的数量;尽量使用独立的子查询和join操作代替非独立的子查询;尽量不在where里面使用MySQL函数和类型转换符;尽量避免会使用MySQL优化器的查询操作;使用跨越Infobright表和MySQL表的查询操作;尽量不在 group by里或者子查询里面使用数学操作,如suma*bselect里面尽量剔除不要的字段;Infobright 执行查询语句的时候,大部分的时间都是花在优化阶段;编写查询语句的时候很多的细节问题还是需要程序员注意;
6、可能的研究点
    (1)New Objectives、New Schemas、New Volumes、New Queries、New KNs;
    (2)New Data Types、SQL Extensions、Feature Extraction、Data Compression
    (3)Count Distinct、Count(*)on Self-Joins、Decision Trees、Contingencies
    (4)Technology based on interaction between rough and precise operations, open for adding new structures
    (5)Full product, simple framework, ad-hoc analytics, good load speed, 10:1"all inclusive"compression
    (6)The core technology based on more data mining, rough sets, computing with rough values, et cetera
    (7)Infobright Community Edition (ICE) ready for a free usage and study, as well as open for contributions
    

BrightHouse存储引擎

mysql支持多种存储引擎存储。这样,在处理不同类型数据的时候,可以针对不同业务场景,提供更为高效,灵活的方式。mysql常见的存储引擎包括:MyISAM,InnoDB(最为常用的两种),MERGE、...
  • bitcarmanlee
  • bitcarmanlee
  • 2016年04月28日 18:40
  • 1158

测试环境MySQL的MyISAM行式数据库引擎和InfoBright的brightHouse列式数据库引擎

本机系统: 普通台式机,2CPU,2G内存,硬盘5400转,Linux Ubuntu 12.04 32位 InfoBright按最小默认配置my-ib.cnf [mysqld] 27 port = ...
  • u012709237
  • u012709237
  • 2015年03月17日 10:40
  • 472

数据结构课程总结

我想了好多,不知道从何写起,不是不知道写什么,而是想说的太多,不知道从何写起。。那就想到什么就说什么吧。   先说说我对慕课的看法吧,贺老师的翻转课堂不是我第一次接触慕课这个平台(不是智慧树),我第...
  • big_ice
  • big_ice
  • 2016年12月17日 21:38
  • 739

HTML5学习小结

HTML5是用于取代1999年所制定的 HTML4.01和XHTML1.0标准的HTML标准版本。 HTML5的第一份正式草案已于2008年1月公布;2012年12月,规范已经正式定稿。 W3C计...
  • gaojinshan
  • gaojinshan
  • 2014年03月27日 16:10
  • 1973

大二上学期小结

日子过的真的是快,转眼间又快到了放假的时候。这一学期,作为大二,好好体验了一把学长的滋味(不过也是挺难当的,毕竟怎么说也得做好这个榜样),看着以前写过的博客,号称自己皂兄,这一学期过去,我就得给自己改...
  • feizaoSYUACM
  • feizaoSYUACM
  • 2016年12月26日 13:22
  • 284

IE 10浏览器使用心得:界面简洁、功能很强大

IE 10浏览器的功能还是非常强大的,启动速度快,简洁到以展现内容为主导以及更好的兼容性,IE10与IE9一样建立在硬件加速图形工具软件之上,而且IE10将继续支持HTML5和CSS3。为了让Wind...
  • linux_loajie
  • linux_loajie
  • 2013年01月22日 09:35
  • 3169

第一期宣讲会总结

宣讲会的目的:希望把我们团队里面学习到的经验,团队的学习资源给分享出去,帮助每一个大一想要学习的广东海洋大学学子。 宣讲会时间:2014-05-07举办了第一期。 宣讲会主讲人:骆宏,演讲嘉宾:余...
  • u010469003
  • u010469003
  • 2014年05月08日 15:22
  • 1527

【jQuery】jQuery小结

前言    jQuery是个什么啊?是个框架。利用css选择器查找DOM对象,对其操作,操作样式或者增删方法等等。拥有强大的插件机制,可以使我们write less, do more。细数家珍(一)框...
  • boniesunshine
  • boniesunshine
  • 2017年02月02日 22:16
  • 222

Matlab常用小结

下面是最近使用matlab常用的一些方法总结,不断更新,方便以后查阅! 问题1:如果我想把matlab仅仅是当成一个计算器来使用呢?或者说高级点的计算器?不想开UI界面,能在命令行下快速启动。 ...
  • ylf13
  • ylf13
  • 2014年01月15日 20:00
  • 1120

【学习总结】顺序表模拟约瑟夫问题

问题描述: n个人围坐在一起,从第s个人报数,报到数字为m的人出列。然后从出列的下一个人重新从1开始报数,数到m的人出列,依次类推……直到所有人都出列,求出列次序。//说明为了符合实际,数组下标为0...
  • chendongqaq
  • chendongqaq
  • 2017年03月23日 21:44
  • 331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:brighthouse小结
举报原因:
原因补充:

(最多只允许输入30个字)