InfiniDB在大数据的实战应用

2020-02-27 57浏览

  • 1.Infinidb在大数据的实战应用 赖亿 2015/4/16
  • 2.目录 • 背景 • InfiniDB的特点 • Infinidb的实战
  • 3.问题 一个真实的血案: • 需求:我们在数据库mysql要做基于pv的分析。日均裸数据增量>10g • 初始方案: 使用innodb 问题:数据量增加太快,磁盘空间增加太快(40g) 数据加载太慢了 最最重要统计类查询太慢了,需要建太多的索引/汇总表 • 改进方案:换成tokudb 解决问题:数据压缩4倍,空间增加勉强可以接受(10g) 数据加载快些了4倍左右,勉强可以接受 未解决: 最最重要查询太慢了,一个查询5分钟甚至更长, 优化太痛苦,需要建太多的索引/汇总表
  • 4.问题 一个真实的血案: • 需求:我们在数据库mysql要做基于pv的分析。日均裸数据增量>10g • 初始方案: 使用innodb 问题:数据量增加太快,磁盘空间增加太快(40g) 数据加载太慢了 最最重要统计类查询太慢了,需要建太多的索引/汇总表 • 改进方案:换成tokudb 解决问题:数据压缩4倍,空间增加勉强可以接受(10g) 数据加载快些了4倍左右,勉强可以接受 未解决: 最最重要查询太慢了,一个查询5分钟甚至更长, 优化太痛苦,需要建太多的索引/汇总表
  • 5.解决:--换成infinidb • 最终方案: 使用infinidb(和最初方案innodb比较) – 空间增量2g ( 原来增量40g) – 加载数据 20万/每秒 (原来 <1万/每秒) – 查询一般小于1分钟(原来5分钟,甚至20分钟) – 免优化(再也不要建index了哦) • 业务线的反馈
  • 6.目录 • 背景 • InfiniDB的特点 • Infinidb的实战
  • 7.Infinidb的定位 infinidb Hbase 等 infinidb
  • 8.infinidb产品介绍 产品特点: • Mysql协议兼容 • 全功能,支持dml • 统计类查询10倍 • Load数据快(每秒>10万) • 压缩率5倍(和裸数据比) • 免优化
  • 9.Infinidb的单机构架
  • 10.InfiniDB 分布式框架 集群文件系统(hdfs/gfs) 2013.10.15 支持hdfs –不太建议生产环境用
  • 11.真实业务性能测试—查询性能
  • 12.分析类存储引擎InfiniDB – 查询性能对比测试 TPCH测试(以下以1G数据量,150000行用户数据测试)
  • 13.InfiniDB存储 – 为啥查询这样快 数据存储方面,“拆拆拆”: • 按列拆 • 按行(范围)拆: 核心算法:hash join
  • 14.InfiniDB存储 – 按列拆
  • 15.InfiniDB存储 – 按行(范围)拆 每个范围(术语:Extent Map)都有最大/最小值,方便过滤 Extent Map 的向上扩展更大的范围(术语:Partition)也有最大值/最小值 每个Extent Map 可以并行计算
  • 16.InfiniDB存储 – hash join 核心算法:hash join • 每行都有一个rowid • 查询2列以上:通过行rowid关联,使用hash join • 不太怕表的关联 • 很怕Select *
  • 17.InfiniDB存储 – 为啥查询这样快(总结) 数据存储方面,“拆拆拆”: • 按列拆 • 按行(范围)拆: • 通过核心算法:hash join实现关联
  • 18.装载和更新-真实业务性能测试
  • 19.InfiniDB存储 – 数据装载 语法load data local infile … • 速度超快 (>10万/每秒) • 一个表只能对应一个load语句,不可并行 内部过程: • 内部实现转换成cpimport的方式 • 内部实现 并行加载(不可以调并行度,代码写死了) • Cpimport的实现是append 文件的方式
  • 20.InfiniDB存储 –-锁、事务和mvcc 对于DML:页级别的锁 Version Buffer (SCN) : 1. 保存被修改的数据块,用于管理回滚、MVCC支持和snapshot 2. Initial 4M 内存hash表,默认文件1G,VersionBufferFileSize控制大小 3. 在HDFS上,MVCC是disabled的,回滚只支持在语句级 对应load数据:append数据到文件末尾,需要回滚时直接抛弃数据
  • 21.InfiniDB – 压缩 每一列的重复值多,所以压缩率5倍 set infinidb_compression_type = n 可以在实例级或session启用关闭压缩。 0) 关闭压缩 1 or 2) 启用压缩,默认为2(quicklz算法)
  • 22.InfiniDB – 免优化 • 无index • 自动分区 • dba唯一可以做的:sql优化只能调整表的连接次序
  • 23.InfiniDB – 和其他产品的对比 Inforbright社区版 • 功能:不支持DML • 限制功能的开源 Hbase • Hbase本质上是个key –多value的构架 • 复杂 • 扩展性好 • 和infinidb是互补的结构
  • 24.infinidb产品特点(总结) 产品特点: • Mysql协议兼容 • 全功能,支持dml • 统计类查询10倍 • Load数据快(每秒>10万) • 压缩率5倍(和裸数据比) • 免优化
  • 25.目录 • 背景 • InfiniDB的特点 • Infinidb的实战
  • 26.InfiniDB – 社区支持问题 现在支持比较差,未来前景比较好 • (现状)文档和问题资料比较少 • 2000 年公司,发布产品 • 2013.10月,支持hadoop文件系统 • 2014.10月公司倒闭 • 2014.10月 mariadb接手 • 2015.Q1会发布新的版本
  • 27.InfiniDB – 高可用问题 集群版本没有高可用文档,但是也许不太稳定 单机版本本身不提供高可用 • 备份/恢复方案+手工补缺少数据 使用lvm • Drbd的方案 • Mysql主从方案不适应( 因为有binlog问题)
  • 28.InfiniDB – 高可用drbd
  • 29.InfiniDB – 规范(合适的场景)
  • 30.InfiniDB –规范(不合适的场景)
  • 31.InfiniDB-兼容 性 不支持最新版本mysql 官方的java驱动 支持marridb的mysql驱动
  • 32.InfiniDB –应用类问题 • Infinidb数据会混乱 • 使用最简单的语法 • Infinidb的数据表损坏 • 重新建立表,然后把数据导回去 • 大量的delete/load并行容易死锁 • 比如一天 84次delete,每次600万 • Infinidb数据量排序大报错 • max_length_for_sort_data • infindb server本地mysql客户端不能load file • 远程做,不要本地做
  • 33.总结 • 目前:在可用性要求不高情况下,sql统计分析的利器 统计类查询10倍 Load数据快(每秒>10万) 压缩率5倍(和裸数据比) 免优化 • 将来:在数据仓库中环境中,很有前景的产品 • 构架先进 • 有mariadb组织的支持
  • 34.