关闭

brighthouse小结

标签: big data大数据hadoop数据仓库
551人阅读 评论(0) 收藏 举报
分类:
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
    

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17550次
    • 积分:335
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论