InfiniDB在大数据的实战应用

摩畅然

2018/05/13 发布于 技术 分类

自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、ChinaUnix两大技术社区,已经连续举办了五届中国数据库技术大会,每届大会与会规模超千人,大会云集了国内水平最高的数据架构师、数据库管理和运维工程师、数据库开发工程师、研发总监和IT经理等技术人群,是目前国内最受欢迎、人气最高的的数据库技术交流盛会。

文字内容
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组织的支持