zoukankan      html  css  js  c++  java
  • 第三方引擎应用场景分析--Tokudb,infobright

    TokuDB
    TokuDB的特色:
    • Fractal Tree而不是B-Tree
    • 内部结点不仅有指向父子的指针还有Buffer区,数据写入先写buffer区,FIFO结构,写入只需要顺序添加到Buffer区就可返回,后续满时一次性刷新到下面的子树中,
    插入数据基本上是一个顺序添加的过程。可轻松应对随机IO,减少空间碎片。
    • 出色的压缩性能
    • 块大小默认是4MB
    • 在线DDL
    TokuDB特别适合像 Zabbix 这种高 INSERT,少 UPDATE 的应用场景
    TokuDB的Log
    •log manager来管理log文件,InnoDB的rotate log效果
    •为了并发性能,log在实现上,分: in buffer和out buffer
    •支持group commit
    •只有redo log ,不压缩,顺序写文件

    infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类)。
    infobright优点:
    1、高压缩比率,平均压缩比可达10:1,甚至可以达到40:1,我用infobright把3.1G的数据存成不足300M。
    2、列存储,即使数据量十分巨大,查询速度也很快。用于数据仓库,处理海量数据没一套可不行。
    3、不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识网格节点记录块内
    的统计信息,代替索引,加速搜索。
    4、单一台服务器可以高效地读写30T数据。具有可扩展性,这里是指对于同样的查询,当数据量是10T时,它耗费的时间不应该比
    1T数据量时慢太 多,基本是一个数量级内

    缺点、限制:--企业版支持dml,在线热备
    1.不支持DML
    2.不支持多核
    3.不支持分布式
    loader与unloader是infobright的数据导入导出模块,也即处理SQL语句里LOAD DATA INFILE … 与SELECT … INTO FILE任务
    逻辑层的infobright优化器包在mysql查询优化器的外面,因为它的存储层有一些特殊结构,所以查询优化方式也跟 mysql有很大差异
    存储层最底层是一个个的Data Pack(数据块)。每一个Pack装着某一列的64K个元素,所有数据按照这样的形式打包存储,
    每一个数据块进行类型相关的压缩(即根据不同数据类型采 用不同的压缩算法),压缩比很高。它上层的压缩器与解压缩器就做了这个事情。
    Knowledge Grid(知识网格)中包含两类结点
    • 每个Data Pack Node(数据包节点)对应于一个Data Pack,存储该Data Pack的一些统计信息,如min, max, avg, null个数、
    单元总数count、sum总数等,甚至不同值的量等等;
    • KN(Knowledge Node,知识节点)则存储了一些更高级的统计信息,以及与其它表的连接信息,这里面的信息有些是数据载入时已
    经算好的,有些是随着查询进行而计算的,所以说是具备一定的“智能”的。

    infinidb--列式
    一个实际的例子:
    tar -zxf <srcfile&get;
    cd mysql
    ./configure --prefix=/usr/local/Calpont/mysql
    make
    make install

    cd ../infinidb
    ./configure --prefix=/usr/local/Calpont
    make
    make install
    预安装:
    /usr/local/Calpont/bin/ post-install
    配置:
    /usr/local/Calpont/bin/postConfigure
    设置别名
    . /usr/local/Calpont/bin/calpontAlias
    /etc/init.d/infinidb 脚本来启停infinidb
    create table caltest (col1 int, col2 int) engine=infinidb
    执行cpimport导入数据
    /usr/local/Calpont/bin/cpimport calpont caltest caltest.tbl

    cpimport 导入的速度非常快,应该是绕过MySQL层,直接通过API写入数据,千万行级数据,一般只需要1分钟左右
    语法特性:
    1、不支持的语法:insert into .... select ....
    ERROR 138 (HY000): The syntax is not supported.
    2、不支持的语法:1.05及以前版本不支持子查询
    3、infinidb支持事务日志:
    InfiniDB事务日志记录了DDL/DML语句和bulk load marker,使用syslog实现
    事务日志默认名称是/var/log/Calpont/data/data_mods.log

  • 相关阅读:
    jquery清空下拉框,保留第一个
    [转]js和jquery获取窗体高度
    点击回车 按钮不执行点击事件
    时间戳 Date.parse()和dateObject.getTime()的区别
    uni-app 时间格式问题 new Date(str) IOS系统跟Android系统不兼容
    uni-app 使用 iconfont 图标 自定义图标
    uni-app 使用Vuex+ (强制)登录
    uni-app 保持登录状态 (Vuex)
    package.json和npm install、cnpm install 的問題
    如何将baseUrl项目地址提取放到放到static
  • 原文地址:https://www.cnblogs.com/yhq1314/p/10566441.html
Copyright © 2011-2022 走看看