合 大数据之Doris面试题
1. Doris的应用场景有哪些?
首先 Doris 是一个有着MPP架构的分析型数据库产品。对于PB数量级、结构化数据可以做到亚秒级查询响应。使用上兼容MySQL协议,语法是标准的SQL。Doris本身不依赖任何其他系统,相比Hadoop生态产品更易于运维。
应用场景包括:固定历史报表分析、实时数据分析、交互式数据分析等。
一般情况下,用户的原始数据,比如日志或者在事务型数据库中的数据,经过流式系统或离线处理后,导入到Doris中以供上层的报表工具或者数据分析师查询使用。
2. Doris的架构介绍下
Doris 的架构很简洁,只设 FE(Frontend)、BE(Backend)两种角色、两个进程。
- 以数据存储的角度观看,FE 存储、维护集群元数据;BE 存储物理数据,数据的可靠性由 BE 保证,BE 会对整个数据存储多副本。
- 以查询处理的角度观看,FE 节点接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果;BE 节点依据 FE 生成的物理计划,分布式地执行查询。
FE 主要有有三个角色,一个是 Leader,一个是 Follower,还有一个 Observer。Leader 跟 Follower,主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。Observer 只是用来扩展查询节点,就是说如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加 Observer 的节点。Observer 不参与任何的写入,只参与读取。
在使用接口方面,Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。
3. Doris 的数据模型
Doris 的数据模型主要分为3类:
- Aggregate 聚合模型
- Uniq 唯一主键模型
- Duplicate 模型
Aggregate 聚合模型:
聚合模型需要用户在建表时显式的将列分为 Key 列和 Value 列。该模型会自动的对 Key 相同的行,在 Value 列上进行聚合操作。
当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设置的 AggregationType 进行聚合。AggregationType 目前有以下四种聚合方式:
- SUM:求和,多行的 Value 进行累加。
- REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。
- MAX:保留最大值。
- MIN:保留最小值。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATE TABLE IF NOT EXISTS example_db.expamle_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `sex` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`) ... /* 省略 Partition 和 Distribution 信息 */ ; |