Apache Doris 系列: 入门篇-创建数据表

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Apache Doris 系列: 入门篇-创建数据表

本文档我们介绍 Doris 怎么创建表及其他的相关操作。


连接 Doris


我们在成功部署完成 Doris 之后,我们可以通过任意 MySQL 客户端来连接 Doris ,下面我们的示例是通过 MySQL 客户端命令行工具来进行操作。


注意:


这里连接 Doris ,指的是连接 Doris FE,


连接的 IP 地址就是 FE 节点 IP 地址,端口是 FE 的 query_port 默认是9030

 mysql -u<username> -P<query_port> -h<FE_IP>

创建数据库


这里我们使用 root 用户登录,创建一个 test_doris 的数据库

mysql -uroot -P9030 -h127.0.0.1
create database test_doris;

创建成功之后你可以通过 SHOW DATABASES 命令来查看创建好的数据库,这个命令会显示所有已经创建的数据库

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| demo               |
| information_schema |
| test_doris         |
+--------------------+
3 rows in set (0.00 sec)

创建表


我们下面来在新创建的数据库中创建一张表


Doris 提供了多种 数据模型,来满足不同用户场景的使用,下面我们以 明细模型 为例创建 Doris 的表,

建表语法及更多参数请参 SQL手册 CREATE TABLE

CREATE TABLE IF NOT EXISTS test_doris.example_tbl
(
    `timestamp` DATE NOT NULL COMMENT "['0000-01-01', '9999-12-31']",
    `type` TINYINT NOT NULL COMMENT "[-128, 127]",
    `error_code` INT COMMENT "[-2147483648, 2147483647]",
    `error_msg` VARCHAR(300) COMMENT "[1-65533]",
    `op_id` BIGINT COMMENT "[-9223372036854775808, 9223372036854775807]",
    `op_time` DATETIME COMMENT "['0000-01-01 00:00:00', '9999-12-31 23:59:59']",
    `target` float COMMENT "4 字节",
    `source` double COMMENT "8 字节",
    `lost_cost` decimal(12,2) COMMENT "",
    `remark` string COMMENT "1m size",
    `op_userid` LARGEINT COMMENT "[-2^127 + 1 ~ 2^127 - 1]",
    `plate` SMALLINT COMMENT "[-32768, 32767]",
    `iscompleted` boolean COMMENT "true 或者 false"
)
DUPLICATE KEY(`timestamp`, `type`)
DISTRIBUTED BY HASH(`type`) BUCKETS 1
PROPERTIES (
    "replication_allocation" = "tag.location.default: 1"
); 

注意:


  1. 1.Doris 对字段名称是不区分大小写的,对表名是区分大小写的,如果你想忽略大小写,请参照 Doris变量配置 中的 lower_case_table_names 说明。

  2. 2.DISTRIBUTED BY 这个是必选项,而且分桶字段必须在 key 里定义

建表语句说明


  1. 1.字段类型:Doris 提供了丰富的数据类型,上面例子里我们列出了一部分,Doris 还支持 BITMAPHLLARRAY(1.2版本发布)等,具体可以查看 SQL 手册 -> 数据类型 部分

     注意:


  1. 2.我们在建表的时候,尽可能精准的选择数据类型,能使用数字类型的不要使用字符串类型,满足业务需求即可

  2. 3.比如能使 INT 类型的不要是 BIGINT ,能使用 varchar 类型的不要是 String 类型等,这样更能发挥数据库的性能,

  3. 4.排序 Key :Doris 内部的存储是按照我们建表时指定的 Key 进行排序的,就是我们在建表时指定的 DUPLICATE KEY() ,AGGREGATE KEY(),UNIQUE KEY() 中指定的字段,比如上面的建表语句排序 Key 就是我们指定的 timestamptype 两列。

  4. 注意:

  5. 5.我们在建表的排序 Key 必须在表的其他列前面,这块详细的内容请参考 前缀索引

  6. 6.DISTRIBUTED BY 这里给的字段必须在排序 Key 中定义,否则创建表的时候会失败

  7. 7.分区分桶

  8. Doris 表支持 创建分区表,你可以通过 PARTITION 关键字来给表创建分区,分区字段类型支持时间类型(DATE 、DATETIME)及 数字类型,同时你可以创建 动态分区表,动态分区表的字段类型只能是时间类型,动态分区粒度支持小时、天、周、月。

  9. 分桶是通过 DISTRIBUTED 关键字类指定,这个字段必须是在排序 Key 中定义的字段

  10. 分区和分桶的关系:分区和分桶你可以理解成一二级索引,分桶是在分区下面的二级索引

  11. 我们在创建表的时候选择合适的分区及分桶策略对我们的查询分析性能提升非常大的帮助,有关如何选择分区分桶可以参照 数据划分

  12. 8.数据模型

  13. DUPLICATE 关键字指定了这个表的数据模型是明细模型, Key 后面给的列表示当前表的排序 Key,Doris 支持一下三种数据模型

你可以根据三种数据模型的特点结合自己业务的情况进行选择使用。


  1. 1.数据索引

  2. Doris 默认会给我们在建表的时候指定的排序 Key 创建稀疏索引来加速数据查询,同时 Doris 支持 BITMAP索引BloomFilter索引 ,同时 Doris 内部也之内一些智能索引。

  3. 2.ENGINE 类型

  4. Doris 支持多用 ENGINE 类型,默认是 OLAP(Doris内部表),同时我们还支持 odbchudihiveicebergelasticsearch 等,这些都是表示创建的是对应的外部表,具体这块我们可以去查看 生态扩展 -> 扩展表 部分的内容。

查看表信息


我们执行完建表语句,表创建成功之后,我们可以通过下面的命令来查看表的相关信息


查看当前数据库下的所有表信息


SHOW TABLES

mysql> show tables;
+----------------------+
| Tables_in_test_doris |
+----------------------+
| expamle_tbl          |
+----------------------+
1 row in set (0.00 sec)

查看表结构


DESC table_name [ALL]

mysql> desc expamle_tbl all;
+-------------+---------------+-------------+---------------+------+-------+---------+-------+---------+
| IndexName   | IndexKeysType | Field       | Type          | Null | Key   | Default | Extra | Visible |
+-------------+---------------+-------------+---------------+------+-------+---------+-------+---------+
| expamle_tbl | DUP_KEYS      | timestamp   | DATETIME      | No   | true  | NULL    |       | true    |
|             |               | type        | TINYINT       | No   | true  | NULL    |       | true    |
|             |               | error_code  | INT           | Yes  | false | NULL    | NONE  | true    |
|             |               | error_msg   | VARCHAR(300)  | Yes  | false | NULL    | NONE  | true    |
|             |               | op_id       | BIGINT        | Yes  | false | NULL    | NONE  | true    |
|             |               | op_time     | DATE          | Yes  | false | NULL    | NONE  | true    |
|             |               | target      | FLOAT         | Yes  | false | NULL    | NONE  | true    |
|             |               | source      | DOUBLE        | Yes  | false | NULL    | NONE  | true    |
|             |               | lost_cost   | DECIMAL(12,2) | Yes  | false | NULL    | NONE  | true    |
|             |               | remark      | TEXT          | Yes  | false | NULL    | NONE  | true    |
|             |               | op_userid   | LARGEINT      | Yes  | false | NULL    | NONE  | true    |
|             |               | iscompleted | BOOLEAN       | Yes  | false | NULL    | NONE  | true    |
+-------------+---------------+-------------+---------------+------+-------+---------+-------+---------+
12 rows in set (0.01 sec)

查看建表语句


SHOW CREATE TABLE TABLE_NAME

show create table expamle_tbl;

修改表结构


Doris 支持多种 DDL 操作,你可以通过 ALTER TABLE 命令来修改表的 Schema ,包括增加列,修改列类型、删除列、改变列的顺序。


注意:


目前 Doris 不支持修改列名


增加一列

ALTER TABLE expamle_tbl ADD COLUMN TEST_ADD_COL INT DEFAULT '0' AFTER iscompleted;

添加成功之后我们通过 desc 命令可以看到我们新加的列

mysql> desc expamle_tbl;
+--------------+---------------+------+-------+---------+-------+
| Field        | Type          | Null | Key   | Default | Extra |
+--------------+---------------+------+-------+---------+-------+
| timestamp    | DATETIME      | No   | true  | NULL    |       |
| type         | TINYINT       | No   | true  | NULL    |       |
| error_code   | INT           | Yes  | false | NULL    | NONE  |
| error_msg    | VARCHAR(300)  | Yes  | false | NULL    | NONE  |
| op_id        | BIGINT        | Yes  | false | NULL    | NONE  |
| op_time      | DATE          | Yes  | false | NULL    | NONE  |
| target       | FLOAT         | Yes  | false | NULL    | NONE  |
| source       | DOUBLE        | Yes  | false | NULL    | NONE  |
| lost_cost    | DECIMAL(12,2) | Yes  | false | NULL    | NONE  |
| remark       | TEXT          | Yes  | false | NULL    | NONE  |
| op_userid    | LARGEINT      | Yes  | false | NULL    | NONE  |
| iscompleted  | BOOLEAN       | Yes  | false | NULL    | NONE  |
| TEST_ADD_COL | INT           | Yes  | false | 0       | NONE  |
+--------------+---------------+------+-------+---------+-------+
13 rows in set (0.01 sec)

删除一列


我们来删除上面新增的那一列数据

ALTER TABLE expamle_tbl DROP COLUMN TEST_ADD_COL;

查看 Schema Chanage 作业状态


我们可以通过 SHOW ALTER TABLE COLUMN\G; 来看到表结构变更作业的状态信息。


State 是 FINISHED 表示作业完成,新的表结构已经生效。

mysql> SHOW ALTER TABLE COLUMN\G;
*************************** 1\. row ***************************
        JobId: 12015
    TableName: expamle_tbl
   CreateTime: 2022-08-18 14:54:26
   FinishTime: 2022-08-18 14:54:27
    IndexName: expamle_tbl
      IndexId: 12016
OriginIndexId: 12012
SchemaVersion: 1:1978370804
TransactionId: 2003
        State: FINISHED
          Msg:
     Progress: NULL
      Timeout: 86400
1 row in set (0.01 sec)

这个时候就可以通过 DESC TABLE_NAME 来查看变更后的表结构了


取消 Schema Chanage 作业


如果作业长时间没有完成,或者影响到了其他操作,你可以通过下面的命令来取消作业。

具体更多使用请参照 CANCEL ALTER TABLE

CANEL ALTER TABLE COLUMN FROM expamle_tbl


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
7天前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
14天前
|
SQL 消息中间件 Java
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
通过兼容 Connector 插件,Apache Doris 能够支持 Trino/Presto 可对接的所有数据源,而无需改动 Doris 的内核代码。
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
|
21天前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
28天前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
15天前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
61 11
|
1月前
|
存储 数据挖掘 Apache
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
如何在 Docker 环境下快速搭建 Apache Doris + Apache Iceberg 测试 & 演示环境,并展示各功能的使用操作
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
|
21天前
|
关系型数据库 MySQL API
Apache Doris集群部署
Apache Doris集群部署
|
2月前
|
SQL Apache 流计算
Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)
为大家介绍 Lakehouse 使用手册(二)之 Apache Doris + Apache Paimon 搭建指南。
|
2月前
|
SQL JSON Apache
Apache Doris 2.1.5 版本正式发布
在湖仓一体、多表物化视图、半结构化数据分析等方面进行了全面更新及改进,同时在倒排索引、查询优化器、查询引擎、存储管理等 10 余方向上完成了若干问题修复

推荐镜像

更多