目录

  • 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个阶段
    1. 数据insert时,会对同一个insert批次的数据进行聚合
    2. BE进行Compaction时,会对不同insert批次的数据进行聚合
    3. 用户进行查询时,在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)的使用及其注意点相关推荐

  1. mysql是网状_三种数据模型---层次模型、网状模型以及关系模型

    本文转载自:http://www.cnblogs.com/yue-blog/p/6010527.html 一.层次数据模型 定义:层次数据模型是用树状结构来组织数据的数据模型. 其实层次数据模型就是的 ...

  2. Apache的三种MPM模式比较:prefork,worker,event

    就最新版本的Web服务器Apache(版本是Apache 2.4.10,发布于2014年7月21日)来说,一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式. ...

  3. 三种数据模型---层次模型、网状模型以及关系模型

    一.层次数据模型 定义:层次数据模型是用树状<层次>结构来组织数据的数据模型. 其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有 ...

  4. PHP和apache的三种连接示例------转自骏马金龙博客

    1 CGI模式 使用CGI模式时,当动态请求到达,httpd临时启动一个cgi解释器,并通过cgi协议转发要运行的内容.当cgi脚本运行结束后,将结果返回给httpd,然后cgi解释器进程自我销毁.当 ...

  5. MySQL采用哪种数据模型_数据库的三种数据模型分别是什么

    层次模型 层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵"有向树".根结点在最上端,层次最高,子结点在下,逐层排列.层次模型的特征是: 1.有且只有一个根结点: 2.其 ...

  6. Apache Doris数据模型详解及适用场景

    数据模型 Aggregate模型及Uniq模型 聚合模型中的列分为两种,Key (维度列) 和 Value(指标列),当我们导入数据时,对于 Key 列相同的行会聚合成一行,而 Value 列会按照设 ...

  7. Apache Prefork、Worker和Event三种MPM分析

    三种MPM介绍 Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到a ...

  8. Apache Doris介绍

    一.关于 Apache Doris 和 DorisDB.StarRocks 的关系 Doris 最早是解决百度凤巢统计报表的专用系统,随着百度业务的飞速发展对系统进行了多次迭代,逐渐承担起百度内部业务 ...

  9. 【转】Apache Doris介绍

    转:Apache Doris介绍_wapecheng的博客-CSDN博客_apache doris 一.关于 Apache Doris 和 DorisDB.StarRocks 的关系 Doris 最早 ...

最新文章

  1. 窗口最小化之后没有图标
  2. PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表
  3. linux下gdb调试方法和技巧详解
  4. 进程间通信之-共享内存Shared Memory--linux内核剖析(十一)
  5. linux var 空间不足,/var空间不足怎么办?(求安全保险的方法)
  6. 《Reids 设计与实现》第七章 RDB 持久化
  7. 编程语言对比 基本数据类型
  8. Maven—Eclipse设置Maven项目JDK版本
  9. c++ 开源grid控件
  10. java计算经纬度距离
  11. 什么是广域网和局域网?
  12. 中国智能家居企业出海,亚马逊云科技为其提供“GPS锦囊”
  13. (翻译)赫曼方格如何影响用户视觉
  14. css div里引用em字体会变斜体_DIV+CSS怎么样改字体样式
  15. Android动画之AnimatorSet联合动画用法
  16. 利用自带命令 手动杀毒
  17. 半定制器件课程设计——基于FPGA的PS2键盘人机输入显示系统
  18. 财务分析与决策——利润表
  19. 安装和配置NFS服务器
  20. python实现抓包工具 基于winpcap

热门文章

  1. 数理统计10.15 | 幂律分布
  2. SQL date 格式
  3. java框架013——Spring AOP面向切面编程
  4. java 根据excel模板格式导出指定格式的excel
  5. 巅峰对决:node.js和php性能测试
  6. 函数参数*arg和参数**arg区别
  7. 开源虚拟机Bochs安装以及踩坑
  8. 嫦娥奔月(神话,非航天器)
  9. php 正则保留数字和,只保留汉字,字母,数字正则
  10. zabbix安装(详细)本文没有截图看我网盘文档有图