Skip to content

配置

@DorisTable

indexes

  • 说明: 索引配置,见@DorisIndex
  • 默认值: []

engine

  • 说明: 表引擎,目前仅支持olap
  • 默认值: olap

duplicate_key/unique_key/aggregate_key

  • 说明: 定义明细模型/主键模型/聚合模型的key,三选一
  • 默认值: []
  • 值类型: 可使用字段名,也可以使用列名,如userIduser_id,推荐搭配lombok@FieldNameConstants注解使用
  • 特殊情况: 如果三个配置都为空,将使用主键字段作为unique_key

auto_partition

  • 说明: 是否开启自动分区
  • 默认值: false

auto_partition_time_unit

  • 说明: 自动分区时间单位
  • 默认值: none

partition_by_range/partition_by_list

  • 说明: 手动range/list分区,二选一
  • 默认值: []
  • 值类型: 可使用字段名,也可以使用列名,如userIduser_id,推荐搭配lombok@FieldNameConstants注解使用

partitions

  • 说明: 手动分区配置配置,见@DorisPartition
  • 默认值: []

dynamic_partition

  • 说明: 动态分区配置,见@DorisDynamicPartition
  • 默认值: @DorisDynamicPartition(enable = false)

distributed_by_hash

  • 说明: hash分桶算法使用的列
  • 默认值: []
  • 值类型: 可使用字段名,也可以使用列名,如userIduser_id,推荐搭配lombok@FieldNameConstants注解使用
  • 特殊情况: 如果为空,则指定分桶算法为random,即distributed by random

distributed_buckets

  • 说明: 分桶数量
  • 默认值: -1
  • 特殊情况: -1代表auto,即buckets auto

rollup

  • 说明: 物化视图配置,见@DorisRollup
  • 默认值: []

properties

  • 说明: 建表properties配置
  • 默认值: []
java
@DorisTable(
        properties = {
                "replication_num=1",
                "k1=v1",
                "k2=v2",
                "k3=v3",
        }
)
sql
CREATE TABLE ... (
    
)
...
properties(
    "replication_num"="1",
    "k1"="v1",
    "k2"="v2",
    "k3"="v3"
)

@DorisColumn

在字段上的补充列定义

aggregateFun

  • 说明: 对列定义一个聚合函数
  • 默认值: none

autoIncrementStartValue

  • 说明: 自增起始值
  • 默认值: -1
  • 特殊情况: -1代表不定义起始值

onUpdateCurrentTimestamp

  • 说明: 是否更新为当前时间戳
  • 默认值: false

@DorisIndex

name

  • 说明: 索引名
  • 默认值: 空

column

  • 说明: 索引列
  • 默认值: 空
  • 值类型: 可使用字段名,也可以使用列名,如userIduser_id,推荐搭配lombok@FieldNameConstants注解使用

using

  • 说明: 索引类型
  • 默认值: inverted
  • 值类型: inverted=倒排索引, ngram_bf=NGram BloomFilter索引, bitmap=Bitmap索引

properties

  • 说明: properties配置
  • 默认值: []

comment

  • 说明: 索引注释
  • 默认值: 空

@DorisDynamicPartition

会生成dynamic_partition.xxx=yyyproperties属性

https://doris.apache.org/zh-CN/docs/3.0/table-design/data-partitioning/dynamic-partitioning#动态分区属性参数

@DorisPartition

partition

  • 说明: 分区名称
  • 默认值: 空

values_left_include

  • 说明: range分区values左闭区间
  • 默认值: []

values_right_exclude

  • 说明: range分区values右开区间
  • 默认值: []

values_less_than

  • 说明: range分区values分区上界
  • 默认值: []

from

  • 说明: range批量分区左闭区间
  • 默认值: 空

to

  • 说明: range批量分区右开区间
  • 默认值: 空

interval

  • 说明: range批量分区步长
  • 默认值: -1

unit

  • 说明: range批量分区步长单位
  • 默认值: none

values_in

  • 说明: list分区value,根据list key数量生成values in ((V1, V2,...), (Vn, Vm, ...), (...)...)
  • 默认值: none

例子

java
partition_by_range = {Table2.Fields.k1},
partitions = {
    @DorisPartition(partition = "p1", values_less_than = "2020-02-01"),
    @DorisPartition(partition = "p2", values_less_than = "2020-03-01"),
    @DorisPartition(partition = "p3", values_less_than = "2020-04-01")
},
sql
partition by range(`k1`) (
    partition `p1` values less than ("2020-02-01"), 
    partition `p2` values less than ("2020-03-01"), 
    partition `p3` values less than ("2020-04-01")
)
java
partition_by_range = {Table4.Fields.k1, Table4.Fields.k2, Table4.Fields.k3},
partitions = {
    @DorisPartition(partition = "p1", values_left_include = {"2014-01-01", "10", "200"}, values_right_exclude = {"2014-01-02", "20", "300"}),
    @DorisPartition(partition = "p2", values_left_include = {"2014-06-01", "100", "200"}, values_right_exclude = {"2014-07-01", "100", "300"}),
},
sql
partition by range(`k1`, `k2`, `k3`) (
    partition `p1` values [("2014-01-01", "10", "200"), ("2014-01-02", "20", "300")), 
    partition `p2` values [("2014-06-01", "100", "200"), ("2014-07-01", "100", "300"))
)
java
partition_by_range = {Table13.Fields.k1},
partitions = {
    @DorisPartition(from = "2000-11-14", to = "2021-11-14", interval = 1, unit = DorisTimeUnit.year),
    @DorisPartition(from = "2021-11-14", to = "2022-11-14", interval = 1, unit = DorisTimeUnit.month),
    @DorisPartition(from = "2022-11-14", to = "2023-01-03", interval = 1, unit = DorisTimeUnit.week),
    @DorisPartition(from = "2023-01-03", to = "2023-01-14", interval = 1, unit = DorisTimeUnit.day),
    @DorisPartition(partition = "p_20230114", values_left_include = "2023-01-14", values_right_exclude = "2023-01-15"),
},
sql
partition by range(`k1`) (
    from ("2000-11-14") to ("2021-11-14") interval 1 year, 
    from ("2021-11-14") to ("2022-11-14") interval 1 month, 
    from ("2022-11-14") to ("2023-01-03") interval 1 week, 
    from ("2023-01-03") to ("2023-01-14") interval 1 day, 
    partition `p_20230114` values [("2023-01-14"), ("2023-01-15"))
)
java
partition_by_list = {Table15.Fields.k1, Table15.Fields.k2},
partitions = {
    @DorisPartition(partition = "p1_city", values_in = {"1", "北京", "1", "上海"}),
    @DorisPartition(partition = "p2_city", values_in = {"2", "北京", "2", "上海"}),
    @DorisPartition(partition = "p3_city", values_in = {"3", "北京", "3", "上海"}),
},
sql
partition by list(`k1`, `k2`) (
    partition `p1_city` values in (("1", "北京"), ("1", "上海")), 
    partition `p2_city` values in (("2", "北京"), ("2", "上海")), 
    partition `p3_city` values in (("3", "北京"), ("3", "上海"))
)

@DorisRollup

name

  • 说明: 索引名称
  • 默认值: 空

columns

  • 说明: 索引列
  • 默认值: 空
  • 值类型: 可使用字段名,也可以使用列名,如userId或user_id,推荐搭配lombok的@FieldNameConstants注解使用

properties

  • 说明: 建表properties配置
  • 默认值: []