第2.6章:StarRocks表设计--列级别索引

Starrocks的Bitmap在用户人群中的应用 Starrocks是一个分布式列式存储和分析系统,旨在处理大规模数据集。Bitmap(位图)是Starrocks数据库中一种用于高效存储和处理大规模数据的压缩数据结构。在Starrocks中,Bitmap通常用于解决多维度数据的过滤和聚合问题。它通过使用针对位图的位运算,从而提供了高性能的筛选和聚合操作。Bitmap可以理解为一个由位组成的二进制向量,其中每个位对应于一条数据记录的某个属性。使用Bitmap进行数据过滤和聚合操作时,可以通过位运算(如并、交、异或)高效地对数据进行筛选和组合。 阅读详情

StarRocks支持列级别的索引技术,比如,Bitmap索引适合低基数列,可以快速计算出枚举类型的列满足一定条件的行。Bloomfilter索引用于高基数列,可快速判断数据块中不含所查找值。

在入门阶段,我们不需要研究实现原理,可以先明确它们的使用场景,并尝试实践应用。

1 Bitmap索引

1.1适用场景

非前缀过滤:前面提到过,StarRocks对于表结构中的前几列可以通过前缀索引快速过滤。如果需要对非前置列进行快速过滤,就可以对这些列建立Bitmap索引。

多列过滤:Bitmap可以快速的进行bitwise运算,所以在多列过滤的场景中,也可以考虑对每列分别建立Bitmap索引。

1.2注意事项

使用Bitmap索引前我们需要注意以下几点:

1)对于明细模型,所有列都可以创建Bitmap 索引。聚合模型和更新模型,只有Key列可以建Bitmap索引。主键模型允许为非主键列创建bitmap索引,但需要建表时指定;

2)Bitmap索引,应该在取值为枚举型,取值大量重复,较低基数,并且用作等值条件查询或者可转化为等值条件查询的列上创建;

3)不支持对Float、Double、Decimal类型的列建Bitmap索引;

4)创建索引为异步操作,若需要为表中多列创建索引,需要在一个创建完成后再创建下一个。

1.3索引创建

在2.1章的table01中,我们已经演示了在创建表时创建Bitmap索引:

   user_id INT COMMENT "id of user",

………………………………

    index index01 (user_id) USING BITMAP COMMENT 'bitmap index'

Bitmap索引创建语法为:

INDEX index_name (col_name1[, col_name2, ...]) [USING BITMAP] COMMENT 'xxxxxx'

若我们建表完成后需要为表添加索引(增加Bitmap索引也是进行Schema Change),以table02的channel列为例:

CREATE TABLE IF NOT EXISTS starrocks.table02 (

    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",

    channel INT COMMENT ""

)

DUPLICATE KEY(event_time, event_type,user_id)

DISTRIBUTED BY HASH(user_id) BUCKETS 10;

写法为:

mysql> CREATE INDEX index_name1 ON table02 (channel) USING BITMAP COMMENT 'Bitmap Index';

Query OK, 0 rows affected (0.03 sec)

创建索引为异步操作,我们可以通过下面的命令查看状态:

mysql> SHOW ALTER TABLE COLUMN WHERE TableName = "table02";

当State为FINISHED时,即表示创建完成。

查看table02表Bitmap索引:

mysql> SHOW INDEX FROM table02;

删除channel列的bitmap索引:

mysql> DROP INDEX index_name1 ON table02;

Query OK, 0 rows affected (0.02 sec)

删除索引也为异步操作,还是通过上面的show语句查看状态,当State为FINISHED时,即表示删除完毕。

2 BloomFilter索引

在查询时,BloomFilter可以快速判断某个列中是否存在某个值,如果Bloom Filter判定该列中不存在指定的值,就不需要读取数据文件,进而提升查询效率。

2.1适用场景

以下几种场景时可以考虑创建Bloom Filter 索引:

1)非前缀列过滤;

2)高基数列;

3)查询需对某列高频过滤,且查询条件是in和=(Bloom Filter索引只对in和=过滤查询有加速效果);

4)非Tinyint、Float、Double、DECIMAL类型的列(这些类型暂不支持)。

5)对于明细模型,所有列都可以创建Bloom Filter索引。聚合模型和更新模型,只有Key列可以建Bloom Filter索引。主键模型允许为主键列创建Bloom Filter索引,可在建表时创建,也可以建表后添加。不支持非主键列创建Bloom Filter索引。

2.2索引创建

不同于Bitmap索引,我们需要在表的PROPERTIES中指定需要建BloomFilter索引的列(一列或多列都可以),格式为:

PROPERTIES{"bloom_filter_columns"="c1,c2,c3"}

例如table01的:

mysql> CREATE TABLE table01 (

    user_id INT COMMENT "id of user",

    device_code INT COMMENT "code of device",

    device_price DECIMAL(10,2) COMMENT "",

    event_time DATETIME NOT NULL COMMENT "datetime of event",

    total DECIMAL(18,2) SUM DEFAULT "0" COMMENT " total amount of equipment",

……………………………………

PROPERTIES (

"replication_num" = "1",

"bloom_filter_columns"="event_time"

);

table01的BloomFilter索引查看方式目前为:

mysql> SHOW CREATE TABLE table01;

删除索引,也即将索引列从bloom_filter_columns属性中移除:

mysql> ALTER TABLE table01 SET ("bloom_filter_columns" = "");

删除操作为异步操作,查看进度方法也是:

mysql> SHOW ALTER TABLE COLUMN WHERE TableName = "table01";

修改索引,即为修改表的bloom_filter_columns属性:

mysql> ALTER TABLE table01 SET ("bloom_filter_columns" = "device_code,event_time");

修改操作也为异步,可使用上面的show语句查看状态,当State为FINISHED时即为修改完成。
 

StarRocks最佳实践经验 阅读详情

相关推荐

理解StarRocks表设计

列式存储 稀疏索引 加速数据处理

要啥自行车,一把梭~ 937

StarRocks 中的数据模型和索引使用

数据冷热特征,比如最近几天的数据才需要修改,老的冷数据很少需要修改,比如订单数据,老的订单完成后就不在更新,并且分区是按天进行分区的,那么在导入数据时历史分区的数据的主键就不会被加载,也就不会占用内存了,内存中仅会加载近几天的索引。字节,其内容为数据块中第一行数据的排序列组成的前缀,在查找前缀索引表时可以帮助确定该行数据所在逻辑数据块的起始行号。需要注意的是:由于存储引擎会为主键建立索引,导入数据时会把索引加载到内存中,所以主键模型对内存的要求更高,所以不适合主键模型的场景还是比较多的。

小毕超博客 6843

OLAP是什么?从原理到选型的实战解析

OLAP(联机分析处理)是一种面向复杂数据分析场景的高性能数据处理范式,核心在于通过列式存储、多维索引与向量化计算等底层优化,解决海量数据(TB/PB级)下多维即席查询的性能瓶颈。其技术价值体现在秒级响应、高并发支持与直观下钻能力,广泛应用于经营分析、实时监控、用户画像与风控决策等业务场景。区别于传统SQL在关系数据库中的低效聚合,OLAP引擎如StarRocks、Doris、ClickHouse通过MOLAP预计算、ROLAP即席优化或HOLAP混合策略,实现分析友好性与工程落地性的统一。本文结合十年企业

weixin_34025051的博客 388

StartRocks基础表创建和索引选择

StarRocks 提供四种类型的表,包括明细表、主键表、聚合表和更新表,适用于存储多种业务数据,例如原始数据、实时频繁更新的数据和聚合数据。

qq_34735262的博客 2255

第6.7章:StarRocks查询加速——使用 Bitmap 实现精确去重

第6.7章:StarRocks查询加速——使用 Bitmap 实现精确去重

爱吃辣条的博客 2432

StarRocks从入门到精通系列四:表设计

StarRocks从入门到精通系列四:表设计

zhengzaifeidelushang的博客 960

第2.1章:StarRocks表设计--概述

建表是使用StarRocks非常重要的一环,规范的表设计在某些场景下甚至能使查询性能有数倍的提升。StarRocks的表设计涉及到的知识点主要包括数据模型选择、分区分桶、排序键和前缀索引、列级别索引以及字段类型等等。 StarRocks的建表语句与MySQL比较相似,但也有自己的特点。我们先在StarRocks中创建一个演示用的数据库starrocks(后续所有的建表咱们都在里面进行),然后用比较规范的建表语句创建表table01。这里的建表语句我们只是先把涉及的点覆盖到,后面会逐项展开说明: mys

流木的博客 5507

本地部署静态网站托管平台 Netlify 并实现外部访问(Windows 版本)

Netlify 是一款基于云计算的网站部署和托管平台,专为开发者提供便捷的静态网站和 Jamstack 应用部署服务。它的能力在于将网站构建、部署、托管以及持续集成等流程高度集成,简化了开发和运维的复杂程度。用户无需关心服务器的配置、维护等工作。本文将详细介绍如何在本地安装 Netlify 以及结合路由侠内网穿透实现外网访问 Netlify。

lyxnwct的博客 523

StarRocks(二)表设计

1、表设计 1.1、列式存储 StarRocks的表和关系型数据相同, 由行和列构成. 每行数据对应用户一条记录, 每列数据有相同数据类型. 所有数据行的列数相同, 可以动态增删列. StarRocks中, 一张表的列可以分为维度列(也成为key列)和指标列(value列), 维度列用于分组和排序, 指标列可通过聚合函数SUM, COUNT, MIN, MAX, REPLACE, HLL_UNION, BITMAP_UNION等累加起来. 因此, StarRocks的表也可以认为是...

Yuan_CSDF的博客 3743

线上专利申请(超详细)| 签名确认

在【法人登录】页面点击【证书登录】按钮,弹出证书登录提示框,点击【确 认】按钮,进入到输入证书密码页面,点击【取消】按钮,取消本次操作。企业在提交申请时,需要增加签名,如使用企业账户点击提交,会弹出“法人、代理机构不能签名,请使用经办人签名”,这个时候就需要换个账号了。在需要签名时,将专利官网的登录方式点击法人登录,选择扫码登录,使用移动端经办人账户的扫一扫功能扫描登录。登录完成后,再点击签名,使用移动端扫一扫功能,扫描签名,输入证书号,确认签名,并提交。最后,祝大家的申请都成功!

weixin_62112323的博客 9110

cosmos-curate工业级视频数据预处理引擎/终端用户指南( end-user-guide)

摘要:Cosmos-Curate是一个用于视频和自动驾驶数据处理的开源工具,提供从本地到集群的完整部署方案。文档针对三类用户:终端用户(配置运行现有管道)、开发者(修改/创建管道)和贡献者(改进代码库)。核心功能包括容器化设计(Docker+NVIDIA工具链)、多平台支持(本地/Slurm/云)、集成HuggingFace/NGC模型,以及可扩展的管道架构。使用需满足硬件(如Ampere架构GPU)和软件(Ubuntu22.04+Python3.10)要求,通过CLI工具构建镜像、下载模型并运行示例管道(

qq_45053161的博客 1202

新一代MPP数据库:StarRocks

OLAP数据库(Online Analytical Processing Database,在线分析处理数据库)

zhiyikeji的博客 5169

反向代理的隐形陷阱:为何你的HTTPS请求会降级为HTTP?

本文深入探讨了Nginx反向代理中HTTPS降级为HTTP的隐形陷阱及其安全风险,分析了五大降级诱因,包括协议信息丢失、重定向配置错误等,并提供了完整的防御性配置方案和实战指南,帮助开发者确保Web应用的安全性。

kotlin6android的博客 453

国产开源优秀新一代MPP数据库StarRocks入门之旅-数仓新利器(中)

在上一篇已部署StarRocks集群环境基础上,本篇以列式存储、稀疏索引开始对StarRocks表设计进一步学习,进而理解排序键、物化视图、位图索引、布隆过滤器索引,全面理解加速数据处理,并通过动手实操示例巩固效果

itxiaoshen博客 2112

海康VM加密狗无法识别常见问题排查

海康VM加密狗无法识别常见问题排查

视觉人机器视觉的博客 2705

生存分析机器学习问题

然而,随着人工智能 (AI) 和机器学习 (ML) 的兴起,科学家现在能够开发更复杂的模型,揭示这些数据集中的模式和特征,从而为癌症的生物学、诊断、预后、治疗和预后提供新的见解。病情更重的患者可能接受更强(或更弱)的治疗,导致治疗方案与不良预后(死亡)强相关。数据集中包含失访或研究结束时仍存活的患者(删失数据),他们的真实生存时间未知,仅知道其存活时间不低于观察到的最后一次随访时间。优先选择参数少、结构简单的模型(如带强正则化的线性模型、简单树模型),避免复杂模型(如深度神经网络)。时刻的状态是未知的。

4AM_明朝百晓生 1223

【StarRocks】StarRocks四种数据模型的使用

查询时,主键在聚合之前就能进行过滤,而指标列的过滤通常在多版本聚合之后,因此建议将频繁使用的过滤字段作为主键,在聚合前就能过滤数据,从而提升查询性能。建表时,不支持为指标列创建。在电商订单分析场景中,经常按照日期对订单状态进行统计分析,则可以将经常使用的过滤字段订单创建时间 create_time、订单编号 order_id 作为主键,其余列订单状态 order_state 和订单总价 total_price 作为指标列。:是否持久化主键索引,同时使用磁盘和内存存储主键索引,避免主键索引占用过大内存空间。

weixin_46429290的博客 5417

电磁场仿真:电磁场基础理论_(13).微波技术基础

微波是指频率在300 MHz到300 GHz之间的电磁波。这一频率范围对应的波长为1米到1毫米。

2401_87715305的博客 1317

深入理解 StarRocks Bitmap 索引和 Bitmap 去重

StarRocks 的 Bitmap 索引通过高效的数据结构设计和优化机制,在特定场景下能够显著提升查询性能,尤其适用于低基数列的过滤和统计操作。具体来说,Bitmap 索引通过将数据映射为位图(bit array),每个 bit 对应表中的一个数据行,根据行的值决定 bit 的 0 或 1 状态,从而实现高效的集合运算和过滤操作。StarRocks 中的 Bitmap 索引是一种特殊的数据库索引,其主要作用是优化查询性能,特别是在处理低基数列(如性别、地区等)和高基数列的过滤查询中表现突出。

Mirrorship的博客 1360

PCL SVD分解求变换矩阵【2026最新版】

该算例使用奇异矩阵分解来求变换矩阵,输入的是同名点坐标输出的是变换矩阵。博客长期更新,本文最近一次更新时间为:2026年5月10日。

点云侠的博客 36万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Starrocks中RoaringBitmap杂谈

RoaringBitmap是高效压缩位图,简称RBM,它的原理是将 32bit int(无符号的)类型数据 划分为 2^16 个桶,即2^16=65536个桶,每个桶内用container来存放一个数值的低16位

monkeyboy_tech的博客 1182

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

StarRocks 技术解析:深入理解 Bitmap 索引的设计与应用

StarRocks 技术解析:深入理解 Bitmap 索引的设计与应用 【免费下载链接】starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 ...

gitblog_00341的博客 524

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Starrocks + Hive 】BitMap + 物化视图 实战记录

一文搞定 starrocks bitmap+物化视图提速

weixin_39750695的博客 1013

Starrocks如何添加bitmap索引

【代码】Starrocks如何添加bitmap索引。

u012333203的博客 345
上一篇: Java集合详解7:HashSet,TreeSet与LinkedHashSet
下一篇: 第2.7章:StarRocks表设计--视图
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值