云服务器内容精选

  • 基本概念 在Doris中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column),Row即用户的一行数据,Column用于描述一行数据中不同的字段。Column可以分为Key和Value两大类,从业务角度看,Key和Value可以分别对应维度列和指标列。 Doris的数据模型主要分为以下三类: Aggregate Unique Duplicate 更多Doris数据模型介绍请参见Doris数据模型。在MySQL客户端连接Doris后创建表具体操作请参见快速使用Doris。
  • Aggregate模型 建Aggregate模型表语句示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT 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`, `gender`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ); 当导入数据时,对于Key列相同的行会聚合成一行,而Value列会按照设置的AggregationType进行聚合。 AggregationType目前有以下四种聚合方式: SUM:求和,多行的Value进行累加。 REPLACE:替代,下一批数据中的Value会替换之前导入过的行中的Value。 MAX:保留最大值。 MIN:保留最小值。 表中的列按照是否设置了AggregationType,分为Key (维度列) 和Value(指标列)。例如,没有设置AggregationType的,如user_id、date、age等称为Key,而设置了AggregationType的称为Value。
  • Unique模型 读时合并 这类表没有聚合需求,只需保证主键(user_id和username)的唯一性。且Unique模型的读时合并实现完全可以用Aggregate模型中的REPLACE方式替代。建表示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `username` VARCHAR(50) NOT NULL COMMENT "用户昵称", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `phone` LARGEINT COMMENT "用户电话", `address` VARCHAR(500) COMMENT "用户地址", `register_time` DATETIME COMMENT "用户注册时间" ) UNIQUE KEY(`user_id`, `username`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • 数据模型的选择建议 因为数据模型在建表时就已经确定,且无法修改。所以,选择一个合适的数据模型非常重要。 Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,适合有固定模式的报表类查询场景,但是该模型不适用于count(*)查询。同时因为固定了Value列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语义正确性。 Unique模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。但是无法利用ROLLUP等预聚合带来的查询优势。 对于聚合查询有较高性能需求的用户,推荐使用写时合并实现。 Unique模型仅支持整行更新,如果用户既需要唯一主键约束,又需要更新部分列(例如将多张源表导入到一张Doris表的场景),则可以考虑使用Aggregate模型,同时将非主键列的聚合类型设置为REPLACE_IF_NOT_NULL。 Duplicate适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有Key列)。
  • Duplicate模型 数据既没有主键,也没有聚合需求时,可以使用Duplicate数据模型建表。Duplicate模型数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的DUPLICATE KEY,只是用来指明底层数据按照指定的列进行排序。 建Duplicate模型表语句如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `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 "处理时间" ) DUPLICATE KEY(`timestamp`, `type`, `error_code`) DISTRIBUTED BY HASH(`type`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • Doris使用流程 CloudTable集群模式提供了基于Doris的分布式、可伸缩、全托管的实时 数据仓库 ,它提供了亚秒级返回海量数据查询结果的能力,可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。 Doris集群管理下,用户申请专属集群,按需使用,专属集群是完全物理隔离且不受其他业务影响,方便用户管理。 Doris集群创建成功后,用户可通过使用客户端访问集群:详情请参见使用Doris章节,介绍如何使用Doris集群。 图1 Doris使用流程 表1 Doris使用流程 流程 子任务 说明 详细指导 准备工作 创建用户并授权使用CloudTable 使用CloudTable Doris之前,您需要注册华为云账号并进行实名认证,给新账号授权。 将策略授予用户组,并将用户添加至用户组中从而使用户拥有对应的服务权限。 创建用户并授权使用CloudTable 创建集群 创建Doris集群 使用Doris执行任务前,需要创建一个Doris集群。 创建Doris集群 下载客户端 下载Doris客户端 创建集群后,需要下载客户端并安装客户端,安装客户端后,用户才可以借助SSH工具连接集群。 - 准备弹性云服务 - 如果客户端工具的运行环境为Linux环境,您需要准备一台和Doris集群在相同虚拟私有云的Linux弹性云服务器作为客户端主机。 如果客户端工具的运行环境为Windows环境,您需要准备一台和Doris集群在相同虚拟私有云的Windows弹性云服务器作为客户端主机。 准备弹性云服务 安装客户端 - 将下载的客户端放入E CS ,解压安装客户端。 使用MySQL客户端访问Doris集群 连接集群 - 在ECS安装好MySQL客户端后,可用命令连接集群并进行业务操作。 使用MySQL客户端访问Doris集群 父主题: 使用Doris
  • 操作步骤 以root用户登录待安装MySQL客户端的节点。 执行以下命令查看MySQL客户端依赖库ncurses-libs的版本: rpm -qa | grep ncurses 从https://downloads.mysql.com/archives/community/下载MySQL客户端对应的软件包,建议安装8.x版本,以Red Hat发行版本为例: 如果2的依赖库是6.x建议下载对应OS Version为Red Hat 8的MySQL软件包。 如果2的依赖库是5.x建议下载对应OS Version为Red Hat 7的MySQL软件包。 例如需安装的MySQL 8.0.22客户端需下载如下四个软件包: 将下载的软件包上传到待安装MySQL客户端的节点上。 在上传的文件所在目录执行以下命令,安装MySQL客户端及对应的依赖包: rpm -ivh mysql-community-client-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-plugins-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-common-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.22-1.el8.x86_64.rpm --nodeps --force 执行以下命令查看MySQL客户端的版本: mysql --version MySQL客户端安装成功后,即可访问Doris,详细操作请参见快速使用Doris。