【Doris】数据模型

常见数据模型

  • Uniq模型是Aggregate模型的特例;
  • ROLLUP通过聚合减少数据量或改变列顺序来匹配前缀索引来提升查询效率;
  • 在聚合模型中执行select count(*)式的查询时,在某些场景下,由于无法命中ROLLUP,使得查询开销很大,这也是聚合模型的局限性所在;
  • 然而Duplicate模型因为不涉及聚合语义,所以它在执行count(*)式的查询时不受影响。
  • Aggregate模型(聚合模型)
CREATE TABLE IF NOT EXISTS example_db.expamle_tbl
(
	`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 "99999" COMMENT "用户最小停留时间",
)
AGGREGATE KEY(`user_id`, `date`, `timestamp`, `city`, `age`, `sex`)
... /* 省略 Partition 和 Distribution 信息 */
  • Uniq模型(唯一主键模型)
  CREATE TABLE IF NOT EXISTS example_db.expamle_tbl
(
	`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`, `user_name`)
... /* 省略 Partition 和 Distribution 信息 */
  • Duplicate模型(冗余模型)
CREATE TABLE IF NOT EXISTS example_db.expamle_tbl
(
	`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`)
... /* 省略 Partition 和 Distribution 信息 */

参考链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值