传统业务采取隔天隔天将数据抽取到OLAP的方式,带来了两个问题
1, 报表往往需要隔天才能出来,无法满足业务需要;
2,带来了多副本的问题; OLTP里面至少三个副本; OLAP里面又至少3个副本; OLAP分析后转存数据集市又有多个副本;造成资源大量的浪费;
HTAP要求:
可扩展性
- 分布式事物
- 分布式存储
实时性
- 行存和列存实时同步
同时支持OLTP和OLAP
- 同时支持行存和列存
- OLAP和OLTP业务隔离
TiDB的HTAP特性
- 行列混合
- 列存TiFlash支持基于主键的实时更新
- TiFlash作为列存副本
- OLAP和OLTP业务隔离
- 智能选择
- MPP架构
TiDB的MPP (Massively Parallel Processing)
- 大量数据的JOIN+聚合查询
- 所有MPP计算都在TiFlash节点的内存中完成
- 目前只支持等值连接
- enforce_mpp帮助验证是否可以使用MPP
MPP过程
例如执行下面的OLAP查询:
select count(*) from order,product
where order.pid = product.pid
and sub_str(order.dic,3) = '7c0'
and product.pic_date > '2022-01-31'
group by order.state;
1, 根据where条件,将order.dic前3个字符等于'7c0'的, product.pic_date > '2022-01-31'的数据放入内存;
2, 进行数据交换,将order.pid和product.pid相等的数据放入同一个节点;
3, 进行数据连接,此时连接会发生在节点内部,从而减少了巨大的网络开销;连接可以并行执行;
4,聚合提速: 对State进行HASH,将HASH相等的数据放入同一个节点;
5, 对数据进行聚合,聚合查询在节点内部即可完成,得到结果,且并行执行;
6, 将各个tiflash结果返回到TiDB Server进行汇总返回给用户;