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

相关文章

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

兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)

Apache Doris 内置支持包括 Hive、Iceberg、Hudi、Paimon、LakeSoul、JDBC 在内的多种 Catalog,并为其提供原生高性能且稳定的访问能力,以满足与数据湖的集成需求。而随着 Apache Doris 用户的增加,新的数据源连接需求也随之增加。因此,从 3.0 版本开始,Apache Doris 引入了 Trino Connector 兼容框架。 Tri

Apache Kylin VS Apache Doris全方位对比

1 系统架构 1.1 What is Kylin1.2 What is Doris2 数据模型 2.1 Kylin的聚合模型2.2 Doris的聚合模型2.3 Kylin Cuboid VS Doris RollUp2.4 Doris的明细模型3 存储引擎4 数据导入5 查询6 精确去重7 元数据8 高性能9 高可用10 可维护性 10.1 部署10.2 运维10.3 客服11 易用性 11.1

Doris在用户画像人群业务的应用实践

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好玩! 版权声明: 本文为大数据技术与架构整理,原作者独家授权。未经原作者允许转载追究侵权责任。 编辑|冷眼丶 微信公众号|import_bigdata 欢迎点赞+收藏+转发朋友圈

镭射定位灯激光定位使用注意事项?

在现代工业、建筑测量、舞台设计以及科研实验等领域,镭射定位灯(常称激光定位器)因其高精度、远射程和直观性而得到广泛应用。然而,激光作为一种高强度光束,其使用若不当,不仅可能损害设备,还可能对人体健康造成危害。因此,掌握镭射定位灯激光定位的正确使用方法及注意事项至关重要。下面就跟着鑫优威一起来了解一下。   一、安全为先,做好防护   首先,操作者必须佩戴符合标准的激光防护眼镜,以防止激光直