Doris建表
这是AGGREGATE 模型的建表案列。如果是其他模型,只要改AGGREGATE KEY这一行,改掉REPLACE ,MAX,MIN,SUM,HLL_UNION)等。
注意:在Doris中,unique约束与Mysql,Oracle,Hive等数据库不同,不是写在字段类型里,而是作为一种数据模型。
CREATE TABLE IF NOT EXISTS example_db.expamle_tbl
(
`user_id` LARGEINT NOT NULL COMMENT "用户id",
`date` DATE NOT NULL COMMENT "数据灌入日期时间",
`timestamp` DATETIME 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 "用户最小停留时间"
)
ENGINE=olap -- 1
AGGREGATE KEY(`user_id`, `date`, `timestamp`, `city`, `age`, `sex`) --若此处不是AGGREGATE聚合模型,而是Unique唯一主键模型、Duplicate明细模型的话,建表不用聚合类型(SUM、MAX、MIN、REPLACE、HLL_UNION等)
PARTITION BY RANGE(`date`) --分区
(
PARTITION `p201701` VALUES LESS THAN ("2017-02-01"),
PARTITION `p201702` VALUES LESS THAN ("2017-03-01"),
PARTITION `p201703` VALUES LESS THAN ("2017-04-01")
)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 16 --分桶,默认是10
PROPERTIES --可以默认不写
(
"replication_num" = "3", --默认是3
"storage_medium" = "SSD", --默认为HHD磁盘
"storage_cooldown_time" = "2018-01-01 12:00:00" --到此时间后就从SSD磁盘转到HHD磁盘
);
数据类型
链接https://blog.youkuaiyun.com/cai_and_luo/article/details/118600628
SUM、MAX、MIN、REPLACE、HLL_UNION(仅用于HLL列,为HLL独有的聚合方式) 为聚合类型,该类型只对聚合模型(key_desc的type为AGGREGATE KEY)有用,其它模型不需要指定这个。
ENGINE
详情见链接:https://blog.youkuaiyun.com/weixin_43161811/article/details/107236857
本示例中,ENGINE 的类型是 olap,即默认的 ENGINE 类型。在 Doris 中,只有这个 ENGINE 类型是由 Doris 负责数据管理和存储的。
其他 ENGINE 类型,如 mysql、broker、es 等等,本质上只是对外部其他数据库或系统中的表的映射,以保证 Doris 可以读取这些数据。
而 Doris 本身并不创建、管理和存储任何非 olap ENGINE 类型的表和数据。
数据模型
https://cloud.baidu.com/doc/DORIS/s/rkmealnj7
- AGGREGATE KEY :key列相同的记录,value列按照指定的聚合类型进行聚合,适合报表、多维分析等业务场景。
— SUM、MAX、MIN、REPLACE、HLL_UNION(仅用于HLL列,为HLL独有的聚合方式) - UNIQUE KEY:key列相同的记录,value列按导入顺序进行覆盖,适合按key列进行增删改查的点查询业务。
- DUPLICATE KEY:key列相同的记录,同时存在于Palo中,适合存储明细数据或者数据无聚合特性的业务场景。
注意: 除AGGREGATE KEY外,其他key_type在建表时,value列不需要指定聚合类型。
PARTITION,DISTRIBUTED ,PROPERTIES 见ENGINE 的链接