下一代实时数据库: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”
);
目录
相关文章
|
21天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
5天前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
19天前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
26天前
|
SQL 消息中间件 Java
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
通过兼容 Connector 插件,Apache Doris 能够支持 Trino/Presto 可对接的所有数据源,而无需改动 Doris 的内核代码。
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
|
2月前
|
存储 消息中间件 运维
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。
招联金融基于 Apache Doris 数仓升级:单集群 QPS 超 10w,存储成本降低 70%
|
12天前
|
SQL 存储 缓存
Apache Doris 2.1.6 版本正式发布
2.1.6 版本在 Lakehouse、异步物化视图、半结构化数据管理持续升级改进,同时在查询优化器、执行引擎、存储管理、数据导入与导出以及权限管理等方面完成了若干修复
|
2月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
27天前
|
存储 大数据 数据挖掘
【数据新纪元】Apache Doris:重塑实时分析性能,解锁大数据处理新速度,引爆数据价值潜能!
【9月更文挑战第5天】Apache Doris以其卓越的性能、灵活的架构和高效的数据处理能力,正在重塑实时分析的性能极限,解锁大数据处理的新速度,引爆数据价值的无限潜能。在未来的发展中,我们有理由相信Apache Doris将继续引领数据处理的潮流,为企业提供更快速、更准确、更智能的数据洞察和决策支持。让我们携手并进,共同探索数据新纪元的无限可能!
77 11
|
2月前
|
关系型数据库 MySQL API
Apache Doris集群部署
Apache Doris集群部署
|
2月前
|
SQL Shell API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

推荐镜像

更多