Apache Doris 分析型数据库(三)Doris实践篇
一、建用户授权操作
Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。
1、创建用户操作
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
- 创建数据库
CREATE DATABASE test_db;
数据库创建完成之后,可以通过 SHOW DATABASES; 查看数据库信息。
show databases;
- 权限赋予
GRANT ALL ON test_db TO test;
二、
可以通过在 mysql-client 中执行以下 help 命令获得更多帮助:
help create table
help load
help mini load
help delete
help alter table
在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述。
-
Row & Column
一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。
Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。从聚合模型的角度来说,Key 列相同的行,会聚合成一行。其中 Value 列的聚合方式由用户在建表时指定。关于更多聚合模型的介绍,可以参阅
-
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字段类型
长度: 长度为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);
范围: [-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数据类型