Doris文档

本文详细介绍了Doris数据库的基础操作,包括连接、用户和数据库创建。深入讲解了数据模型,如Aggregate、Unique和Duplicate模型,以及它们的聚合特性和注意事项。还探讨了分区分桶的概念,如Range和List分区,以及数据操作如导入、导出、更新和删除的细节。此外,文章还涉及了Doris的进阶特性,如Schema变更、动态分区、临时分区、分区缓存和Join优化策略。
摘要由CSDN通过智能技术生成

基础操作

连接到Doris集群

mysql -h 192.168.169.72 -P9030 -uroot

创建用户

create user 'zpf' identified by 'zpf';
--使用创建的用户登录
mysql -h 192.168.169.72 -P9030 -uzpf -pzpf

创建数据库

create database dbname;

所有的命令都可以通过 help [command] 查看帮助,例如:

help create;
help create table;

--
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [database.]table_name
    (column_definition1[, column_definition2, ...]
    [, index_definition1[, index_definition2, ...]])
    [ENGINE = [olap|mysql|broker|hive|iceberg]]
    [key_desc]
    [COMMENT "table comment"];
    [partition_desc]
    [distribution_desc]
    [rollup_index]
    [PROPERTIES ("key"="value", ...)]
    [BROKER PROPERTIES ("key"="value", ...)]

增加新字段:

--建表
create table test_zpf.add_column_test(
	area_id VARCHAR(20) COMMENT "地区id",
	user_id VARCHAR(20) COMMENT "用户id",
	pid VARCHAR(20) COMMENT "页面id",
	pv_ct bigint sum default "0" COMMENT "访问次数"
)
engine = olap
aggregate key (area_id,user_id,pid)
DISTRIBUTED by hash(user_id) BUCKETS 2
;
--插入数据
insert into test_zpf.add_column_test values
	('1.1.1','1001','p_01',11),
	('1.1.1','1002','p_01',22),
	('1.1.1','1003','p_01',33),
	('1.1.2','1004','p_01',44);
--增加新字段,查看表,新增加字段值为 0
alter table test_zpf.add_column_test 
add column uv_ct bigint sum default "0" after pv_ct;
--可以使用如下sql查看是否执行完毕,即状态是否为finished
	show alter table column;
--如果取消可以使用
	cancel alter table column from test_zpf.add_column_test 
--插入新数据验证
insert into test_zpf.add_column_test values('1.1.1','1001','p_01',77,88);
1.1.2	1004	p_01	44	0
1.1.1	1001	p_01	88	88
1.1.1	1002	p_01	22	0
1.1.1	1003	p_01	33	0
--数据正常,且可以和之前的数据进行聚合
--更多帮助,参考官网,或者参阅 help alter table

Rollup上卷

对已经存在的表进行聚合操作,按照指定的粒度进行进一步的聚合。

--以上表增加字段后为例
area_id	VARCHAR(20)
user_id	VARCHAR(20)
pid		VARCHAR(20)
pv_ct	BIGINT
uv_ct	BIGINT
--如上表,如果有对应根据区域查看pv的需求,可以建立一个只有(area_id,pv_ct)的rollup
alter table test_zpf.add_column_test add rollup rollup_area (area_id,pv_ct); 
--查看是否完成,FINISHED 表示完成
show alter table rollup;
--取消正在执行的rollup
cancel alter table rollup from test_zpf.add_column_test;
--完成后查看表的rollup信息
desc test_zpf.add_column_test all;
-----
add_column_test	AGG_KEYS	area_id	VARCHAR(20)	true
							user_id	VARCHAR(20)	true
							pid		VARCHAR(20)	true
							pv_ct	BIGINT		false
							uv_ct	BIGINT		false
				
rollup_area	AGG_KEYS	area_id	VARCHAR(20)	true
						pv_ct	BIGINT		false
--可以通过 explain 或者 explain graph 查看执行计划,自动命中rollup表

官方说明:

rollup最根本的作用是提高查询效率。

rollup是附属base表的,是一种辅助数据结构,不能显示查询rollup表,是否命中完全有Doris自动决定。

rollup数据是独立物理存储的,利用空间换时间。且影响导入数据效率。数据更新和基表完全同步。

rollup可以用作调整前缀索引,即认为调整列顺序。

注:Doris中不支持在任意列上创建索引,因此内部自己维护的有索引。数据根据 key 列排序存储的,而前缀索引是在排序的基础上,实现的一种根据给定前缀列快速查询的索引方式。

Doris已数据的前36个字节作为数据的前缀索引(不绝对!!!)
表的前几个字段如果是非 varchar 类型数据,不够36个字节,会往后加,但是遇到 varchar 类型后会直接截断
所以在设计列时,要注意列的顺序!!!
在查询时,注意顺序和条件过滤。
当条件过滤是 前缀索引的 前缀 时,可以极大的加快查询速度。
示例:
id bigint, name varchar, age int 均作为 key 列存在
如果按照年龄为20岁的过滤数据,(age,id,name)(name,id,age)要好!

数据模型

Aggregate 模型

aggregate聚合模型,可以说是Doris基础最常用的模型,根据维度字段进行聚合,聚合类型常见的有sum求和,replace替换,max最大值,min最小值等。

--建表
create table test_zpf.order_detail(
	user_id VARCHAR(20) COMMENT "用户id",
	user_name VARCHAR(20) COMMENT "用户名称",
	cost_all bigint sum default "0" COMMENT "用户总消费",
	cost_min bigint min default "9999" COMMENT "用户最小消费额",
	cost_max bigint max default "0" COMMENT "用户最大消费额",
	last_time DATETIME replace DEFAULT "1970-01-01 00:00:00" COMMENT "最后一次更新时间"
)
aggregate key (user_id,user_name)
DISTRIBUTED by hash(user_id) BUCKETS 4
;

--导入数据
insert into test_zpf.order_detail values('1001','张三',11,22,33,'2022-01-01 10:10:10');
insert into test_zpf.order_detail values('1001','张三',22,11,66,'2022-01-01 10:22:22');
insert into test_zpf.order_detail values('1001','张三',33,33,44,'2022-01-01 10:33:33');
insert into test_zpf.order_detail values('1001','张三',11,22,33,'2022-01-01 10:11:11');
insert into test_zpf.order_detail values('1002','李四',11,22,33,'2022-01-01 10:10:10');
insert into test_zpf.order_detail values('1002','LISI',22,11,66,'2022-01-01 10:11:11');

--查询数据,已经根据指定的数据进行聚合操作
1001	张三	77	11	66	2022-01-01 10:11:11
1002	LISI	22	11	66	2022-01-01 10:11:11
1002	李四	11	22	33	2022-01-01 10:10:10
--再次查询,数据一致,顺序可能不一致
1002	LISI	22	11	66	2022-01-01 10:11:11
1002	李四	11	22	33	2022-01-01 10:10:10
1001	张三	77	11	66	2022-01-01 10:11:11

经过聚合,Doris中最终只会存储聚合后的数据,即明细数据会丢失。

注:在同一个导入批次中的数据,对于replace替换这种聚合方式,替换顺序不做保证!!!

注:如果想要保存明细数据,可以加入一个时间戳字段,并加入到聚合key中。由于时间戳字段存在于维度字段中,所以明细数据均会被保留。

--建表
create table test_zpf.order_detail2(
	user_id VARCHAR(20) COMMENT "用户id",
	user_name VARCHAR(20) COMMENT "用户名称",
	times_tamp DATETIME COMMENT "数据加入时间",
	cost_all bigint sum default "0" COMMENT "用户总消费",
	cost_min bigint min default "9999" COMMENT "用户最小消费额",
	cost_max bigint max default "0" COMMENT "用户最大消费额",
	last_time DATETIME replace DEFAULT "1970-01-01 00:00:00" COMMENT "最后一次更新时间"
)
aggregate key (user_id,user_name,times_tamp)
DISTRIBUTED by hash(user_id) BUCKETS 4
;
--导入数据
insert into test_zpf.order_detail2 values('1001','张三','2022-01-01 10:10:11',11,22,33,'2022-01-01 10:10:10');
insert into test_zpf.order_detail2 values('1001','张三','2022-01-01 10:10:12',22,11,66,'2022-01-01 10:22:22');
insert into test_zpf.order_detail2 values('1001','张三','2022-01-01 10:10:13',33,33,44,'2022-01-01 10:33:33');
insert into test_zpf.order_detail2 
### 回答1: "Doris"是一个提供数据分析与可视化的开源工具,其帮助文档主要用于指导用户正确使用Doris进行数据处理和分析的过程。 Doris的中文帮助文档主要包含以下内容: 1. 简介:介绍Doris的概念、特点和应用场景,帮助用户了解Doris的基本信息,并了解何时选择使用Doris。 2. 安装与配置:详细说明如何下载和安装Doris,并提供相应的配置指南,帮助用户在自己的环境中正确地设置Doris的运行。 3. 数据导入与导出:指导用户如何将数据导入到Doris中或将数据从Doris导出到其他存储系统,包括介绍数据文件格式、导入导出命令和常见问题解答等。 4. 数据模型与设计:介绍Doris的数据模型和表设计,包括如何创建表、选择合适的字段和索引,以及表的修改与删除等。 5. 查询与分析:详细讲解如何进行数据查询和分析操作,包括查询语句的编写、条件过滤、排序、分组和聚合等常用操作,以及一些高级查询特性的使用。 6. 数据可视化:引导用户如何使用Doris内置的数据可视化工具,展示数据分析结果的图表和报表,以帮助用户更直观、清晰地理解和展示数据。 7. 性能调优与故障排除:提供针对Doris性能优化和故障排查的相关建议和指导,帮助用户解决潜在的性能瓶颈或故障问题。 总之,Doris中文帮助文档旨在帮助用户全面了解和使用Doris,从安装、配置到数据处理和分析的各个方面提供详尽的指导和参考,以确保用户能够正确、高效地使用Doris进行数据分析与可视化。 ### 回答2: Doris 是一个开源的分布式列式存储系统,专注于大规模、高吞吐、低延迟的 OLAP(联机分析处理)场景。它提供了高效的数据存储和查询能力,可以有效地支持数据分析和数据科学工作。 Doris 支持水平扩展,可以通过在集群中增加节点来提升系统的性能和容量。它具有高可靠性和高可用性,即使在节点故障的情况下也能保持系统的正常运行。此外,Doris 还具有自动平衡数据和自动副本分配的能力,使得数据在集群中能够平均分布,提高系统的整体性能。 Doris 提供了多种数据模型和查询语言,包括行式模型和列式模型,可以根据不同的业务需求选择合适的模型。同时,它支持丰富的查询语言,如SQL、OLAP SQL 和 Druid SQL,方便用户进行数据查询和分析。 为了方便用户使用,Doris 还提供了中文帮助文档。这份帮助文档详细介绍了 Doris 的体系架构、安装部署方法、数据模型和查询语言等内容。用户可以根据文档中的指南一步步安装和配置 Doris,了解和掌握系统的使用方法。如果在使用过程中遇到问题,用户可以通过文档中提供的方法进行故障排查和问题解决。 总之,Doris 是一个功能强大的分布式列式存储系统,通过提供中文帮助文档,方便用户学习和使用该系统。用户可以根据文档中的指导,充分发挥 Doris 的性能和价值,实现高效的数据分析和处理。 ### 回答3: Doris 是一个开源的分布式 SQL 类型数据仓库,旨在帮助用户处理大规模数据。它可以帮助用户高效处理PB级数据,实现快速的实时查询和分析。Doris 的中文帮助文档提供了详细的用户指南和操作手册,方便用户了解和使用 Doris。 首先,中文帮助文档介绍了 Doris 的概念和架构。用户可以了解到 Doris 的核心组件、数据模型、数据存储和分布式部署等重要内容。这些概念会帮助用户更好地理解和使用 Doris。 其次,中文帮助文档提供了丰富的教程和示例。用户可以学习如何安装和部署 Doris,如何创建和管理表格,以及如何进行数据加载和查询等操作。这些教程配有详细的步骤和示例代码,帮助用户快速上手。 此外,中文帮助文档还包含了常见问题解答和故障排除指南。用户在使用 Doris 过程中遇到问题时,可以参考这些文档找到解决方法。这些文档通常包含了常见问题的原因和解决方案,帮助用户提高故障排除的效率。 总之,Doris 的中文帮助文档是一个全面且实用的指南,可以帮助用户深入理解 Doris 的各个方面,并且在使用中遇到问题时提供帮助和解决方案。通过这个文档,用户可以更加轻松地使用 Doris,实现高效的数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值