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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
1天前
|
XML 安全 Java
从零手写实现 apache Tomcat-02-web.xml 入门详细介绍
`web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。
|
1月前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
监控 测试技术 Linux
性能工具之 Apache Bench 入门使用
ab 全称为:apache bench,ab 为小型压力工具,对于在 Linux 中简单压测 HTTP 接口轻巧灵活。
24 1
|
1月前
|
SQL 分布式计算 HIVE
Apache Hudi入门指南(含代码示例)
Apache Hudi入门指南(含代码示例)
61 0
|
1月前
|
运维 Cloud Native Apache
云计算新宠:探索Apache Doris的云原生策略
云计算新宠:探索Apache Doris的云原生策略
36 2
|
1月前
|
存储 数据采集 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍

热门文章

最新文章

推荐镜像

更多