【大数据】StarRocks的四种数据模型

通过上一篇博客(【大数据】初步认识StarRocks),我们对StarRocks有了一个简单的认识,这边博客呢,我们主要来学习下StarRocks的四种数据模型:明细模型 (Duplicate Key Model)、聚合模型 (Aggregate Key Model)、更新模型 (Unique Key Model) 和主键模型 (Primary Key Model)。这四种数据模型能够支持多种数据分析场景,例如日志分析、数据汇总分析、实时分析等。
补:数据模型描述数据的结构、特性、关系和约束的概念模型,常见的数据模型有层次模型、网络模型和关系模型。

一、明细模型

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

适用场景

  1. 分析原始数据,例如原始日志、原始操作记录等。
  2. 查询方式灵活,不需要局限于预聚合的分析方式。
  3. 导入日志数据或者时序数据,主要特点是旧数据不会更新,只会追加新的数据。

建表语法

CREATE TABLE IF NOT EXISTS detail (event_time DATETIME NOT NULL COMMENT "datetime of event",event_type INT NOT NULL COMMENT "type of event",user_id INT COMMENT "id of user",device_code INT COMMENT "device code",channel INT COMMENT ""
)
DUPLICATE KEY(event_time, event_type)
DISTRIBUTED BY HASH(user_id)
PROPERTIES (
"replication_num" = "3"
);

注意:

  • 建表时必须使用 DISTRIBUTED BY HASH 子句指定分桶键,否则建表失败

  • 排序键:

    • 在建表语句中,排序键必须定义在其他列之前。
    • 排序键可以通过 DUPLICATE KEY 显式定义。本示例中排序键为 event_time 和 event_type。
      如果未指定,则默认选择表的前三列作为排序键。
    • 明细表中的排序键可以为部分或全部维度列。

二、聚合模型

建表时,支持定义排序键和指标列,并为指标列指定聚合函数。当多条数据具有相同的排序键时,指标列会进行聚合。在分析统计和汇总数据时,聚合表能够减少查询时所需要处理的数据,提升查询效率。

适用场景

聚合数据分析

  1. 多为汇总类查询,比如 SUM、MAX、MIN等类型的查询。
  2. 不需要查询原始的明细数据。
  3. 旧数据更新不频繁,只会追加新的数据。

例如:

  • 通过分析网站或 APP 的访问流量,统计用户的访问总时长、访问总次数。
  • 广告厂商为广告主提供的广告点击总量、展示总量、消费统计等。
  • 通过分析电商的全年交易数据,获得指定季度或者月份中,各类消费人群的爆款商品。

建表语法

CREATE TABLE IF NOT EXISTS example_db.aggregate_tbl (site_id LARGEINT NOT NULL COMMENT "id of site",date DATE NOT NULL COMMENT "time of event",city_code VARCHAR(20) COMMENT "city_code of user",pv BIGINT SUM DEFAULT "0" COMMENT "total page views"
)
AGGREGATE KEY(site_id, date, city_code)
DISTRIBUTED BY HASH(site_id)
PROPERTIES (
"replication_num" = "3"
);

注意:

  • 建表时必须使用 DISTRIBUTED BY HASH 子句指定分桶键

  • 排序键
    在建表语句中,排序键必须定义在其他列之前。
    排序键可以通过 AGGREGATE KEY 显式定义。
    排序键必须满足唯一性约束,必须包含全部维度列,并且列的值不会更新。

  • 指标列:通过在列名后指定聚合函数,定义该列为指标列。一般为需要汇总统计的数据。

  • 聚合函数:指标列使用的聚合函数。聚合表支持的聚合函数,请参见 CREATE TABLE。

  • 查询时,排序键在多版聚合之前就能进行过滤,而指标列的过滤在多版本聚合之后。因此建议将频繁使用的过滤字段作为排序键,在聚合前就能过滤数据,从而提升查询性能。

  • 建表时,不支持为指标列创建 BITMAP、Bloom Filter 等索引。

三、更新模型

建表时,支持定义主键和指标列,查询时返回主键相同的一组数据中的最新数据,更新表简化了数据导入流程,能够更好地支撑实时和频繁更新的场景。

适用场景

实时和频繁更新的业务场景,例如分析电商订单。在电商场景中,订单的状态经常会发生变化,每天的订单更新量可突破上亿。

建表语法

CREATE TABLE IF NOT EXISTS orders (create_time DATE NOT NULL COMMENT "create time of an order",order_id BIGINT NOT NULL COMMENT "id of an order",order_state INT COMMENT "state of an order",total_price BIGINT COMMENT "price of an order"
)
UNIQUE KEY(create_time, order_id)
DISTRIBUTED BY HASH(order_id)
PROPERTIES (
"replication_num" = "3"
); 

注意:

  • 建表时必须使用 DISTRIBUTED BY HASH 子句指定分桶键
  • 主键:
    • 在建表语句中,主键必须定义在其他列之前。
    • 主键通过 UNIQUE KEY 定义。
    • 主键必须满足唯一性约束,且列的值不会修改。
    • 设置合理的主键。
  • 建表时,不支持为指标列创建 BITMAP、Bloom Filter 等索引。

四、主键模型

主键表中的主键具有唯一非空约束,用于唯一标识数据行。如果新数据的主键值与表中原数据的主键值相同,则存在唯一约束冲突,此时新数据会替代原数据。主要优势在于支撑实时数据更新的同时,也能保证高效的复杂即席查询性能。

应用场景

  1. 实时对接事务型数据至 StarRocks。
  2. 利用部分列更新轻松实现多流 JOIN

建表语法

CREATE TABLE orders1 (order_id bigint NOT NULL,dt date NOT NULL,user_id INT NOT NULL,good_id INT NOT NULL,cnt int NOT NULL,revenue int NOT NULL
)
PRIMARY KEY (order_id)
DISTRIBUTED BY HASH (order_id)
;

注意:

  • 在建表语句中,主键列必须定义在其他列之前。
  • 主键必须包含分区列和分桶列。
  • 主键列支持以下数据类型:数值(包括整型和布尔)、日期和字符串。
  • 单条主键值编码后的最大长度为 128 字节。
  • 建表后不支持修改主键。
  • 主键列的值不能更新,避免破坏数据一致性。

每种数据模型都有其特定的应用场景和优缺点,用户可以根据自己的业务需求选择合适的数据模型来构建表。在建表时,需要指定数据模型,以便StarRocks能够按照排序键对数据进行排序、处理和存储

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-5-12——吃掉 N 个橘子的最少天数

2024-5-12 题目来源我的题解方法一 深度搜索 超时方法二 动态规划 超内存方法三 灵神题解 题目来源 力扣每日一题;题序:1553 我的题解 方法一 深度搜索 超时 直接使用深度搜索,每次选择一种策略,然后判断最小值 class Solution…

PostgreSQL 修改表结构卡住不动

目录 1 问题2 实现 1 问题 今天遇到的一个问题记录一下,因为系统上的一个改动需要同步脚本至测试库上,具体的脚本内容也很简单,就是修改了某张表的一个字段。但是无论怎么操作都是一直卡住,表的数据量很小就十几条数据所以初步怀疑是表被锁了…

基于EBAZ4205矿板的图像处理:10gamma变换

基于EBAZ4205矿板的图像处理:10gamma变换 项目全部文件 会上传项目全部文件,如果没传,可以私信催我一下,最近太忙了 先看效果 我的项目中的gamma的变换系数为2.2,是会让图像整体变暗的,看右图说明我的ga…

CPVT(ICLR 2023)论文解读

paper:Conditional Positional Encodings for Vision Transformers official implementation:GitHub - Meituan-AutoML/CPVT 存在的问题 位置编码的局限性:传统Transformer中的绝对位置编码(无论是可学习的还是固定的&#xff…

YOLO开发教程:从零开始构建自己的目标检测系统

YOLO开发教程:从零开始构建自己的目标检测系统 目录 引言YOLO简介环境搭建 3.1 安装Python与依赖库3.2 安装深度学习框架(如PyTorch或TensorFlow)3.3 下载YOLO源码 数据准备 4.1 数据集收集与整理4.2 标注工具使用4.3 数据格式转换 模型训练…

【c++进阶(二)】STL之string类的模拟实现

💓博主CSDN主页:Am心若依旧💓 ⏩专栏分类c从入门到精通⏪ 🚚代码仓库:青酒余成🚚 🌹关注我🫵带你学习更多c   🔝🔝 1.前言 本章重点 本章主要介绍一些关键接口的模拟实现&#xff…

Spring MVC 源码分析之 DispatcherServlet#getHandler 方法

前言: 上篇我们分析了 Spring MVC 的工作流程源码,其核心是 DispatcherServlet#doDispatch 方法,这个方法中有获取映射器处理器操作,也就是调用 DispatcherServlet#getHandler 方法,本篇我们重点分析一下 DispatcherS…

0603《哎选》已经稳定运行2年

0603《哎选》已经稳定运行2年 0603《哎选》已经稳定运行2年 介绍 2022年6月3日经过一年的努力,优雅草蜻蜓G系统原生版诞生,本产品应用于《哎选》,经过2年的运营不断的更新迭代,目前产品已经有了一定的用户量,本产品…

MySQL详细安装教程

MySQL详细安装教程 目录: MySQL简介安装步骤 2.1 下载MySQL安装包 2.2 安装MySQL 2.3 配置MySQL 2.4 验证安装示例代码总结MySQL简介 MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司开发。它使用结构化查询语言(SQL&#xff09…

life diagnostics生物标志物检测试剂盒一SPARCL™ Kits

Life Diagnostics公司专注于研发和生产临床前研究以及动物医学诊断相关的ELISA试剂盒、纯化的生物标志物和抗体等产品。产品覆盖心血管疾病、急性期反应、免疫毒性和免疫学标志物等研究领域,主要应用于小鼠、大鼠、兔、猫、狗、猪、猴和鸡等物种。 新产品——SPARCL…

Spark 3.5.1 升级 Java 17 异常 cannot access class sun.nio.ch.DirectBuffer

异常说明 使用Spark 3.5.1 升级到Java17的时候会有一个异常,异常如下 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.htm…

go slice切片的详细知识(包含底层扩容)——2

目录 例子 例3:使用append逐个添加元素和一次性添加多个元素的区别 例4:order[low:high:max] 例5:当容量大于1024的时候,每次扩容真的是1.25倍吗? 本文是对上一篇文章的补充: go slice切片的详细知识&…

离轴磁编案例分享 - 机器人关机模组

客户产品 六轴协作机器人产品 关机模组 关机模组内部结构 项目介绍 客户需求: 需要离轴,优点:可以中空走线,方便线缆从机器人中间穿过去,可以更好得保护好线缆,不需要把线漏在外面,影响使用和产品寿命。目…

最适合上班族和宝妈的兼职副业,一天500多,小众副业项目

近年来,地方特色小吃逐渐受到人们的热烈追捧,尤其是在直播的助力下,许多地方的特色小吃得以走进大众视野,吸引了大量流量和人气。因此,有很大一部分商家和创业者看准了这一商机,纷纷投身于地方特色小吃的制…

怎么把多种内容做成二维码?扫码展现多种内容的制作方法

现在很多的场景下都有不同类型的二维码,用来承载内容为用户提供内容展示,比如图片、视频、文字、文件、地图等等内容,都可以组合起来通过扫码的方式在手机上展示。那么如何制作组合内容的二维码相信有很多的小伙伴都非常的感兴趣。 其实二维…

众汇:外汇狙击指标如何使用?

对于投资者来说,我们各位交易的目的是什么?WeTrade众汇认为那就是盈利。所以来说有一个指标对各位投资者来说那是相当有帮助的。这是因为对于交易者而言,利用这些指标可以快速识别盈利的买卖时机。当我们选择一个指标之后,深入了解其适用范围…

【SpringBoot】打包成Docker镜像后日志输出中文乱码

解决方法 配置文件中对日志的配置添加如下选项 logging:charset:file: UTF-8console: UTF-8注:如果只需要解决控制台乱码,则不需要file这一项

「布道师系列文章」众安保险王凯解析 Kafka 网络通信

作者|众安保险基础平台 Java 开发专家王凯 引言 今天给大家带来的是 Kafka 网路通信主要流程的解析(基于 Apache Kafka 3.7[2])。同时引申分析了业界当前较火的AutoMQ基于Kafka在网络通信层面的优化和提升。 01 如何构建一个基本的请求…

学习笔记(一)——Langchain基本操作与函数

学习笔记(一)——Langchain基本操作与函数 目录 学习笔记(一)——Langchain基本操作与函数基本初始化配置LangsmithLanguage Models 基础指令传递信息OutputParsers 输出解析器chain 链Prompt Templates 提示模板Message History 消息历史记录Managing Conversation History 管…

【机器学习】之 kmean算法原理及实现

基本概念 K-Means 聚类算法的目标是将数据集分成 ( K ) 个簇,使得每个簇内的数据点尽可能相似,而簇与簇之间尽可能不同。这种相似度是通过计算数据点与簇中心的距离来衡量的。 算法步骤 选择簇的数量 ( K ):随机选择 ( K ) 个数据点作为初…