Apache Doris三种数据模型(Aggregate、Uniq、Duplicate)的使用及其注意点
目录
- 1. key和value
- 2. 数据模型
- 2.1 Aggregate数据模型
- 2.2 uniq数据模型
- 2.3 Duplicate数据模型
- 3. Aggregate/Uniq数据模型的局限性
1. key和value
这里的key并不是索引的意思,下面根据情况具体说明:
- Aggregate数据模型:key为聚合的键,value为聚合的值
- Uniq数据模型:key为聚合的键,value为聚合的值
- Duplicate数据模型:key为建表时指定的duplicate key(sorted column,只是用来排序),其余字段为value
- rollup
- 作用于Aggregate和Uniq数据模型:key为聚合的键,value为聚合的值
- 作用于Duplicate数据模型:key为rollup命令添加的字段,且添加的字段都是key
2. 数据模型
数据模型在建表时确定,后续无法修改
2.1 Aggregate数据模型
建表语句如下:
mysql>
mysql> create table if not exists test_db.aggregate_tb(-> 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 '0' comment '用户最小停留时间'-> )-> aggregate key(user_id, date, city, age, sex)-> distributed by hash(user_id) buckets 10-> properties('replication_num' = '3');
Query OK, 0 rows affected (0.05 sec)mysql>
- 根据user_id, date, city, age, sex这5个key进行数据的聚合
- replace表示取最后一个insert的数据;但在同一个insert中如果包含多条数据,会随机取一条
- replace_if_not_null:和replace类似,区别在于如果insert的是null,则不进行替换
- 数据聚合分为3个阶段
- 数据insert时,会对同一个insert批次的数据进行聚合
- BE进行Compaction时,会对不同insert批次的数据进行聚合
- 用户进行查询时,在BE后端可能不同insert批次的数据未进行聚合,此时会对符合查询条件的数据进行内部聚合(不用用户调用group by,会扫描所有列的数据)后,再返回给客户端
- 所有的key列必须在value列之前
2.2 uniq数据模型
建表语句如下:
mysql>
mysql> create table if not exists test_db.uniq_tb(-> user_id largeint not null comment '用户id',-> username varchar(50) not null comment '用户名',-> city varchar(20) comment '城市',-> age smallint comment '年龄',-> sex tinyint comment '性别',-> phone largeint comment '电话',-> address varchar(500) comment '地址',-> register_time datetime comment '注册时间'-> )-> unique key(user_id, username)-> distributed by hash(user_id) buckets 10-> properties('replication_num' = '3');
Query OK, 0 rows affected (0.05 sec)mysql>
- uniq数据模型其实是Aggregate数据模型的一种特列
- 根据user_id, username这2个key进行数据的聚合,其余字段按replace方式进行聚合
2.3 Duplicate数据模型
建表语句如下:
mysql>
mysql> create table if not exists test_db.duplicate_tb(-> timestamp datetime not null comment '日志时间',-> type int not null comment '日志类型',-> error_code int comment '错误码',-> error_msg varchar(1024) comment '错误详细信息',-> op_id bigint comment '负责人id',-> op_time datetime comment '处理时间'-> )-> duplicate key(timestamp, type)-> distributed by hash(op_id) buckets 10-> properties('replication_num' = '3');
Query OK, 0 rows affected (0.05 sec)mysql>
- 数据不会发生内部聚合,插入多少条数据,查询就会返回多少条数据
- duplicate key只是指定了timestamp和type两个sorted column, 用于数据排序,并不能作为数据唯一的标识
3. Aggregate/Uniq数据模型的局限性
count的局限性:查询select count(user_id) from test_db.aggregate_tb;
得到的是user_id去重后的计数值;查询select count(*) from test_db.aggregate_tb;
得到的是表聚合后,再进行计数的值。而不是表聚合前的计数值
Apache Doris三种数据模型(Aggregate、Uniq、Duplicate)的使用及其注意点相关推荐
- mysql是网状_三种数据模型---层次模型、网状模型以及关系模型
本文转载自:http://www.cnblogs.com/yue-blog/p/6010527.html 一.层次数据模型 定义:层次数据模型是用树状结构来组织数据的数据模型. 其实层次数据模型就是的 ...
- Apache的三种MPM模式比较:prefork,worker,event
就最新版本的Web服务器Apache(版本是Apache 2.4.10,发布于2014年7月21日)来说,一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式. ...
- 三种数据模型---层次模型、网状模型以及关系模型
一.层次数据模型 定义:层次数据模型是用树状<层次>结构来组织数据的数据模型. 其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有 ...
- PHP和apache的三种连接示例------转自骏马金龙博客
1 CGI模式 使用CGI模式时,当动态请求到达,httpd临时启动一个cgi解释器,并通过cgi协议转发要运行的内容.当cgi脚本运行结束后,将结果返回给httpd,然后cgi解释器进程自我销毁.当 ...
- MySQL采用哪种数据模型_数据库的三种数据模型分别是什么
层次模型 层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵"有向树".根结点在最上端,层次最高,子结点在下,逐层排列.层次模型的特征是: 1.有且只有一个根结点: 2.其 ...
- Apache Doris数据模型详解及适用场景
数据模型 Aggregate模型及Uniq模型 聚合模型中的列分为两种,Key (维度列) 和 Value(指标列),当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设 ...
- Apache Prefork、Worker和Event三种MPM分析
三种MPM介绍 Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到a ...
- Apache Doris介绍
一.关于 Apache Doris 和 DorisDB.StarRocks 的关系 Doris 最早是解决百度凤巢统计报表的专用系统,随着百度业务的飞速发展对系统进行了多次迭代,逐渐承担起百度内部业务 ...
- 【转】Apache Doris介绍
转:Apache Doris介绍_wapecheng的博客-CSDN博客_apache doris 一.关于 Apache Doris 和 DorisDB.StarRocks 的关系 Doris 最早 ...
最新文章
- 窗口最小化之后没有图标
- PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表
- linux下gdb调试方法和技巧详解
- 进程间通信之-共享内存Shared Memory--linux内核剖析(十一)
- linux var 空间不足,/var空间不足怎么办?(求安全保险的方法)
- 《Reids 设计与实现》第七章 RDB 持久化
- 编程语言对比 基本数据类型
- Maven—Eclipse设置Maven项目JDK版本
- c++ 开源grid控件
- java计算经纬度距离
- 什么是广域网和局域网?
- 中国智能家居企业出海,亚马逊云科技为其提供“GPS锦囊”
- (翻译)赫曼方格如何影响用户视觉
- css div里引用em字体会变斜体_DIV+CSS怎么样改字体样式
- Android动画之AnimatorSet联合动画用法
- 利用自带命令 手动杀毒
- 半定制器件课程设计——基于FPGA的PS2键盘人机输入显示系统
- 财务分析与决策——利润表
- 安装和配置NFS服务器
- python实现抓包工具 基于winpcap