一、doris的三种数据模型

Apache Doris 提供三种主要的数据模型,以满足不同的业务需求:

Duplicate(重复)模型

适用于需要完整保留原始数据的场景,即使两行数据完全相同也会保留。

适用于日志分析、审计追踪等需要存储详细数据的应用场景。

Aggregate(聚合)模型

适用于需要对数据进行聚合计算的场景,例如报表分析。

对于 Key 列(维度列)相同的行,会聚合成一行,而 Value 列(指标列)会按照指定的聚合方式(如 SUM、MAX、MIN、REPLACE)进行计算。

适用于固定模式的报表类查询,能够减少查询时的计算量,提高查询效率。

Unique(唯一)模型

适用于需要保证 主键唯一性 的场景,例如用户 ID、订单号等。

提供 写时合并(merge-on-write) 和 读时合并(merge-on-read) 两种实现方式,其中写时合并在数据写入阶段完成去重,查询性能更优。

适用于需要精准匹配唯一标识的数据存储场景。

二、doris的建表语句

在 Apache Doris 中,CREATE TABLE 命令用于在当前或指定的数据库中创建新表。一个表可以包含多个列,每个列的定义包括 名称、数据类型,以及以下可选属性:

  • 是否为 主键(KEY)

  • 是否具有 聚合语义

  • 是否为 生成列

  • 是否要求 非空(NOT NULL)

  • 是否为 自增列(AUTO_INCREMENT)

  • 是否在插入时有 默认值

  • 是否在更新时有 默认值

此外,CREATE TABLE 还支持以下两种变体:

CREATE TABLE … AS SELECT(CTAS)

该语法用于创建一个 预填充数据的表,即新表的数据来源于 SELECT 查询的结果。

CREATE TABLE … LIKE

该语法用于创建一个 与现有表结构相同但为空的表,不会复制原表的数据。

在创建表时,还可以指定 分区、索引、分布方式 等属性,以优化数据存储和查询性能。

CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] <table_name>
    (<columns_definition> [ <indexes_definition> ])
    [ ENGINE = <table_engine_type> ]
    [ <key_type> KEY (<key_cols>)
        [ CLUSTER BY (<cluster_cols>) ]
    ]
    [ COMMENT '<table_comment>' ]
    [ <partitions_definition> ]
    [ DISTRIBUTED BY { HASH (<distribute_cols>) | RANDOM }
        [ BUCKETS { <bucket_count> | AUTO } ]
    ]
    [ <roll_up_definition> ]
    [ PROPERTIES (
          -- Table property
          <table_property>
          -- Additional table properties
          [ , ... ]) 
    ]

更多推荐