springboot整合doris(doris创建表)

Doris 的数据模型主要分为 3 类:

  • 明细模型(Duplicate Key Model):允许指定的 Key 列重复;适用于必须保留所有原始数据记录的情况
  • 主键模型(Unique Key Model):每一行的 Key 值唯一;可确保给定的 Key 列不会存在重复行
  • 聚合模型(Aggregate Key Model):可根据 Key 列聚合数据;通常用于需要汇总或聚合信息(如总数或平均值)的情况

Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。Doris 的 Key 列是建表语句中指定的列,建表语句中的关键字 unique key 或 aggregate key 或 duplicate key 后面的列就是 Key 列,除了 Key 列剩下的就是 Value 列

创建三种模式数据表

CREATE TABLE customer_duplicate(
    user_id            BIGINT       NOT NULL COMMENT "用户 ID",
    name               VARCHAR(20)           COMMENT "用户姓名",
    age                INT                   COMMENT "用户年龄"
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES (
    "replication_num" = "1"
);
 

CREATE TABLE customer_aggregate (
    user_id            BIGINT       NOT NULL COMMENT "用户 ID",
    name               VARCHAR(20)           COMMENT "用户姓名",
    age                INT SUM                   COMMENT "用户年龄"
)
AGGREGATE KEY(user_id,name)
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES (
    "replication_num" = "1"
);


CREATE TABLE customer_unique(
    user_id            BIGINT       NOT NULL COMMENT "用户 ID",
    name               VARCHAR(20)           COMMENT "用户姓名",
    age                INT                   COMMENT "用户年龄"
)
UNIQUE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10
PROPERTIES (
    "replication_num" = "1"
);

查看创表语句(可以复制出来创表)

SHOW CREATE TABLE customer_unique;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| __internal_schema  |
| information_schema |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> use test;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_test     |
+--------------------+
| customer_aggregate |
| customer_duplicate |
| customer_unique    |
| test_table         |
+--------------------+
4 rows in set (0.00 sec)

mysql> SHOW CREATE TABLE customer_unique;

通过navicat,输入SHOW CREATE TABLE customer_unique;查看到创表语句,然后复制CreateTable的创表语句出来,可以使用

在这里插入图片描述

对于duplicate明细数据模型的增删改查方法注意事项(事务无法回滚,事务控制不了的)

  • 新增可以使用key和value任意匹配,添加成功返回Affected rows: 1
  • 查询可以使用key和value任意匹配
  • 删除可以使用key和value任意匹配,删除成功返回都是Affected rows: 0
  • 不支持更新操作,更新会报Only unique table could be updated

对于aggregate聚合数据模型的增删改查方法注意事项(事务无法回滚,事务控制不了的)

  • 新增可以使用key和value任意匹配,新增的会根据聚合类型进行操作,添加成功返回Affected rows: 1
  • 查询可以使用key和value任意匹配
  • 删除可以使用key和value任意匹配,删除成功返回都是Affected rows: 0
  • 不支持更新操作,更新会报Only unique table could be updated

以下几种聚合方式和 agg_state:
SUM:求和,多行的 Value 进行累加。
REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。
MAX:保留最大值。
MIN:保留最小值。
REPLACE_IF_NOT_NULL:非空值替换。和 REPLACE 的区别在于对于 null 值,不做替换。
HLL_UNION:HLL 类型的列的聚合方式,通过 HyperLogLog 算法聚合。
BITMAP_UNION:BIMTAP 类型的列的聚合方式,进行位图的并集聚合

对于aggregate聚合数据模型创表的高级用法

CREATE TABLE IF NOT EXISTS example_tbl_agg1
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT 

你可能感兴趣的:(doris,spring,boot,数据库,doris)