Doris数据库部署以及应用实战(下)

360影视 国产动漫 2025-03-21 11:08 3

摘要:数据库作为数据存储单元,是应用系统开发和运行的关键要素,也是进行数据存储、管理和使用的核心。在《Doris数据库部署以及应用实战(上)》中针对Doris数据库的部署以及连接测试进行了介绍,本次主要介绍Doris数据库DAP数据分析平台中的应用。

数据库作为数据存储单元,是应用系统开发和运行的关键要素,也是进行数据存储、管理和使用的核心。在《Doris数据库部署以及应用实战(上)》中针对Doris数据库的部署以及连接测试进行了介绍,本次主要介绍Doris数据库DAP数据分析平台中的应用。

Doris作为一种分布式的OLAP数据库,基于MPP架构设计,更多适用于海量数据存储、查询以及数据分析挖掘的场景。在实际应用中,Doris主要用于DAP构建数仓时的数仓存储库,为数仓提供更高效的海量数据存储、查询、分析的能力

Doris作为分析型数据库,采用分布式架构,不同于传统的MySQL等关系型数据库,Doris在部署时通过FE与BE两类进程进行数据存储与管理,提供更加高效、便捷的维护和部署方案。

1.数据库架构

Doris数据库的架构非常简单,只包括FE和BE节点,结构图参见Doris官方提供的架构图:

1.Doris采用MySQL协议,兼容MySQL语法,所以可以直接通过MySQL的客户端或MySQL的jdbc协议连接Doris数据库;

2.Doris的FE节点用于用户请求的接入、查询解析规划、元数据管理、节点管理,在生产部署时,会部署多个FE节点实现容灾备份,其中一个节点作为Master节点,其他作为Follower节点,在Master节点故障时会接替Master节点;在高可用模式(1个Master,2个Follower)下,可以通过增加Observer来扩展FE的读服务能力(Observer节点负责读取元数据,主要增加集群的查询并发能力,不参与集群Master的选择)。

3.BE节点主要作为数据的存储节点,通过部署多个BE节点实现数据存储的扩充,同时基于数据分片以及多副本存储实现数据备份。

2.部署说明

本次Doris部署采用Doris高可用的部署方案,通过3个FE + 3个BE进行部署,其中3个FE包括1个Master和2个Follower。

Doris的使用主要作为DAP的数仓存储数据库,通过DAP配置Doris数仓数据源:

3.数仓架构

数仓的建设是基于DAP平台配置的多层数仓体系,具体架构如下图:

数仓的建设过程主要是将源头数据汇聚到数仓(Doris),并进行分析配置的过程,包括了贴源层ODS、数仓DW和应用层ADS,而DW又分为数据明细层DWD和数据服务层DWS。数仓数据加工汇聚的过程:

1.源头数据首先进入ODS,一般直接以原始数据的形式存储,支撑数仓的同时,为湖仓一体、数据追溯提供原始数据;

2.ODS落地数据后,再基于ODS构建数仓中的基础事实表,形成DWD;

3.基于DWD根据实际需要进行进一步的数据汇总,构建数据宽表和模型,形成DWS;

4.基于DAP构建的数仓,其中ODS、DWD、DWS会直接进行数据落地存储,这些数据都是存储在Doris数据库中,而ADS的数据应用层,更多是以数据集、立方体等分析模型进行呈现。

Doris作为DAP平台的数仓存储数据库,支持DAP数据开发、数据应用的功能实现,但由于Doris采用MPP架构,在部署架构以及数据表管理方式上不同于一般的关系型数据,需要有针对性的进行配置。

1.基本概念

在配置Doris数据表时,有几个关键的定义,分别是:Partition(分区)、Bucket(分桶)、Tablet(数据分片)、Replica(副本),四者的关系如图:

1.Partition(分区):是表的一级数据划分单元,是根据表中特定列的值进行分段,将表中的数据划分为更小,更易于管理的不相交的子集,Doris支持 Range 和 List 的分区划分方式:

(1)Range分区:通常按照时间列分区,通过指定字段列的开闭区间构建不同的数据分区;

(2)List分区:分区值为枚举值,按照具体值进行分区,形成不同的分区表

(3)不指定分区:建表时如果不指定分区,此时 Doris 会生成一个默认的分区包含表中的所有数据,这个分区对用户是透明的。

2.Bucket(分桶):分区的二级数据划分单元,通过Hash或Random方式将同一分区的数据分散到多个桶中,分桶尝试将数据均匀分布在预定义的桶中,从而减少数据倾斜的问题。

(1)Hash:选择一列或多列作为分桶列,并明确指定分桶的数量,系统会根据分桶列和数量进行哈希计算,哈希值相同的会放在一个桶中;

(2)Random:随机地将数据分散到各个分桶中,不依赖分桶字段和哈希计算,Random 分桶能够确保数据均匀分散;

(3)注意:UNIQUE与AGGREGATE表无法使用Random 分桶。

3.Tablet(数据分片):数据分片是Doris中最小的物理存储单元,每个Bucket对应一个Tablet,一个表的Tablet数量等于partition_num(分区数)乘以 bucket_num(分桶数)

4.Replica(副本): Replica是保证Doris数据高可用的有效方式,一个Tablet有多个副本,每个副本存储在不同的物理节点(BE)上,通过多副本的冗余存储,保证副本故障时的数据自动切换,同时实现请求的负载均衡。

2.数据迁移

DAP产品在初始化数据时,包括了dap、dap_biz_trial、dap_ods_trial以及dap_edw_trial几个数据库,其中dap_ods_trial和dap_edw_trial分别存储dap预置的ODS和EDW数据。

DAP在部署时一般通过MySQL数据库进行部署,数据也是直接初始化在MySQL数据库中,对于实际项目的生产环境下,需要构建基于Doris的数仓,所以需要将MySQL的数据迁移到Doris,目前采用ESB扩展的流程接口实现MySQL到Doris的数据迁移。

3.应用配置

在DAP平台中Doris的配置主要包括三个部分:

1.Doris数据源的配置,配置ODS、EDW的Doris数据库连接,配置ODS和EDW时可以直接使用Doris数据库;

2.ODS数据定义,在定义ODS数据表时,如果目标库为Doris数据库,需要配置Doris数据表的信息,配置Partition、Bucket和Replica信息;

3.数仓事实表/维表配置,和ODS数据表定义方式相同,也需要定义数仓表的Partition、Bucket和Replica信息。

MySQL到Doris的数据库迁移,主要通过ESB流程接口实现,由于ESB平台能够实现对MySQL以及Doris的数据读写,所以可以直接通过ESB设计器开发流程,读取MySQL数据库表结构及数据,并写入Doris数据库。

1.迁移方案

1.通过查询MySQL的information_schema库中的COLUMNS表获取MySQL数据库(ODS和EDW库)中的表以及字段信息;

2.根据从MySQL数据库中获取的表清单进行循环,构建建表语句(create table),将所有的建表语句放在一个SQL中,一起执行表创建操作;

3.根据从MySQL数据库中获取的表清单进行循环:

4.通过表名构建并执行select语句,查询MySQL数据库下表的全部数据;

5.将数据处理成insert语句,通过SQL执行组件执行insert语句,将MySQL查询的数据写入Doris数据库;

6.注意:Doris数据库在底层支持了数据合并操作,insert语句实际执行的upsert操作。

2.迁移流程

具体执行过程如下:

1.查询表结构:通过information_schema查询表结构信息;

2.建表SQL构建:通过查询的表结构信心,构建create table语句,结果参考:

1.数据查询:通过循环获取表名,通过动态拼接SQL查询MySQL数据;

2.SQL转换:将查询的结果转换成insert语句,注意:可以把所有insert拼接在一起一并执行,但是目标表的表名写法为:库名.表名

3.结果预览

1.迁移后的数据库结构信息:

2.数据迁移结果:

在DAP中,通过注册Doris的数据源可以定义ODS、EDW的数据库为Doris数据库,并在以Doris为存储库时,ODS和EDW的数据表配置需要配置表的Partition、Bucket和Replica等信息。

1.数据源注册

1.在DAP数据源头配置中定义Doris数据库,默认端口为9030,jdbc驱动使用MySQL的驱动;

2.测试连接并加载数据源:

2.数据采集

1.基于ODS的Doris数据库配置ODS表定义:

2.针对ODS表配置表的定义信息:

3.根据DDL语句生成数据表:

4.数据表结构查看:

3.数据加工

1.在新增事实表/维表时选择Doris数据库作为数仓存储库:

2.基于Doris数仓配置当前数据表的参数信息:

3.根据自动生成的DDL语句生成数仓数据表:

4.在数仓库中查看数据表的结构信息:

归纳分析

Doris作为MPP架构的高性能、实时分析型数据库,在DAP产品以及数据中台等解决方案中主要作为DAP的数仓库,为DAP数据存储、分析、应用提供数据支持,本次在Doris部署过程的基础上,对DAP平台中Doris的配置与应用集成介绍。

1.过程总结

在实际项目中构建Doris的生产环境时,为了保证DAP预置的数据效果能进行展现,需要在Doris中初始化数仓数据,而在大多数项目中,前期都是基于MySQL搭建环境进行数据初始化,所以不可避免要把MySQL数据迁移到Doris。实际上Doris本身提供可一些迁移方式,包括Stream Load、Broker Load、Routine Load、MySQL Load等,但这些方式有的需要导出线下文件,有的需要引入中间件或者对象存储等,处理起来都比较繁琐,所以直接基于数通的ESB总线平台,通过数据读写的方式进行数据迁移,反而更加方便快捷。

2.产品功能

Doris采用MySQL协议,兼容MySQL语法,FE集群构建和BE节点加入通过MySQL Client就可以实现,同时也能通过MySQL Client进行库、表、数据的操作,无论是使用还是管理都非常便捷。在DAP平台配置时,可以直接复用MySQL数据库驱动。另外由于Doris的架构特定,在选择Doris作为存储库时可以直接通过DAP配置分区、分桶等信息,保证构建的数据表的读写性能。

3.说在最后

基于公司目前的产品和解决方案,Doris主要应用在DAP产品中,包括数据治理分析、数据中台和AiBOS等方案中,以Doris作为数仓存储库,满足DAP数据采集、存储、分析的需求,提升数据分析、数据检索、数据预测、数据服务等数据应用的性能。在DAP平台中,已经全面支持了Doris数据库的注册与配置,并能针对ODS、EDW的数据表配置相关的表参数,从而提高表的读写性能。

本文是Doris数据库部署以及应用实战的下篇,主要基于Doris数据库,介绍如何将MySQL数仓中的数据迁移到Doris,并通过DAP平台的配置在Doris中创建ODS、EDW数据表,同时定义表的分区、分桶、副本等信息。Doris作为目前DAP项目的主要数据库,在实际项目的生产环境中已经大量使用,为DAP的数据采集、存储和分析提供高效的支撑。

本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~

来源:数通畅联

相关推荐