Doris由百度大数据部研发,之前叫百度Palo,于2017年开源,2018年贡献到 Apache 社区后,更名为Doris。
Apache Doris是一个现代化的基于MPP(大规模并行处理)技术的分析型数据库产品,MPP技术即将同一个任务并行的分散到多个服务器和节点上,每个节点计算完成后,在将各自的结果汇总在一起得到最终的结果,与Hadoop相似,效率很高,亚秒级内即可查询出结果。
Doris主要整合了Google Mesa数据模型,Apache Impala和Apache ORCFile的技术:
(1)Mesa可用满足我们许多存储的需求,但是其本身不提供SQL查询引擎
(2)Impala是一个非常好的MPP SQL查询引擎,但是缺少完美的分布式存储引擎
(3)自研列式存储:存储层对存储数据的管理通过storage_root_path路径进行配置,路径可以是多个。存储目录下一层按照分桶进行组织,分桶目录下存放具体的tablet,按照tablet_id命名子目录。
这三种技术各有不同的功能和特点,组合这三种技术就能很好的实现Doris快速查询数据的功能。
Doris使用MySQL协议,用户可以使用任何MySQL ODBC/JDBC和MySQL客户端直接访问Doris,只设FE(Frontend)、BE(Backend)两种角色、两个进程,不依赖于外部组件,方便部署和运维。
Doris采用Paxos协议以及Memory+ Checkpoint + Journal的机制来确保元数据的高性能及高可靠。
元数据的每次更新,都会遵照以下几步:
相当于是一个纯内存的一个结构,也就是说所有的元数据都会缓存在内存之中,从而保证FE在宕机后能够快速恢复元数据,而且不丢失元数据。
Leader、follower和 observer它们三个构成一个可靠的服务,如果发生节点宕机的情况,一般是部署一个leader两个follower,目前来说基本上也是这么部署的。就是说三个节点去达到一个高可用服务。单机的节点故障的时候基本上三个就够了,因为FE节点毕竟它只存了一份元数据,它的压力不大,所以如果FE太多的时候它会去消耗机器资源,所以多数情况下三个就足够了,可以达到一个很高可用的元数据服务。
Doris是基于MPP技术的分析性数据库产品,具有性能卓越,简单易用的特点,Doris使用MySQL协议,使用MySQL客户端即可访问,该产品上只有负责接收和返回客户请求的FE节点和数据管理的BE节点,进行元数据的更新时都会遵循一定的规则,最后将数据存储到本地磁盘上。