大数据StarRocks(七):数据表创建

本文详细解释了StarRocks数据库中的表结构,包括列定义(数据类型、聚合类型和默认值)、键的描述(如AGGREGATEKEY、UNIQUEKEY等)、分布式选项(随机/哈希分桶)以及PROPERTIES中的存储介质、自动降冷和副本数设置。此外,还提到了外部表的处理和不同数据模型的特点。
摘要由CSDN通过智能技术生成

(column_definition1[, column_definition2, …]
[, index_definition1[, index_definition2, …]])
[ENGINE = [olap|mysql|elasticsearch|hive|iceberg|hudi|jdbc]]
[key_desc]
[COMMENT “table comment”]
[partition_desc]
[distribution_desc]
[rollup_index]
[ORDER BY (column_definition1,…)]
[PROPERTIES (“key”=“value”, …)]
[BROKER PROPERTIES (“key”=“value”, …)]


参数说明


##### 2.1 表分为内部表和外部表


默认未内部表,3.0版本开始集成外部数据建议使用catalog,外部表的建表方式将被弃用


##### 2.2 列定义


语法:



col_name col_type [agg_type] [NULL | NOT NULL] [DEFAULT “default_value”] [AUTO_INCREMENT] [AS generation_expr]
col_name:列名称


注意,在一般情况下,不能直接创建以以 \_\_op 或 \_\_row 开头命名的列,因为此类列名被 StarRocks 保留用于特殊目的,创建这样的列可能导致未知行为。如需创建这样的列,必须将 FE 动态参数 allow\_system\_reserved\_names 设置为 TRUE。


col\_type:列数据类型


[之前博文数据类型]( )


agg\_type:聚合类型,如果不指定,则该列为 key 列。否则,该列为 value 列。


支持的聚合类型如下:


* SUM、MAX、MIN、REPLACE
* HLL\_UNION(仅用于 HLL列,为 HLL 独有的聚合方式)。
* BITMAP\_UNION(仅用于 BITMAP 列,为 BITMAP 独有的聚合方式)。
* REPLACE\_IF\_NOT\_NULL:这个聚合类型的含义是当且仅当新导入数据是非 NULL 值时会发生替换行为。如果新导入的数据是 NULL,那么 StarRocks 仍然会保留原值。


注意:


BITMAP\_UNION 聚合类型列在导入时的原始数据类型必须是 TINYINT, SMALLINT, INT, BIGINT。  
 如果在建表时 REPLACE\_IF\_NOT\_NULL 列指定了 NOT NULL,那么 StarRocks 仍然会将其转化 NULL,不会向用户报错。用户可以借助这个类型完成「部分列导入」的功能。 该类型只对聚合模型有用 (key\_desc 的 type 为 AGGREGATE KEY)。  
 NULL | NOT NULL:列数据是否允许为 NULL。其中明细模型、聚合模型和更新模型表中所有列都默认指定 NULL。主键模型表的指标列默认指定 NULL,维度列默认指定 NOT NULL。如源数据文件中存在 NULL 值,可以用 \N 来表示,导入时 StarRocks 会将其解析为 NULL。


DEFAULT “default\_value”:列数据的默认值。导入数据时,如果该列对应的源数据文件中的字段为空,则自动填充 DEFAULT 关键字中指定的默认值。支持以下三种指定方式:


DEFAULT current\_timestamp:默认值为当前时间。参见 current\_timestamp() 。  
 DEFAULT <默认值>:默认值为指定类型的值。例如,列类型为 VARCHAR,即可指定默认值为 DEFAULT “beijing”。当前不支持指定 ARRAY、BITMAP、JSON、HLL 和 BOOLEAN 类型为默认值。  
 DEFAULT (<表达式>):默认值为指定函数返回的结果。目前仅支持 uuid() 和 uuid\_numeric() 表达式。  
 AUTO\_INCREMENT:指定自增列。自增列的数据类型只支持 BIGINT,自增 ID 从 1 开始增加,自增步长为 1。有关自增列的详细说明,请参见 AUTO\_INCREMENT。自 v3.0,StarRocks 支持该功能。


AS generation\_expr:指定生成列和其使用的表达式。生成列用于预先计算并存储表达式的结果,可以加速包含复杂表达式的查询。自 v3.1,StarRocks 支持该功能。


##### 2.3 键的描述


语法:



key\_type(k1[,k2 ...])


数据按照指定的 key 列进行排序,且根据不同的 key\_type 具有不同特性。 key\_type 支持以下类型:


AGGREGATE KEY: key 列相同的记录,value 列按照指定的聚合类型进行聚合,适合报表、多维分析等业务场景。  
 UNIQUE KEY/PRIMARY KEY: key 列相同的记录,value 列按导入顺序进行覆盖,适合按 key 列进行增删改查的点查询 (point query) 业务。  
 DUPLICATE KEY: key 列相同的记录,同时存在于 StarRocks 中,适合存储明细数据或者数据无聚合特性的业务场景。  
 默认为 DUPLICATE KEY,数据按 key 列做排序。


除 AGGREGATE KEY 外,其他 key\_type 在建表时,value 列不需要指定聚合类型 (agg\_type)。


##### 2.4 分布式描述​


支持随机分桶(Random bucketing)和哈希分桶(Hash bucketing)。如果不指定分桶信息,则 StarRocks 默认使用随机分桶且自动设置分桶数量。



DISTRIBUTED BY RANDOM BUCKETS


不支持主键模型表、更新模型表和聚合表。  
 不支持指定 Colocation Group。  
 不支持 Spark Load。  
 自 2.5.7 版本起,建表时无需手动指定分桶数量,StarRocks 自动设置分桶数量。



DISTRIBUTED BY HASH (k1[,k2 …]) [BUCKETS num]


如果查询比较复杂,则建议选择高基数的列为分桶键,保证数据在各个分桶中尽量均衡,提高集群资源利用率。  
 如果查询比较简单,则建议选择经常作为查询条件的列为分桶键,提高查询效率。 并且,如果数据倾斜情况严重,您还可以使用多个列作为数据的分桶键,但是建议不超过 3 个列。


建表时,必须指定分桶键。  
 作为分桶键的列,该列的值不支持更新。  
 分桶键指定后不支持修改。  
 自 2.5.7 版本起,建表时无需手动指定分桶数量,StarRocks 自动设置分桶数量。


##### 2.5 PROPERTIES


设置数据的初始存储介质、自动降冷时间和副本数​  
 如果 ENGINE 类型为 OLAP,可以在属性 properties 中设置该表数据的初始存储介质(storage\_medium)、自动降冷时间(storage\_cooldown\_time)或者时间间隔(storage\_cooldown\_ttl)和副本数(replication\_num)。


属性生效范围:当表为单分区表时,以上属性为表的属性。当表划分成多个分区时,以上属性属于每一个分区。并且如果希望不同分区有不同属性,则建表后可以执行 ALTER TABLE … ADD PARTITION 或 ALTER TABLE … MODIFY PARTITION。


设置数据的初始存储介质、自动降冷时间



PROPERTIES (
“storage_medium” = “[SSD|HDD]”,
{ “storage_cooldown_ttl” = " { YEAR | MONTH | DAY | HOUR } "
| “storage_cooldown_time” = “yyyy-MM-dd HH:mm:ss” }
)


目前 StarRocks 提供如下数据自动降冷的相关参数,对比如下:  
 storage\_cooldown\_ttl:表的属性,指定该表中分区自动降冷时间间隔,由系统自动降冷表中到达时间点(时间间隔+分区时间上界)的分区。并且表按照分区粒度自动降冷,更加灵活。  
 storage\_cooldown\_time:表的属性,指定该表的自动降冷时间点(绝对时间)。建表后也可以为不同分区配置不同时间点。  
 storage\_cooldown\_second:FE 静态参数,指定集群范围内所有表的自动降冷时延。  
 表属性 storage\_cooldown\_ttl 或 storage\_cooldown\_time 比 FE 静态参数 storage\_cooldown\_second 优先级高。  
 配置以上参数时,必须指定 "storage\_medium = “SSD”。  
 不配置以上参数时,则不进行自动降冷。  
 执行 SHOW PARTITIONS FROM <table\_name> 查看各个分区的自动降冷时间点。


不支持表达式分区和 List 分区。  
 不支持分区列为非日期类型。  
 不支持多个分区列。  
 不支持主键模型表。  
 设置分区 Tablet 副本数  
 replication\_num:分区 Tablet 副本数。默认为 3。



img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值