Apache Doris 分析型数据库(三)Doris实践篇

一、建用户授权操作

Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。

1、创建用户操作

  • Root 用户登录与密码修改

  Doris 内置 root 和 admin 用户,密码默认都为空。启动完 Doris 程序之后,可以通过 root 或 admin 用户连接到 Doris 集群。 使用下面命令即可登录 Doris:

mysql  -h node1 -P9030 -uroot  
登陆后,可以通过以下命令修改 root 密码
SET PASSWORD FOR 'root' = PASSWORD('your_password');
  • 创建新用户
通过下面的命令创建一个普通用户
CREATE USER 'test' IDENTIFIED BY 'test_passwd';
后续登录时就可以通过下列连接命令登录。
mysql -h node1 -P9030 -utest -ptest_passwd

注意:

  新创建的普通用户默认没有任何权限。权限授予可以参考后面的权限授予。

2、创建数据库并赋予权限

  • 创建数据库

  初始可以通过 root 或 admin 用户创建数据库:

CREATE DATABASE test_db;

  注意:

    所有命令都可以使用 'HELP command;' 查看到详细的语法帮助。如:HELP CREATE DATABASE;

    如果不清楚命令的全名,可以使用 "help 命令某一字段" 进行模糊查询。如键入 'HELP CREATE',可以匹配到 CREATE DATABASE, CREATE TABLE, CREATE USER 等命令。

  数据库创建完成之后,可以通过 SHOW DATABASES; 查看数据库信息。

show databases;

  information_schema是为了兼容MySQL协议而存在,实际中信息可能不是很准确,所以关于具体数据库的信息建议通过直接查询相应数据库而获得。

  • 权限赋予

   test_db 创建完成之后,可以通过 root/admin 账户将 test_db 读写权限授权给普通账户,如 test。授权之后采用 test 账户登录就可以操作 test_db 数据库了。

GRANT ALL ON test_db TO test;

二、Doris 建表、数据导入与删除

  可以通过在 mysql-client 中执行以下 help 命令获得更多帮助:

help create table
help load
help mini load
help delete
help alter table

1 、 基本概念

  在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述。

  • Row & Column

    一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。

    Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。从聚合模型的角度来说,Key 列相同的行,会聚合成一行。其中 Value 列的聚合方式由用户在建表时指定。关于更多聚合模型的介绍,可以参阅 Doris 数据模型

  • Tablet & Partition

    在 Doris 的存储引擎中,用户数据被水平划分为若干个数据分片(Tablet,也称作数据分桶)。每个 Tablet 包含若干数据行。各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。

    多个 Tablet 在逻辑上归属于不同的分区(Partition)。一个 Tablet 只属于一个 Partition。而一个 Partition 包含若干个 Tablet。因为 Tablet 在物理上是独立存储的,所以可以视为 Partition 在物理上也是独立。Tablet 是数据移动、复制等操作的最小物理存储单元。

    若干个 Partition 组成一个 Table。Partition 可以视为是逻辑上最小的管理单元。数据的导入与删除,都可以或仅能针对一个 Partition 进行。https://github.com/apache/incubator-doris/wiki/Data-Model,-Rollup-&-Prefix-Index)

2、建表(Create Table)  

使用 CREATE TABLE 命令建立一个表(Table)。更多详细参数可以查看:
HELP CREATE TABLE;
首先切换数据库:
USE test_db;
Doris 的建表是一个同步命令,命令返回成功,即表示建表成功。
可以通过 HELP CREATE TABLE; 查看更多帮助。
CREATE TABLE IF NOT EXISTS test_db.table0
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `timestamp` DATETIME NOT NULL COMMENT "数据灌入的时间戳",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` 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 "用户最小停留时间"
)
ENGINE=olap
AGGREGATE KEY(`user_id`, `date`, `timestamp`, `city`, `age`, `sex`)
PARTITION BY RANGE(`date`)
(
    PARTITION `p202001` VALUES LESS THAN ("2020-02-01"),
    PARTITION `p202002` VALUES LESS THAN ("2020-03-01"),
    PARTITION `p202003` VALUES LESS THAN ("2020-04-01")
)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 16
PROPERTIES
(
    "replication_num" = "3",
    "storage_medium" = "SSD",
    "storage_cooldown_time" = "2021-05-01 12:00:00"
);

3、Doris字段类型

 

  •  TINYINT数据类型

  长度: 长度为1个字节的有符号整型。

  范围: [-128, 127]

  转换: Doris可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成CHAR。

  举例:

select cast(100 as char); 

      

  • SMALLINT数据类型

  长度: 长度为2个字节的有符号整型。

  范围: [-32768, 32767]

  转换: Doris可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,CHAR。

  举例:

select cast(10000 as char);

       

select cast(10000 as tinyint);  

       

  • INT数据类型

  长度: 长度为4个字节的有符号整型。

  范围: [-2147483648, 2147483647]

  转换: Doris可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,CHAR

  举例:

select cast(111111111  as char);

      

  • BIGINT数据类型

  长度: 长度为8个字节的有符号整型。

  范围: [-9223372036854775808, 9223372036854775807]

  转换: Doris可以自动将该类型转换成更大的整型或者浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,INT,CHAR

  举例:

select cast(9223372036854775807 as char);

      

  • LARGEINT数据类型

  长度: 长度为16个字节的有符号整型。

  范围: [-2^127, 2^127-1]

  转换: Doris可以自动将该类型转换成浮点类型。使用CAST()函数可以将其转换成TINYINT,SMALLINT,INT,BIGINT,CHAR

  举例:

select cast(922337203685477582342342 as double);

      

  • FLOAT数据类型

  长度: 长度为4字节的浮点类型。

  范围: -3.40E+38 ~ +3.40E+38。

  转换: Doris会自动将FLOAT类型转换成DOUBLE类型。用户可以使用CAST()将其转换成TINYINT, SMALLINT, INT, BIGINT, STRING, TIMESTAMP。

  • DOUBLE数据类型

  长度: 长度为8字节的浮点类型。

  范围: -1.79E+308 ~ +1.79E+308。

  转换: Doris不会自动将DOUBLE类型转换成其他类型。用户可以使用CAST()将其转换成TINYINT, SMALLINT, INT, BIGINT, STRING, TIMESTAMP。用户可以使用指数符号来描述DOUBLE 类型,或通过STRING转换获得。

  • DECIMAL数据类型

  DECIMAL[M, D]

  保证精度的小数类型。M代表一共有多少个有效数字,D代表小数点后最多有多少数字。M的范围是[1,27],D的范围是[1,9],另外,M必须要大于等于D的取值。默认取值为decimal[10,0]。

  precision: 1 ~ 27

  scale: 0 ~ 9

  • DATE数据类型

  范围: [0000-01-01~9999-12-31]。默认的打印形式是’YYYY-MM-DD’。

  • DATETIME数据类型

  范围: [0000-01-01 00:00:00~9999-12-31 23:59:59]。默认的打印形式是’YYYY-MM-DD HH:MM:SS’。

  • CHAR数据类型

  范围: char[(length)],定长字符串,长度length范围1~255,默认为1。

  转换:用户可以通过CAST函数将CHAR类型转换成TINYINT,,SMALLINT,INT,BIGINT,LARGEINT,DOUBLE,DATE或者DATETIME类型。

  示例:

select cast(1234 as bigint);

      

  • VARCHAR数据类型

  范围: char(length),变长字符串,长度length范围1~65535。

  转换:用户可以通过CAST函数将CHAR类型转换成TINYINT,,SMALLINT,INT,BIGINT,LARGEINT,DOUBLE,DATE或者DATETIME类型。

  示例:

select cast('2011-01-01' as date);

        

select cast('2011-01-01' as datetime);

       

select cast(3423 as bigint);

       

  • HLL数据类型

  范围:char(length),长度length范围1~16385。用户不需要指定长度和默认值、长度根据数据的聚合程度系统内控制,并且HLL列只能通过配套的hll_union_agg、hll_cardinality、hll_hash进行查询或使用 

posted @ 2022-10-17 11:25  人走茶良  阅读(2778)  评论(0编辑  收藏  举报
推荐:华为云