本文摘录 - Infobright

背景

论文 Brighthouse: AnAnalytic Data Warehouse for Ad-hoc Queries。VLDB 2008

brighthouse它是一个面向列的数据仓库。在数据存储和压缩柱而言,压缩比达到10:1。其核心Knowledge Grid(知识网格)层,即一个能自己主动调节、所存出具特别小的元数据层,替代了索引的功能,提供了数据过滤、统计信息表达、实际数据位置信息等内容。让brighthouse能够作为一个分析型的数据仓库。,达到ad-hoc查询的速度。

Knowledge Grid层介入的是query优化和运行阶段。降低数据读入量和解压缩开销。

这篇论文中的brighthouse就是商业数据仓库infobright。

介绍

面向列的架构比較适合分析型数据仓库,面向行的架构比較适合OLTP系统。brighthouse是面向列的。

Knowledge Gird是一个data about data的思路,提供一些相似数据的统计信息。来帮助query优化和运行阶段取得想要的数据,这是brighthouse设计最核心的部分。从层次上说。介于query优化、运行层和数据(压缩)存储层之间。并且Knowledge Grid存储的元数据非常小,全然能够存在内存里。

Knowledge Grid由Knowledge Nodes组成,每一个Node上记录了压缩数据的元数据信息,这些实际数据存储在Data Packs里。数据量比較庞大,是按列存的,不做分区(这部分信息由Knowledge Node维护)。且压缩过。

所以Data Packs相当于代表了brighthouse的数据存储模型,而Knowledge Grid相似元数据层。

架构和模块

架构图:

灰色部分是mysql原有的模块。白色与蓝色部分则是 infobright自身的。

跟mysql一样的两层结构。上面的逻辑层处理查询逻辑。以下的是存储引擎。

通过这张图主要说明几个部分,数据导入导出、DataPack、Knowledge Grid、优化和运行。

逻辑层右端的loader与unloader是infobright的数据导入导出模块,是一个独立的服务。

存储层最底层是Data Pack。每一个Pack装着某一列的64K个元素。全部数据依照这种形式打包存储,DataPack依据不同数据类型採用不同的压缩算法,压缩比非常高。

Knowledge Grid里面包括两类结点:

每一个Data Pack Node相应一个Data Pack,存储一些统计信息,如min, max, avg, null的个数。总个数等;

Knowledge Node存储了一些更高级的统计信息,以及与其他表的连接信息。这里面的信息有些是数据加载时已经算好的,有些是随着查询进行而计算的,所以说是带自己主动化的。

Knowledge Grid里面还存了这样几种数据信息。

1.  Histograms(HISTS),为数字型的列创建的柱状图。以二进制的方式存。

2.  Character Maps(CMAPS)。为字母型的列创建的信息,比方String里面各个字母出现的情况。

3.  Pack-to-Packs。这部分是为join型的操作准备的,关联了两张table的某条件下两个column值。

应用方面。

HISTS适合between语句。由于柱状图表达了最大,最小,range内分别的信息。

CMAPS适合LIKE语句。由于是和字母相关的。

Pack-to-Packs适合join操作。为join操作提供适合条件的相应table的Row编号。

以上大致说明了几张数据统计信息表示和适合的场景。

query优化和运行方面,參考了粗糙集的思路来设计,把数据分为相关,不相关,怀疑三种类型,相应正向region,负向region和boundary region。

总结

Infobright作为开源的MySQL数据仓库解决方式,引入了列存储方案。高强度的数据压缩,优化的统计计算等内容,本文是摘抄了infobright论文里最重要的设计点,KnowledgeGird是infobright设计上的核心。

掌声 :)

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-08-06 14:09:39

本文摘录 - Infobright的相关文章

本文摘录 - FlumeJava

本文节选不保证论文的完整性和理解的准确性  原始的MapReduce.分Map,Shuffle,Reduce. Map里包含shards. Shuffle理解为groupByKey的事情.Reduce里包含Combiner,能够定义Sharder来控制key怎么和Reducer worker相应起来. 核心抽象和基本原语 PCollection<T>是一个不可变的bag.能够是有序的(Sequence),也能够是无序的(Collection).PCollection能够来自于内存里的Java

高效CSS开发核心要点摘录

做网站的,我们都知道尽量减少请求数,压缩CSS代码量,使用高效CSS选择符等方式可以来提高网站的载入速度和访问速度,也就是优化网站的性能. 下面分析了一些CSS的书写方式,很多都是我们知道并且正在使用的,这里记录一下,提醒自己以后写CSS的时候尽量从这些方面出发来使用,对于CSS的性能提升有很大的帮助,对于你自己写出来的代码也更加的靠谱了. 本文摘录之“高效CSS开发核心”,一些我认为是已经不需要用规则来约束的就不再啰嗦了,感兴趣的读者可以去看全文. 1.把CSS文件放在<head>中,避免使

Linux vi 的学习笔记

本文摘录自: http://www.linuxsir.org/main/?q=node/206 在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程. vi编辑器有三种工作方式:命令方式.输入方式和ex转义方式.通过相应的命令或操作,在这三种工作方式之间可以进行转换. 命令方式 在Shell提示符后输入命令vi,进入vi编辑器,并处于vi的命令方式.此时,从键盘上输入的任何字符都被作为编辑命令来解释,例如,a(append)表示附加命令,i(insert)表示插入命令,x表示

Ubuntu远程管理(vnc4server设置)

本文摘录.整理了网上为Ubuntu系统安装.配置VNC服务程序的资料. PS:Ubuntu实践版本 Ubuntu 16.04 LTS 更新操作系统软件包 apt-get update apt-get upgrade 安装gnome和vnc4server apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal apt-get install vnc4server 首次启动vncserver

好用助手智能手机必备好用助手这些功能各位怎么看

好用助手是国内首个基于社交分享机制的应用分发平台.好用助手支持苹果和安卓双平台,苹果用户无需越狱即可免费安装海量软件,具备智能语音搜索,查看好友的安装软件等功能,其独创的应用分享大厅,可以随时向他人分享自己手机中的软件,结识新朋友. 无需越狱免费安装 好用助手支持安卓和iOS双平台,iOS平台用户不需要越狱和登陆Apple ID,即可轻松免费下载海量软件和游戏 智能语音搜索 在好用助手搜索应用时,除了直接输入.扫描二维码以外,还可以通过智能语音识别系统,轻松一句,搜你所想 下载曲线走势 在好用助

学习笔记JPA

转自:http://www.cnblogs.com/holbrook/archive/2012/12/30/2839842.html(觉得写的太好了,就贴在这方便自己回顾) JPA定义了Java ORM及实体操作API的标准.本文摘录了JPA的一些关键信息以备查阅. 如果有hibernate的基础,通过本文也可以快速掌握JPA的基本概念及使用. Table of Contents 1 JPA概述 2 实体生命周期 3 实体关系映射(ORM) 3.1 基本映射 3.2 ID生成策略 3.3 关联关

为什么数组角标从0开始

背景 我们知道大部分编程语言中的数组都是从0开始编号的,即array[0]是数组的第一个元素.这个和我们平时生活中从1开始编号的习惯相比显得很反人类.那么究竟是什么样的原因让大部分编程语言数组都遵从了这个神奇的习惯呢?本文最初是受stackoverflow上的一个问题的启发,通过搜集和阅读了一些资料在这里做个总结.当然,本文摘录较多的过程结论,如果你想把这篇文章当做快餐享用的话,可以直接跳到文章末尾看结论. 最早的原因 在回答大部分我们无法解释的诡异问题时,我们最常用的辩词通常是历史原因.那么,

C++多态性的一个典型例子(转)

本文摘录自C++多态性的一个典型例子. 例题:先建立一个Point(点)类,包含数据成员x,y(坐标点).以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高).要求编写程序,重载运算符“<<”和“>>”,使之能用于输出以上类对象. 这个例题难度不大,但程序很长.对于一个比较大的程序,应当分成若干步骤进行.先声明基类,再声明派生类,逐级进行,分步调试. 1. 声明基类Point

UART to Serial Terminal(转载)

前一篇<UART Explained>介绍了UART的基本信息,重点分析了UART的信号.本文摘录的文章则重点介绍了波特率(Baud Rate)相关的内容,波特率越高,传输速度越快,但实际使用时波特率是越高越好吗,多少合适?文中给出了答案,具体如下. Although the PIC32 is an elegant and powerful microcontroller, it doesn't stand so tall when compared against a PC in terms