Infobright——brighthouse存储引擎的一些分享

公司技术栈很老,目前还在使用列式存储引擎 Infobright ,这么冷门的数据库应该很少有公司使用了,但其实真正使用起来还挺好用的,它其实就是把存储引擎改成 brighthouse 的Mysql,不能delete、insert、update,只能通过 load data 的方式加载数据。

我们使用这个数据库的方式和HBase底层原理很相似,只往里面新增数据,后面跑数根据时间戳来选择最新那条记录。当然HBase的原理会复杂一些。

Mysql 基础架构图
mysql基础架构
Server层:涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等;另外只要涉及到多表运算,也都在server层实现;
存储引擎层:负责数据的存储和提取;

连接器:连接器负责跟客户端建立连接、获取权限、维持和管理连接。
有些时候 MySQL 占用内存涨得特别快, 是因为在执行过程中临时使用的内存(join buffer 表join用到、sort buffer 表排序用到、内存临时表和磁盘临时表在分组、去重等时候用到)是管理在连接对象里面的,需要定期断开才能释放,特别是执行过一个占用内存的大查询后,最好断开连接,之后再重连;所以如果连接长时间累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。

分析器:词法分析:输入的是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么;根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。

brighthouse架构图
BrightHouse基础架构
Data Pack Node:DPN 数据块节点
Data Pack:DP 数据块

DP:
用于存放实际的数据。需要注意的是,它采用的是列存格式,为每一个列产生一个或多个数据文件。每一个Pack装着64K个元素,所有数据按照这样的形式打包存储,每一个数据块进行类型相关的压缩(即根据不同数据类型采用不同的压缩算法),压缩比很高。它上层的压缩器与解压缩器就做了这个事情。

DPN:
与DP一一对应,存放DP 元信息;
元信息包括:DP 中列值的最大值、最小值、SUM 值;非 NULL 的记录数,NULL 的记录数;压缩方式;占用的字节数等。

Knowledge Node:
存放比DPN更高层次的一些智能化的信息,包括有直方图、字符位图、pack-to-pack。
直方图:histogram 直方图
Histogram:用来提高数字类型(比如date,time,decimal)的查询的性能。Histogram是装载数据的时候就产生的。DPN中有mix、max,Histogram中把Min-Max分成1024段,每段占用一个 bit,表示是否含有该段的数据。查询时可以快速判断该列数据是否满足条件。

字符位图:
cmap 字符位图
CMAP:用来提高文本查询的性能,也是装载数据的时候产生的。这是一个字符类型列的映射表,映射表中每个格子占用一个 bit,表示字符在字符串的该位置是否存在。查询时可以快速判断该列数据是否满足条件。

包对包 pack-to-pack
P2P 包对包
注意:这里不是指网贷那个P2P,现在P2P好像被国家禁止了,以后也不会有P2P这种业务,只有C2P,隔着屏幕放高利贷(也或许是被割韭菜)的时代已经过去。

P-2-P:是一种很特殊的元数据,它存储两个表在列上的 JOIN 关系。形式有些类似 CMAP,也是一个二维矩阵。每个格子占用一个 bit,表示表 1 中某列的第 i 个 DP 与表 2 中某列的第 j 个 DP 至少有一个值相等,满足等值 JOIN 条件。可以看出,这种信息是与具体的 JOIN 条件相关的,数量可能很大,它是动态按需生成的,不持久化。

最后是InfoBright——brighthouse存储架构
brighthouse 存储架构
Infobright 会采用链式压缩,也就是对同样的数据块采用多种算法依次压缩,尽可能达到最大的压缩比。也针对数字和字符串采用多种具体的压缩算法。例如:让所有数字减去最小值,获得更小的数字;所有数字除以最大公约数,获得更小的数字;计算数字之间的差值,获得更小的数字等等。最终采用 PPM 以及 Carryless RangeCoder 等具体的编码。

主要参考论文、博客地址:

  1. http://blog.jobbole.com/100349/
  2. http://www.jakubw.pl/com/bib/2010_GrC.pdf
  3. https://mp.weixin.qq.com/s?__biz=MjM5MjIxNDA4NA==&mid=203605230&idx=1&sn=aee71beb96c3be9a523862a1eea9c216&scene=1&from=groupmessage&isappinstalled=0#rd
  4. https://time.geekbang.org/column/article/80477
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值