1、表数据模型:
数据以表(Table)的形式进行逻辑上的描述。
一张表包括行(Row)和列(Column)。
Row即用户的一行数据,Column用于描述一行数据中不同的字段。
Column可以分为两大类:Key和Value,从业务角度看分别对应,维度列和指标列。
Doris 的Key列是建表语句中指定的列,建表语句中的关键字unique key或aggregate key或duplicate key后面的列就是Key列,除了Key列剩下的就是Value列。
Doris 的数据模型主要分为3类:
明细模型 Duplicate
主键模型 Unique
聚合模型 Aggregate
建表的列类型建议
1、Key列必须在所有Value列之前。
2、尽量选择整型类型。因为整型类型的计算和查找效率远高于字符串。
3、对于不同长度的整型类型的选择原则,遵循够用即可。
4、对于VARCHAR和STRING类型的长度,遵循够用即可。
模型选择建议
因为数据模型在建表时就已经确定,且无法修改。所以,选择一个合适的数据模型非常重要。
1、Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,非常适合有固定模式的报表类查询场景。
但是该模型对 count(*) 查询很不友好。同时因为固定了 Value 列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语意正确性。
2、Unique模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。
但是无法利用ROLLUP等预聚合带来的查询优势。对于聚合查询有较高性能需求的用户,推荐使用自1.2版本加入的写时合并实现。
3、Duplicate适合任意维度的Ad-hoc查询。
虽然同样无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有Key列)
2、分区和分桶(Partition & Tablet)
Doris支持两层的数据划分。
第一层是支持水平分区(Partition),支持Range和List的划分方式。
将数据按

最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



