hello,我是857-毛哥(兼奇峰空降业务)经纪人,我的宗旨是解决老毛子二十多年单身生活(二十多年了,连妹妹都手都没有碰过,在线征婚!!!),同时也负责奇峰全国空降业务。
接下来即将由我带着大家开车上高速,xdm赶紧抓紧时间上车了!!!!!
二、Doris介绍Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。
Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!
三、Doris核心特性MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点 都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上, 每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服 务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。 简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各 自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。
现代化MPP结构
秒级查询返回延时
支持标准SQL语言,兼容Mysql协议
向量化执行器
高效的聚合技术
新型预聚合技术Rollup
高性能、高可用、高可靠
极简运维,d性伸缩
详细Doris编译参考:https://doris.apache.org/zh-CN/installing/compilation.html四、Doris安装及部署
详细Doris安装及部署可参考:https://doris.apache.org/zh-CN/installing/install-deploy.html五、数据划分
broker:Doris集群单个节点。
FE:Frontend,即 Doris 的前端节点。主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。
BE:Backend,即 Doris 的后端节点。主要负责数据存储与管理、查询计划执行等工作。
如上图,Doris 的整体架构分为两层。多个 FE 组成第一层,提供 FE 的横向扩展和高可用。多个 BE 组成第二层,负责数据存储与管理。本文主要介绍 FE 这一层中,元数据的设计与实现方式。 FE 节点分为 follower 和 observer 两类。各个 FE 之间,通过 bdbje(BerkeleyDB Java Edition)进行 leader 选举,数据同步等工作。 follower 节点通过选举,其中一个 follower 成为 leader 节点,负责元数据的写入 *** 作。当 leader 节点宕机后,其他 follower 节点会重新选举出一个 leader,保证服务的高可用。 observer 节点仅从 leader 节点进行元数据同步,不参与选举。可以横向扩展以提供元数据的读服务的扩展性。 注:follower 和 observer 对应 bdbje 中的概念为 replica 和 observer。下文可能会同时使用两种名称。
Table:数据都以表(Table)的形式进行逻辑上的描述,类似Mysql的Table。一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。
Partition:通过Table的单个或多个key列进行数据分区,能有效提升查询效率,降低单个目录数据存储压力。支持 Range 和 List 的划分方式。
Range 分区
分区列通常为时间列,以方便的管理新旧数据。
Partition 支持通过 VALUES LESS THAN (...) 仅指定上界,系统会将前一个分区的上界作为该分区的下界,生成一个左闭右开的区间。通过,也支持通过 VALUES [...) 指定同时指定上下界,生成一个左闭右开的区间。
通过 VALUES [...) 同时指定上下界比较容易理解。这里举例说明,当使用 VALUES LESS THAN (...) 语句进行分区的增删 *** 作时,分区范围的变化情况:
如上 expamle_range_tbl 示例,当建表完成后,会自动生成如下3个分区:
p201701: [MIN_VALUE, 2017-02-01) p201702: [2017-02-01, 2017-03-01) p201703: [2017-03-01, 2017-04-01)
当我们增加一个分区 p201705 VALUES LESS THAN ("2017-06-01"),分区结果如下:
p201701: [MIN_VALUE, 2017-02-01) p201702: [2017-02-01, 2017-03-01) p201703: [2017-03-01, 2017-04-01) p201705: [2017-04-01, 2017-06-01)
此时我们删除分区 p201703,则分区结果如下:
p201701: [MIN_VALUE, 2017-02-01) p201702: [2017-02-01, 2017-03-01) p201705: [2017-04-01, 2017-06-01)
注意到 p201702 和 p201705 的分区范围并没有发生变化,而这两个分区之间,出现了一个空洞:[2017-03-01, 2017-04-01)。即如果导入的数据范围在这个空洞范围内,是无法导入的。
继续删除分区 p201702,分区结果如下:
p201701: [MIN_VALUE, 2017-02-01) p201705: [2017-04-01, 2017-06-01) 空洞范围变为:[2017-02-01, 2017-04-01)
现在增加一个分区 p201702new VALUES LESS THAN ("2017-03-01"),分区结果如下:
p201701: [MIN_VALUE, 2017-02-01) p201702new: [2017-02-01, 2017-03-01) p201705: [2017-04-01, 2017-06-01)
可以看到空洞范围缩小为:[2017-03-01, 2017-04-01)
现在删除分区 p201701,并添加分区 p201612 VALUES LESS THAN ("2017-01-01"),分区结果如下:
p201612: [MIN_VALUE, 2017-01-01) p201702new: [2017-02-01, 2017-03-01) p201705: [2017-04-01, 2017-06-01)
即出现了一个新的空洞:[2017-01-01, 2017-02-01)
综上,分区的删除不会改变已存在分区的范围。删除分区可能出现空洞。通过 VALUES LESS THAN 语句增加分区时,分区的下界紧接上一个分区的上界。
不可添加范围重叠的分区。
List 分区
分区列支持 BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME, CHAR, VARCHAR 数据类型,分区值为枚举值。只有当数据为目标分区枚举值其中之一时,才可以命中分区。
Partition 支持通过 VALUES IN (...) 来指定每个分区包含的枚举值。
下面通过示例说明,进行分区的增删 *** 作时,分区的变化。
如上 example_list_tbl 示例,当建表完成后,会自动生成如下3个分区:
p_cn: ("Beijing", "Shanghai", "Hong Kong") p_usa: ("New York", "San Francisco") p_jp: ("Tokyo")
当我们增加一个分区 p_uk VALUES IN ("London"),分区结果如下:
p_cn: ("Beijing", "Shanghai", "Hong Kong") p_usa: ("New York", "San Francisco") p_jp: ("Tokyo") p_uk: ("London")
当我们删除分区 p_jp,分区结果如下:
p_cn: ("Beijing", "Shanghai", "Hong Kong") p_usa: ("New York", "San Francisco") p_uk: ("London")
不可添加范围重叠的分区。
Bucket:数据在各个分区内的划分规则。如果不使用 Partition,则描述的是对整个表的数据的划分规则(支持多个分桶列,但必须是key列)。
Tablet:用户数据被水平划分为若干个数据分片.各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。
六、问题思考如何保证Doris FE元数据不丢失和一致性?
如何备份Doris EF元数据?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)