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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 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
目录
相关文章
|
1月前
|
存储 自然语言处理 BI
|
1月前
|
Apache Java 数据库连接
Apache Doris 2.0.15 版本发布
Apache Doris 2.0.15 版本已于 2024 年 9 月 30 日正式与大家见面,该版本提交了 157 个改进项以及问题修复,进一步提升了系统的性能及稳定性,欢迎大家下载体验。
|
2月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
18天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
6天前
|
SQL 存储 数据处理
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
Apache Doris 物化视图进行了支持。**早期版本中,Doris 支持同步物化视图;从 2.1 版本开始,正式引入异步物化视图,[并在 3.0 版本中完善了这一功能](https://www.selectdb.com/blog/1058)。**
|
13天前
|
SQL 存储 Java
Apache Doris 2.1.7 版本正式发布
亲爱的社区小伙伴们,**Apache Doris 2.1.7 版本已于 2024 年 11 月 10 日正式发布。**2.1.7 版本持续升级改进,同时在湖仓一体、异步物化视图、半结构化数据管理、查询优化器、执行引擎、存储管理、以及权限管理等方面完成了若干修复。欢迎大家下载使用。
|
19天前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
19天前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
|
1月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
1月前
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
54 0

推荐镜像

更多
下一篇
无影云桌面