当前位置: 首页> 财经> 创投人物 > 新闻热点事件2022_电子商务网站设计心得体会_男生短期培训就业_广州百度seo代理

新闻热点事件2022_电子商务网站设计心得体会_男生短期培训就业_广州百度seo代理

时间:2025/8/28 1:44:19来源:https://blog.csdn.net/u011987014/article/details/145864510 浏览次数:0次
新闻热点事件2022_电子商务网站设计心得体会_男生短期培训就业_广州百度seo代理

Doris系列之基础使用

  • 1 简介
    • 1.1 官方文档
  • 2 doris语法
    • 2.1 建表语法
  • 3 doris模型
    • 3.1 明细模型
      • 3.1.1 示例
    • 3.2 主键模型
      • 3.2.1 读时合并
      • 3.2.2 写时合并-默认
      • 3.2.3 示例
    • 3.3 聚合模型
      • 3.3.1 聚合方式
      • 3.3.2 示例

1 简介

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即时查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即时查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

1.1 官方文档

官方文档:https://doris.apache.org/zh-CN

2 doris语法

2.1 建表语法

CREATE TABLE [IF NOT EXISTS] [database.]table
(column_definition_list[, index_definition_list]
)
[engine_type]
[keys_type]
[table_comment]
[partition_info]
distribution_desc
[rollup_list]
[properties]
[extra_properties]
  • engine_type:包含olap、mysql、broker、hive 几种
  • key_type:
    • DUPLICATE KEY:(默认),其后指定的列为排序列
    • AGGREGATE KEY:其后指定的列为维度列
    • UNIQUE KEY:其后指定的列为主键列
  • partition_info:分区算法,可选
  • distributed:分桶算法,必选
    • hash 分桶语法:DISTRIBUTED BY HASH (k1[,k2 …]) [BUCKETS num|auto] 说明:使用指定的 key 列进行哈希分桶。
    • Random 分桶语法:DISTRIBUTED BY RANDOM [BUCKETS num|auto] 说明:使用随机数进行分桶。
  • properties:
    • replication_allocation:指定表的分区配置

3 doris模型

3.1 明细模型

在明细数据模型中,数据按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。而在建表语句中指定的 DUPLICATE KEY,只是用来指明数据存储按照哪些列进行排序。

3.1.1 示例

-- 建表语句
CREATE TABLE IF NOT EXISTS example_tbl_by_default
(`timestamp` DATETIME NOT NULL COMMENT "日志时间",`type` INT NOT NULL COMMENT "日志类型",`error_code` INT COMMENT "错误码",`error_msg` VARCHAR(1024) COMMENT "错误详细信息",`op_id` BIGINT COMMENT "负责人id",`op_time` DATETIME COMMENT "处理时间"
)
distributed BY HASH(`type`) BUCKETS 1
properties ("replication_allocation" = "tag.location.default: 1"
);
-- 插入数据
INSERT into example_tbl_by_default values(123,1,200,'测试错误',1,'2024-04-28 11:49:45');

在这里插入图片描述
提示:Doris的明细模型与ClickHouse的TinyLog引擎类似,都是记录明细数据。

3.2 主键模型

主键模型能够保证 Key(主键)的唯一性,当用户更新一条数据时,新写入的数据会覆盖具有相同 key(主键)的旧数据

3.2.1 读时合并

在读时合并实现中,用户在进行数据写入时不会触发任何数据去重相关的操作,所有数据去重的操作都在查询或者compaction时进行。因此,读时合并的写入性能较好,查询性能较差,同时内存消耗也较高;

3.2.2 写时合并-默认

在1.2版本中,我们引入了写时合并实现,该实现会在数据写入阶段完成所有数据去重的工作,因此能够提供非常好的查询性能。自2.0版本起,写时合并已经非常成熟稳定, 由于其优秀的查询性能,我们推荐大部分用户选择该实现。自2.1版本,写时合并成为Unique模型的默认实现

3.2.3 示例

-- 创建表
CREATE TABLE IF NOT EXISTS example_tbl_unique
(`user_id` LARGEINT NOT NULL COMMENT "用户id",`username` VARCHAR(50) NOT NULL COMMENT "用户昵称",`city` VARCHAR(20) COMMENT "用户所在城市",`age` SMALLINT COMMENT "用户年龄",`sex` TINYINT COMMENT "用户性别",`phone` LARGEINT COMMENT "用户电话",`address` VARCHAR(500) COMMENT "用户地址",`register_time` DATETIME COMMENT "用户注册时间"
)
UNIQUE KEY(`user_id`)
distributed BY HASH(`user_id`) BUCKETS 1
properties ("replication_allocation" = "tag.location.default: 1"
);
-- 插入数据
INSERT into example_tbl_unique VALUES(1,'张三','成都',22,1,'18478548754','四川省成都市','2024-04-28 11:05:10');
-- 再次插入数据,数据被覆盖更新
INSERT into example_tbl_unique VALUES(1,'张三1','成都1',23,2,'18478548754','四川省成都市1','2024-04-29 11:05:10');

在这里插入图片描述
提示:Doris的主键模型与ClickHouse的ReplacingMergeTree效果一致,只是ClickHouse合并不是实时的,而Doris可以选择配置为写时合并还是读时合并,可参考【ClickHouse系列之ClickHouse使用】

3.3 聚合模型

3.3.1 聚合方式

  • SUM求和,多行的 Value 进行累加
  • 3.3.1.2 REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value
  • MAX:保留最大值
  • MIN:保留最小值
  • REPLACE_IF_NOT_NULL:非空值替换,和 REPLACE 的区别在于对于 null 值,不做替换
  • HLL_UNION:HLL 类型的列的聚合方式,通过 HyperLogLog 算法聚合
  • BITMAP_UNION:BIMTAP 类型的列的聚合方式,进行位图的并集聚合

3.3.2 示例

-- 创建表
CREATE TABLE IF NOT EXISTS example_tbl_agg1
(`user_id` LARGEINT NOT NULL COMMENT "用户id",`date` DATE NOT NULL COMMENT "数据灌入日期时间",`city` VARCHAR(20) COMMENT "用户所在城市",`age` SMALLINT COMMENT "用户年龄",`sex` TINYINT REPLACE_IF_NOT_NULL COMMENT "用户性别", -- 非空替换`last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", -- 后续数据替换之前数据`cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", -- 求和`max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", -- 取最大值`min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" -- 取最小值
)
aggregate KEY(`user_id`, `date`, `city`, `age`)
distributed BY HASH(`user_id`) BUCKETS 1
properties (
"replication_allocation" = "tag.location.default: 1"
);
-- 插入第一次数据
INSERT into example_tbl_agg1 VALUES(1,'2024-04-28 14:33:24','四川',15,1,'2024-04-28 14:33:51',1,10,20);
-- 插入第二次数据 性别、时间、消费等信息变更
INSERT into example_tbl_agg1 VALUES(1,'2024-04-28 14:33:24','四川',15,null,null,2,20,10);
-- 插入第三次数据  所在城市变更
INSERT into example_tbl_agg1 VALUES(1,'2024-04-28 14:33:24','四川省',15,null,null,2,20,10);

在这里插入图片描述
提示:Doris的聚合模型与ClickHouse的AggregatingMergeTree相似,都可以针对对应的列选择指定的合并方法。

关键字:新闻热点事件2022_电子商务网站设计心得体会_男生短期培训就业_广州百度seo代理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: