Doris建表注意事项

本文探讨了数据库中的关键概念,包括分组聚合模型中value列的聚合限制,以及Range和List分区的不同列类型支持。重点强调了在分桶模型中,如何确定Key列的选择规则,特别是在Aggregate、Unique和Duplicate模型中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KEY

  1. 想要做key的字段必须是非空字段(NOT NULL)
  2. key字段必须从表的第一个字段开始选择,并且需要连续选择,不可跳跃选择
  3. eg: 表的字段为 a,b,c,d 四个字段,那么key只能选择a、ab、abc、abcd 四种

VALUE

  1. 分组聚合模型中,value列必须设置聚合方式
  2. 字符串类型无法进行sum

分区 KEY

  1. Range 分区支持的列类型:[DATE,DATETIME,TINYINT,SMALLINT,INT,BIGINT,LARGEINT]
  2. List 分区支持的列类型: [BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME, CHAR, VARCHAR]
  3. 分区列可以是多列但必须是KEY 列 

分桶KEY

  1. 分桶列可以是多列,Aggregate 和 Unique 模型必须为 Key 列,Duplicate 模型可以是 key 列和 value 列。分桶列可以和 Partition 列相同或不同。
<think>嗯,用户想在Apache Doris中创主键模型的。首先,我需要回忆一下Doris的数据模型类型。根据之前看到的引用,Doris有明细模型、聚合模型和主键模型。主键模型使用UNIQUE KEY来定义,确保主键的唯一性。 那用户的具体需求是创主键,应该需要指定UNIQUE KEY,并且注意主键列的非空约束。记得主键模型适合需要唯一性约束的场景,比如避免重复数据插入。 接下来,我需要检查语法是否正确。例如,CREATE TABLE语句的结构,ENGINE类型是否为OLAP,还有DUPLICATE KEY和UNIQUE KEY的区别。用户可能容易混淆明细模型和主键模型,所以需要明确说明使用UNIQUE KEY。 另外,主键模型在Doris的新版本中可能有变化,比如是否支持更多特性,或者是否有存储引擎的特定要求。需要确认示例中的语法是否适用最新版本,避免过时的信息。 可能还需要提到主键模型的优势,比如支持upsert操作,或者查询效率上的提升,这样用户能理解为何选择主键模型。同时,注意事项比如主键列不允许更新,必须为非空,这些也是关键点,避免用户在实际使用时出错。 最后,生成相关问题时要围绕主键模型和其他模型的区别、使用场景、性能优化等方面,帮助用户进一步了解相关知识。</think>### 在 Apache Doris 中创主键模型的 在 Apache Doris 中创主键模型的需通过 `UNIQUE KEY` 语法定义主键,并指定存储引擎为 `OLAP`。以下是具体步骤和示例: #### 1. 基础语法结构 ```sql CREATE TABLE [IF NOT EXISTS] 名 ( 列名1 数据类型 NOT NULL, 列名2 数据类型, ... UNIQUE KEY(主键列1, 主键列2, ...) ) ENGINE=OLAP DISTRIBUTED BY HASH(分桶列) BUCKETS 分桶数量 PROPERTIES ("replication_num" = "副本数"); ``` #### 2. 关键说明 - **主键定义**:通过 `UNIQUE KEY` 指定主键列,主键列需满足 `NOT NULL` 约束[^2] - **数据模型特性**: - 主键唯一性约束,自动覆盖相同主键的旧数据(新数据替换旧数据) - 支持实时更新(UPSERT)操作 - 查询时自动选择最新版本数据 #### 3. 创示例 创一个用户行为日志,以 `user_id` 和 `log_time` 为主键: ```sql CREATE TABLE user_log ( user_id BIGINT NOT NULL, log_time DATETIME NOT NULL, action_type VARCHAR(20), device_id VARCHAR(50), UNIQUE KEY(user_id, log_time) ) ENGINE=OLAP DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES ( "replication_num" = "3", "enable_unique_key_merge_on_write" = "true" ); ``` #### 4. 注意事项 - 主键列必须显式声明为 `NOT NULL` - 分桶列议选择高基数字段(如用户ID) - 副本数 `replication_num` 需根据集群规模设置(默认3) - 参数 `enable_unique_key_merge_on_write` 控制是否启用写入时合并优化(议开启)[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值