下一代实时数据库:Apache Doris 【五】数据表的创建

简介: 下一代实时数据库:Apache Doris 【五】数据表的创建

3章 数据表的创建

3.1创建用户和数据库

1)创建 test 用户

mysql -h hadoop1 -P 9030 -uroot -p

create user ‘test’ identified by ‘test’;

2)创建数据库

create database test_db;

3)用户授权

grant all on test_db to test;

3.2基本概念

在 Doris 中,数据都以关系表(Table)的形式进行逻辑上的描述。

3.2.1 Row & Column

一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一

行数据中不同的字段。

⚫ 在默认的数据模型中,Column 只分为排序列和非排序列。存储引擎会按照排序列

对数据进行排序存储,并建立稀疏索引,以便在排序数据上进行快速查找。

⚫ 而在聚合模型中,Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和

Value 可以分别对应维度列和指标列。从聚合模型的角度来说,Key 列相同的行,

会聚合成一行。其中 Value 列的聚合方式由用户在建表时指定。

3.2.2 Partition & Tablet

在 Doris 的存储引擎中,用户数据首先被划分成若干个分区(Partition),划分的规则通

常是按照用户指定的分区列进行范围划分,比如按时间划分。而在每个分区内,数据被进一

步的按照 Hash 的方式分桶,分桶的规则是要找用户指定的分桶列的值进行 Hash 后分桶。

每个分桶就是一个数据分片(Tablet),也是数据划分的最小逻辑单元。

⚫ Tablet 之间的数据是没有交集的,独立存储的。Tablet 也是数据移动、复制等操作

的最小物理存储单元。

⚫ Partition 可以视为是逻辑上最小的管理单元。数据的导入与删除,都可以或仅能针

对一个 Partition 进行。

3.3建表示例

3.3.1建表语法

使用 CREATE TABLE 命令建立一个表(Table)。更多详细参数可以查看:

HELP CREATE TABLE;

建表语法:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [database.]table_name
(column_definition1[, column_definition2, …]
[, index_definition1[, index_definition12,]])
[ENGINE = [olap|mysql|broker|hive]]
[key_desc]
[COMMENT “table comment”];
[partition_desc]
[distribution_desc]
[rollup_index]
[PROPERTIES (“key”=“value”, …)]
[BROKER PROPERTIES (“key”=“value”, …)];

Doris 的建表是一个同步命令,命令返回成功,即表示建表成功。

Doris 支持支持单分区和复合分区两种建表方式。

1)复合分区:既有分区也有分桶

第一级称为 Partition,即分区。用户可以指定某一维度列作为分区列(当前只支持整型

和时间类型的列),并指定每个分区的取值范围。

第二级称为 Distribution,即分桶。用户可以指定一个或多个维度列以及桶数对数据进

行 HASH 分布。

2)单分区:只做 HASH 分布,即只分桶。

3.3.2字段类型

注:聚合模型在定义字段类型后,可以指定字段的 agg_type 聚合类型,如果不指定,

则该列为 key 列。否则,该列为 value 列, 类型包括:SUM、MAX、MIN、REPLACE。

3.3.2建表示例

我们以一个建表操作来说明 Doris 的数据划分。

3.3.2.1 Range Partition

CREATE TABLE IF NOT EXISTS example_db.expamle_range_tbl
(
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 p201701 VALUES LESS THAN (“2017-02-01”),
PARTITION p201702 VALUES LESS THAN (“2017-03-01”),
PARTITION p201703 VALUES LESS THAN (“2017-04-01”)
)
DISTRIBUTED BY HASH(user_id) BUCKETS 16
PROPERTIES
(
“replication_num” = “3”,
“storage_medium” = “SSD”,
“storage_cooldown_time” = “2018-01-01 12:00:00”
);

3.3.2.2 List Partition

CREATE TABLE IF NOT EXISTS example_db.expamle_list_tbl
(
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 LIST(city)
(
PARTITION p_cn VALUES IN (“Beijing”, “Shanghai”, “Hong Kong”),
PARTITION p_usa VALUES IN (“New York”, “San Francisco”),
PARTITION p_jp VALUES IN (“Tokyo”)
)
DISTRIBUTED BY HASH(user_id) BUCKETS 16
PROPERTIES
(
“replication_num” = “3”,
“storage_medium” = “SSD”,
“storage_cooldown_time” = “2018-01-01 12:00:00”
);
目录
相关文章
|
10月前
|
消息中间件 OLAP Kafka
Apache Doris 实时更新技术揭秘:为何在 OLAP 领域表现卓越?
Apache Doris 为何在 OLAP 领域表现卓越?凭借其主键模型、数据延迟、查询性能、并发处理、易用性等多方面特性的表现,在分析领域展现了独特的实时更新能力。
831 9
|
9月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
1117 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
10月前
|
存储 分布式计算 Apache
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
小米通过将 Apache Doris(数据库)与 Apache Paimon(数据湖)深度融合,不仅解决了数据湖分析的性能瓶颈,更实现了 “1+1>2” 的协同效应。在这些实践下,小米在湖仓数据分析场景下获得了可观的业务收益。
1571 9
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
|
10月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
1606 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
9月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
958 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
10月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
600 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
10月前
|
SQL 存储 JSON
Apache Doris 2.1.10 版本正式发布
亲爱的社区小伙伴们,Apache Doris 2.1.10 版本已正式发布。2.1.10 版本对湖仓一体、半结构化数据类型、查询优化器、执行引擎、存储管理进行了若干改进优化。欢迎大家下载使用。
458 5
|
10月前
|
人工智能 自然语言处理 数据挖掘
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
在即将发布的 Apache Doris 4.0 版本中,我们正式引入了一系列 LLM 函数,将前沿的 AI 能力与日常的数据分析相结合,无论是精准提取文本信息,还是对评论进行情感分类,亦或生成精炼的文本摘要,皆可在数据库内部无缝完成。
675 0
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
|
11月前
|
SQL 人工智能 数据挖掘
Apache Doris + MCP:Agent 时代的实时数据分析底座
数据不再是静态的存储对象,而是流动的智能资源;数据库不再是单纯的存储系统,而是智能化的服务平台。Apache Doris 以其在 AI 方向的深度布局和技术创新,正在成为连接数据与智能的重要桥梁。
1919 0
Apache Doris + MCP:Agent 时代的实时数据分析底座
|
10月前
|
存储 人工智能 Apache
ApacheCon 2025中国开源年度报告:Apache Doris 国内第一
在 Apache 基金会管理的近 300 个顶级项目中,Doris 已经成为仅次于 Apache Airflow 的全球第二大影响力项目。
543 0

热门文章

最新文章

推荐镜像

更多