暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

初探 StarRocks 明细模型

ClouGence 2024-01-14
293

什么是 StarRocks?

StarRocks 是 新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的 数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,就可以用 StarRocks 来支持多种数据分析场景的极速分析。

为了满足业务上的分析需求 StarRocks 设计了四种数据模型(明细模型、聚合模型、更新模型、主键模型)它们有各自的特点以适配不同的业务场景。本文将从创建数据模型表开始,配合简洁的案例,来讲解明细模型的用法和特点。

明细模型究竟是啥?

首先我们来看 StarRocks 官方的定义:

细模型是默认的建表模型。如果在建表时未指定任何模型,默认创建的是明细类型的表。 创建表时,支持定义排序键。如果查询的过滤条件包含排序键,则 StarRocks 能够快速地过滤数据,提高查询效率。明细模型适用于日志数据分析等场景,支持追加新数据,不支持修改历史数据。
https://docs.starrocks.io/zh/docs/table_design/table_types/duplicate_key_table/

其次我们来看下 StarRocks 明细模型的标准建表语句与 MySQL 的差异:

MySQL 与 StarRocks 建表语句对比


可以看到除了 StarRocks 特有的关键字之外,两者语法大致是相同的。通过上述内容,我们可以总结以下关于 StarRocks 明细模型的信息:

  • 如果在建表语句中不指定具体模型,也就是省略不写,默认就是 DUPLICATE KEY 明细模型,并且会自动选取前三列作为排序键

  • 指定排序键的作用类似于 MySQL 给列设置普通索引,目的是为了提高查询效率

  • 写入的数据无论是否完全一致,都会插入到数据库中且不支持 Update 语法

以上信息就是明细模型的特点,我们从对比的角度讲,明细模型大致相当于:

MySQL 具有普通索引的无主键表,并且不支持 Update 操作。


怎么建表?


  • 使用 CloudDM添加完 StarRocks 数据源之后,在表视图中右键方式开始新建表操作:


新建表

  • 配置表名等基本信息


编辑表信息

  • 添加列信息,在结构设计器中选择列,然后点击增加按钮新建一个列,在右侧可以配置列的信息

编辑列

  • 设置表的数据模型,点击数据模型,点击添加类型选择“明细模型”,接着在下方选择排序键


编辑数据模型

  • 配置排序键,在右方具体选择列,多个排序键列需要多次点击增加

编辑排序键

  • 点击保存,生成建表语句,可选择立即执行或者复制SQL语句

生成建表语句并执行

怎么写数据?

  • 右键点击新建表,并选择 编辑数据

进入数据编辑功能

  • 准备三行数据,前两行数据完全相同,点击 "+" 符号,填写完成后点击提交,保存这三条数据

插入数据


  • 查看入的数据,发现三条都已写入,验证明细模型的特点:写入的数据无论是否完全一致,都会插入到数据库中。如果选择的是 StarRocks 聚合模型,上面三条数据插入之后就会变为 2 条

查看数据

  • 验证是否支持 Update,双击 “SR_TEST” 库打开新的查询窗口,针对这个表尝试做一次 UPDATE 操作,结果执行报错:

测试 UPDATE 语句


  • CloudDM 可视化数据编辑会直接禁用更改和 StarRocks 数据库约束保持一致

数据库特性良好的兼容


介绍完了 StarRocks 的表结构如何创建以及数据如何写入,那其实际的性能表现如何呢?我们从性能角度浅看下其与 MySQL 的差异。

浅看 StarRocks 和 MySQL 分析性能


通过 min、max、agv、count 这些聚合函数来简单看下两者之间的差异。两个数据库在同样配置的服务器上单机部署,表结构一致,每个表里有一千万行数据并且数据一致。聚合函数不完全代表数据库的分析能力,但可以直观地让我们感受到其中的差异。

查询总数

  • MySQL 表耗时 1106 毫秒

MySQL 使用 count 函数查询总行数

  • StarRocks 耗时 58 毫秒

StarRocks 使用 count 函数查询总行数

查询最小值

  • MySQL 表耗时 6128 毫秒

MySQL 使用 min 函数查询最小值

  • StarRocks 耗时 39 毫秒

StarRocks 使用 min 函数查询最小值

查询最大值

  • MySQL 表耗时 8385 毫秒

MySQL 使用 max 函数查询最大值

  • StarRocks 耗时 40 毫秒

StarRocks 使用 max 函数查询最大值

查询平均值

  • MySQL 表耗时 6430 毫秒

MySQL 使用 avg 函数查询平均值

  • StarRocks 耗时 75 毫秒

StarRocks 使用 avg 函数查询平均值

总结

本文我们简要介绍了 StarRocks 明细模型是什么,以及如何通过 CloudDM 进行可视化建表及数据写入操作,然后我们对比了 min、max、agv、count 四个聚合函数在 MySQL 和 StarRocks 上的性能差异,感受了 StarRocks 的魅力。相信在包含 MySQL 的高性能在线业务系统中,如果存在使用聚合、join等分析场景,叠加 StarRocks 使用将会是一个不错的方案。

文章转载自ClouGence,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论