DORIS - DORIS注意事项(一)

2024-09-03 21:44
文章标签 doris 注意事项

本文主要是介绍DORIS - DORIS注意事项(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

建表建议

1. Key 列必须在所有 Value 列之前。
2. 尽量选择整型类型。因为整型类型的计算和查找效率远高于字符串。
3. 对于不同长度的整型类型的选择原则,遵循够用即可。
4. 对于 VARCHAR 和 STRING 类型的长度,遵循够用即可。

注意事项

1. 建表时,未指定 Unique、Aggregate 或 Duplicate 时,默认创建一个 Duplicate 模型的表,数据模型在建表时就已经确定,且无法修改。
2. 明细模型未指定排序列时,默认系统自动选定了前 3 列为排序列。
3. 建表时,指定 Duplicate Key,用来指明数据存储按照这些 Key 列进行排序,建议选择前 2-4 列为排序列。
4. 主键模型默认的更新语意为整行UPSERT,即 UPDATE OR INSERT,该行数据的 key 如果存在,则进行更新,如果不存在,则进行新数据插入。所以,在整行UPSERT语意下,即使用户使用 insert into 指定部分列进行写入,Doris 也会在 Planner 中将未提供的列使用 NULL 值或者默认值进行填充。如果用户希望更新部分字段,需要使用写时合并实现,并通过特定的参数来开启部分列更新的支持。
5. 主键模型表的实现方式只能在建表时确定,无法通过 schema change 进行修改。
6. 聚合模型根据表中的列是否设置了AggregationType来区分 key 列还是value 列,也就是要么是 key 列,要么是 value 列。 
7. 聚合模型中的agg_state 是一种数据类型,同 int/array/string 意义一样,agg_state 只能配合state /merge/union函数组合器使用,agg_state 存在一定的性能开销。
8. 在插入数据时,agg_state 类型的数据,需要使用 state 函数来生成:insert into aggstate values(1,sum_state(1),group_concat_state('a'));
9. 聚合模型,在 count(*) 查询中,Doris 必须扫描所有的 AGGREGATE KEY 列并且聚合后,才能得到语意正确的结果。 当聚合列非常多时,count(*) 查询需要扫描大量的数据。
10. 聚合模型,当业务上有频繁的 count(*) 查询时,建议用户通过增加一个值恒为 1 的列,查询时,使用聚合类型为 SUM 的列来模拟 count(*),使用 select sum(值恒为1的列名) from table_name; 来替代 select count(*) from table_name; 前者性能远高后后者。不过这种方式也有使用限制,就是用户需要自行保证,不会重复导入 AGGREGATE KEY 列都相同地行。另一种方式,就是将如上的 count 列的聚合类型改为 REPLACE,且依然值恒为 1。那么 select sum(值恒为1的列名) from table_name;select count(*) from table_name; 的结果将是一致的。并且这种方式,没有导入重复行的限制。
11. Duplicate、Aggregate、Unique 模型,都会在建表指定 Key 列,然而实际上是有所区别的:对于 Duplicate 模型,表的 Key 列,可以认为只是 "排序列",并非起到唯一标识的作用;而 Aggregate、Unique 模型这种聚合类型的表,Key 列是兼顾 "排序列""唯一标识列",是真正意义上的 "Key 列"12. 主键模型,针对需要唯一主键约束的场景,可以保证主键唯一性约束,但是无法利用 ROLLUP 等预聚合带来的查询优势。
13. 明细模型,适合任意维度的 Ad-hoc 查询,虽然同样无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势。
14. 在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述,一张表包括行(Row)和列(Column)。
15. 在 Doris 中,列可以分为两大类:Key 和 Value,从业务角度看,Key 和 Value 可以分别对应维度列和指标列。Doris 的 key 列是建表语句中指定的列,建表语句中的关键字'unique key''aggregate key''duplicate key'后面的列就是 key 列,除了 key 列剩下的就是 value 列。从聚合模型的角度来说,Key 列相同的行,会聚合成一行,其中 Value 列的聚合方式由用户在建表时指定。
16. Doris 支持两层的数据划分,第一层是分区(Partition),第二层是 Bucket(Tablet)。
17. 数据被水平划分为若干个数据分片(Tablet,也称作数据分桶),每个 Tablet 包含若干数据行,各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。
18. 一个 Tablet 只属于一个分区,一个分区包含若干个 Tablet,若干个分区组成一个 Table。Tablet 是数据移动、复制等操作的最小物理存储单元,分区可以视为是逻辑上最小的管理单元。
19. 时间维度 或者 类似于带有有序值的维度,可以用这类维度列作为分区列,不论分区列是什么类型,在写分区值时,都需要加双引号。
20. 分桶列建议选择区分度大的列。
21. 分区只支持 Range 和 List两种方式,分桶只支持 Hash 和 Random 两种方式。
22. 在 Doris 中,只有 OLAP 这个 ENGINE 类型是由 Doris 负责数据管理和存储的,其他的 ENGINE 类型,如 MySQL、 Broker、ES 等等,本质上只是对外部其他数据库或系统中的表的映射,以保证 Doris 可以读取这些数据,而 Doris 本身并不创建、管理和存储任何非 OLAP ENGINE 类型的表和数据。
23. 建表时若不建立分区,Doris 会生成一个和表名同名的默认的分区,这个分区对用户是透明的,使用默认分区时,只支持 Bucket 划分。
24. 分区列可以指定一列或多列,分区列必须为 KEY 列,创建分区时不可添加范围重叠的分区,分区数量理论上没有上限。
25. 动态分区只支持在 DATE/DATETIME 列上进行 Range 类型的分区。

这篇关于DORIS - DORIS注意事项(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134134

相关文章

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

Vue项目开发各种注意事项

1、eCharts引入方式(单页面) import * as echarts from 'echarts'Vue.prototype.$echarts = echarts 2、Sass引入 sass和node-sass 中 node-sass不要引入最新版本  引入@7.x 否则会报错 可能是语法规则改变 3、严格模式不要随意开启、将eslint文件中 extends: 中的vue去除

Exchange 服务器地址列表的配置方法与注意事项

Exchange Server 是微软推出的一款企业级邮件服务器软件,广泛应用于企业内部邮件系统的搭建与管理。配置 Exchange 服务器地址列表是其中一个关键环节。本文将详细介绍 Exchange 服务器地址列表的配置方法与注意事项,帮助系统管理员顺利完成这一任务。 内容目录 1. 引言 2. 准备工作 3. 配置地址列表 3.1 创建地址列表 3.2 使用 Exchange

API28_OKgo_get注意事项

1: implementation 'com.lzy.net:okgo:2.1.4' 2:在BaseApplication中onCreate()中初始化initOKgo() private void initOKgo() {//---------这里给出的是示例代码,告诉你可以这么传,实际使用的时候,根据需要传,不需要就不传-------------//HttpHeaders headers

三.海量数据实时分析-FlinkCDC实现Mysql数据同步到Doris

FlinkCDC 同步Mysql到Doris 参考:https://nightlies.apache.org/flink/flink-cdc-docs-release-3.0/zh/docs/get-started/quickstart/mysql-to-doris/ 1.安装Flink 下载 Flink 1.18.0,下载后把压缩包上传到服务器,使用tar -zxvf flink-xxx-

【VueJS】live-server 快速搭建服务 及 注意事项

本地开发常常需要搭建临时的服务,第一时间我们会想到用 http-server。 但现在流行修改文件浏览器自动刷新,这里可以使用 live-server 很简单就能启动一个看起来很专业的本地服务。 你只需要全局安装live-server: npm install -g live-server 并在项目根目录执行这条命令: PS E:\AblazeProject\Vue> live-serv