更新时间:2024-07-22 GMT+08:00
分享

Doris快速入门

Doris是一个基于MPP架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。本章节提供从零开始使用Doris操作指导:通过MySQL命令实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。

背景信息

假定这是一张记录用户访问某商品页面行为的表信息,使用MySQL客户端实现业务操作:

  • 创建用户信息表example_tbl。
  • 在用户信息中新增访问时间、城市、性别、停留时长、花费。
  • 根据用户user_id查询用户的基本信息。
  • 业务结束后,删除用户信息表。
    表1 原始数据

    user_id

    date

    city

    age

    sex

    last_visit_date

    cost

    max_dwell_time

    min_dwell_time

    10000

    2017-10-01

    A

    20

    0

    2017-10-01 06:00:00

    20

    10

    10

    10000

    2017-10-01

    A

    20

    0

    2017-10-01 07:00:00

    15

    2

    2

    10001

    2017-10-01

    A

    30

    1

    2017-10-01 17:05:45

    2

    22

    22

    10002

    2017-10-02

    B

    20

    1

    2017-10-02 12:59:12

    200

    5

    5

    10003

    2017-10-02

    C

    32

    0

    2017-10-02 11:20:00

    30

    11

    11

    10004

    2017-10-01

    D

    35

    0

    2017-10-01 10:00:15

    100

    3

    3

    10004

    2017-10-03

    D

    35

    0

    2017-10-03 10:20:22

    11

    6

    6

  • 字段含义说明。
    表2 参数说明

    数据

    说明

    10000

    用户id,每个用户唯一识别id。

    2017-10-01

    数据入库时间,精确到日期。

    A

    用户所在城市。

    20

    用户年龄。

    0

    性别男(1代表女性)。

    2017-10-01 06:00:00

    用户本次访问该页面的时间,精确到秒。

    20

    用户本次访问产生的消费。

    10

    用户本次访问,驻留该页面的时间。

    10

    用户本次访问,驻留该页面的时间(冗余)。

步骤一:购买Doris集群

  1. 登录表格存储服务控制台。
  2. 在控制台左上角选择区域。
  3. 单击“集群管理”进入集群管理界面。
  4. 单击集群管理界面右上角的“购买集群”,进入购买集群页面配置相关参数。
  5. 单击“立即购买”,进入确认规格页面,确认无误,单击“完成”。
  6. 返回集群列表查看创建集群进度,当集群状态为“服务中”时,集群创建成功,详细参见创建Doris集群

步骤二:准备弹性云服务

  1. 购买弹性云服务器。
    1. 登录ECS控制台。
    2. 单击管理控制台左上角的,选择区域。
    3. 单击左侧的服务列表图标,选择“计算 > 弹性云服务器 ECS”。
    4. 单击“购买弹性云服务器”。
    5. 配置弹性云服务器参数。
      1. 选择CPU架构和规格。
        图1 规格图
      2. 选择镜像和磁盘规格。
        图2 选择镜像和磁盘规格
  2. 单击下一步:网络配置。
    1. 选择VPC和安全组。
      图3 VPC图
    2. 选择购买弹性公网IP,公网带宽选择“按流量计费”。
      图4 公网IP图
  3. 单击下一步“高级配置”。

    配置云服务器名称和密码。

    图5 高级配置
  4. 单击下一步“确认配置”,确认配置参数。
    图6 确认配置参数页面
  5. 选择“企业项目”,勾选“协议”,确认配置信息后,单击“立即购买”。
  6. 返回弹性云服务器列表页面,查看弹性云服务器的创建进度。

    当弹性云服务器的状态为“运行中”时,表示创建完成。

步骤三:安装Doris客户端

用户在弹性云服务器里可以通过手动安装客户端的方法安装客户端。

  1. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器。

    具体登录操作步骤请参见《弹性云服务器用户指南》中的“登录Linux弹性云服务器 > SSH密码方式登录”。

  2. 将客户端传输到Linux弹性云服务器。
  3. 登录后执行以下命令解压安装包。
    cd <客户端安装包存放路径>
    tar xzvf 客户端压缩包名

    操作步骤提到的“<客户端安装包存放路径>”请替换为实际的客户端存放路径。

  4. 进入bin目录。
    cd mysql-5.7.22-linux-glibc2.12-x86_64/bin/
  5. 然后执行下面的命令连接Doris集群(为http连接方式,https连接请参见Doris安全通道)。
    ./mysql -uadmin -ppassword -h集群内网地址 -P端口
    • 集群内网地址:集群详情页面中集群访问地址,这里替换成您自己购买的集群的访问地址(FE节点的访问地址,都可以访问集群)。
    • password为您购买集群时设置的密码,如果有特殊符号,特殊符号前面需要\进行转义,如果密码整体用单引号括起来,则特殊字符不需要转义。
    • 端口:FE上的mysql server端口,表3
    表3 自定义安全规则组

    方向

    策略

    协议端口/范围

    类型

    目的/源地址

    用途

    出方向

    允许

    全部

    IPv4/IPv6

    0.0.0.0/0

    出方向放行。

    入方向

    允许

    9030

    CloudTable Doris集群所在的安全组。

    FE上的mysql server端口。

    允许

    8030

    FE上的http server端口。

    允许

    8040

    BE上的http server的端口。

    允许

    8050

    FE上的https server端口

步骤四:执行MySQL命令插入数据

  1. 创建一个数据库。
    CREATE DATABASE demo;
  2. 创建数据表
    • 使用数据库。
      USE demo;
    • 创建表。
      CREATE TABLE IF NOT EXISTS demo.example_tbl
      (
          `user_id` LARGEINT NOT NULL COMMENT "用户id",
          `date` DATE 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 "用户最小停留时间"
      )
      AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
      DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
      PROPERTIES (
          "replication_allocation" = "tag.location.default: 3"
      );
  3. 插入数据。
    INSERT INTO demo.example_tbl (user_id,date,city,age,sex,last_visit_date,cost,max_dwell_time,min_dwell_time) VALUES('10000','2017-10-01','A','20','0','2017-10-01 07:00:00','35','10','2'),('10001','2017-10-01','A','30','1','2017-10-01 17:05:45','2','22','22'),('10002','2017-10-02','B','20','1','2017-10-02 12:59:12','200','5','5'),('10003','2017-10-02','C','32','0','2017-10-02 11:20:12','30','11','11'),('10004','2017-10-01','D','35','0','2017-10-01 10:00:15','100','3','3'),('10004','2017-10-03','D','35','0','2017-10-03 10:20:22','11','6','6');
  4. 查询数据。
    • 我们上面完成了建表,输数据导入,下面我们就可以体验Doris的数据快速查询分析能力。
      mysql> SELECT * FROM demo.example_tbl;                                                                                                                                                                      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      | user_id | date       | city | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      | 10000   | 2017-10-01 | A    |   20 |    0 | 2017-10-01 07:00:00 |   35 |             10 |              2 |
      | 10001   | 2017-10-01 | A    |   30 |    1 | 2017-10-01 17:05:45 |    2 |             22 |             22 |
      | 10002   | 2017-10-02 | B    |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
      | 10003   | 2017-10-02 | C    |   32 |    0 | 2017-10-02 11:20:12 |   30 |             11 |             11 |
      | 10004   | 2017-10-01 | D    |   35 |    0 | 2017-10-01 10:00:15 |  100 |              3 |              3 |
      | 10004   | 2017-10-03 | D    |   35 |    0 | 2017-10-03 10:20:22 |   11 |              6 |              6 |
      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      6 rows in set (0.02 sec)
    • 查看指定城市信息。
      mysql> SELECT * FROM demo.example_tbl where city='B';
      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      | user_id | date       | city | age  | sex  | last_visit_date     | cost | max_dwell_time | min_dwell_time |
      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      | 10002   | 2017-10-02 | B    |   20 |    1 | 2017-10-02 12:59:12 |  200 |              5 |              5 |
      +---------+------------+------+------+------+---------------------+------+----------------+----------------+
      1 row in set (0.10 sec)
  5. 删除数据。
    1. 删除指定行数据。
      mysql> DELETE FROM demo.example_tbl WHERE user_id = 10003;
      Query OK, 0 rows affected (0.04 sec)
      {'label':'delete_77ed273a-a052-4d64-bac0-23916b698003', 'status':'VISIBLE', 'txnId':'39'}
    2. 删除表。
      mysql> DROP TABLE demo.example_tbl;
      Query OK, 0 rows affected (0.01 sec)

相关文档