Doris:Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!
关键词:MPP、亚秒级、大数据量、高效的数据分析
OLAP&&ALTP
- OLTP:主要用来记录某类业务事件的发生,如购买行为,当行为产生后,系统会记录是谁在何时何地做了何事,这样的一行(或多行)数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功
- OLAP:当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做OLAP了。
因为OLTP所产生的业务数据分散在不同的业务系统中,而OLAP往往需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,下面用一张图来简要对比。
Doris的特点
- 现代化MPP架构:
1.1 概念:即messively parallel processing,大规模并行处理。通常来说,就是将任务分发给不同的节点进行并行计算,最终将结果汇总返回。
1.2 架构特点:
* 多节点:节点间数据不共享,只能通过网络协同。通信效率一定程度上决定了查询效率
* 节点独立:每一个节点都有自己的CPU、磁盘、总线
* 并行计算:数据根据hash算法分散到不同的服务器上,在任务执行时也是分散到不同的机器上执行完成后汇总返回
* CAP:首先保证C(一致性),然后保证A(可用性),最后考虑P(分区容错性)。1.3 架构特点带来的劣势:
* 依赖网络:集群机器协同工作依赖网络,一旦网络出错将导致不可用,
* 扩展性差:业务数据分配到了不同的节点,一旦节点过多,元数据管理将十分困难
- 亚秒级的查询时延:任务分发至不同节点并行处理,提高了查询效率。
- 兼容SQL协议:支持标准SQL语言,兼容MySQL协议
- 向量化执行器
4.1 向量化执行引擎可以减少节点间的调度,提高CPU的利用率。
4.2 因为列存数据,同一列的数据放在一起,导致向量化执行引擎在执行的时候拥有了更多的机会能够利用的当前硬件与编译的新优化特征。
4.3 因为列存数据存储将同类型的类似数据放在一起使得压缩比能够达到更高,这样可以拉近一些磁盘IO能力与计算能力的差距。
5. 高效的聚合表技术:用户最终查询到的都是聚合后的数据。
5.1 数据聚合的三个阶段:
* ETL阶段:导入一批次的数据到目的端时,即 Extra(导入)->Transform(转换)->load(存储)的过程中
* Compaction阶段:底层在对数据进行Compaction时
* 查询:用户执行查询时
- 新型预聚合技术Rollup:对于查询会有部分聚合的处理动作,可以参考MySQL的WITH ROLLUP语法。
- 高性能、高可用、高可靠
Doris的架构:
应用程序服务器:即调用方,对Doris发起请求的服务器。
数据存储服务器:用于响应调用方的请求
管理中心服务器:是一个小型的服务集群,一半是由两台服务器组成,主要用于监控数据存储服务器的健康状态。
一般来说,数据存储服务器的分片、副本数越多,集群可用性就越高
8. 极简运维,弹性伸缩
挑战
- 数据类型是否能够结构化:mpp类型的架构适合处理PB级的结构化数据,那么业务数据的类型是否能结构化?
- Doris的数据导入问题:Doris支持的数据导入方式,基本能覆盖kafka、hdfs、mysql等作为数据上游。但是从官方的介绍来看,doris的数据导入是有一个弊端的,就是导入数据的部分异常,可能会导致整个任务的失败。Doris市面相关资料不多,使用学习和运维成本高、风险大。出了问题,比较难维护需要熟悉源码,才能去调试 bug 。
本文转载自: 掘金