StarRocks实战——特来电StarRocks应用实践

目录

一、为何引入StarRocks

二、主要应用场景

三、封装或扩展

四、集群监控预警

五、总结规划展望

5.1 使用经验分享

5.2 下一步计划

5.2.1 StarRocks集群自动安装

5.2.2 StarRocks集群高可用架构

   原文大佬的这篇StarRocks应用实践有借鉴意义,这里摘抄下来用作学习和知识沉淀。如有侵权,请告知~

一、为何引入StarRocks

       目前公司大数据平台已经引入了多个OLAP技术框架,随着应用的深入,在部分场景下发现这些框架也都由各自的缺点,主要体现在以下几个方面:

      因此期望寻找一款能至少在部分业务场景下解决以上问题的新框架,与现有框架实现互补,理想情况下能替换调部分技术框架,满足功能需求的同时降低技术栈复杂度。

二、主要应用场景

  目前主要将StarRocks应用于业务数据的分析和大屏展示,业务数据经过实时清洗进入StarRocks或通过离线方式定时拉取写入StarRocks,再经过相应扩展分别提供给

StarRocks中,建表是一个关键的操作,它决定了数据如何存储、分区以及分布。以下是一个实战的建表示例,并结合不同配置选项进行详细说明。 ### 建表基本语法 StarRocks的建表语句支持多种高级性,包括分区(Partition)、分桶(Bucket)、副本策略(Replica)等。一个典型的建表语句如下: ```sql CREATE TABLE srtestdb.test_sr ( date_id DATE, site_id INT DEFAULT 10, city_code SMALLINT, user_name VARCHAR(32) DEFAULT '', pv BIGINT DEFAULT 0 ) PARTITION BY RANGE(date_id)( PARTITION p1 VALUES LESS THAN ('2020-01-31'), PARTITION p2 VALUES LESS THAN ('2020-02-29'), PARTITION p3 VALUES LESS THAN ('2020-03-31') ) DUPLICATE KEY(date_id, site_id, city_code) DISTRIBUTED BY HASH(site_id) BUCKETS 10; ``` ### 分区策略(Partition) 使用`PARTITION BY RANGE`可以对表按照指定列的范围进行水平分区。例如,在上面的例子中,`date_id`被划分为三个分区:`p1`、`p2`和`p3`,分别对应不同的日期范围。这种分区方式有助于提高查询性能,尤其是当查询条件包含分区键时[^1]。 ### 分桶策略(Distribution) `DISTRIBUTED BY HASH(site_id) BUCKETS 10`表示该表的数据将根据`site_id`字段进行哈希分桶,共分成10个桶。这种方式可以均匀地将数据分布到多个BE节点上,从而实现并行计算和负载均衡。选择合适的分桶字段对于提升查询性能至关重要,通常建议选择高基数且频繁用于过滤或连接的字段作为分桶字段[^1]。 ### 数据模型(Key Model) 在该示例中使用了`DUPLICATE KEY`模型,表示每行数据都是独立的,不会去重。StarRocks还支持其他几种数据模型,如: - **AGGREGATE KEY**:适用于聚合场景,相同KEY的数据会自动合并。 - **UNIQUE KEY**:保证主键唯一性,适合需要精确更新的场景。 - **DUPLICATE KEY**:默认模型,允许重复记录。 根据业务需求选择合适的数据模型是优化查询性能的重要步骤之一。 ### 字段默认值与约束 可以在定义字段时设置默认值,如`site_id INT DEFAULT 10`、`user_name VARCHAR(32) DEFAULT ''`等。这些默认值在插入新记录时如果没有显式提供值,则会自动填充。此外,还可以通过`NOT NULL`约束来确保某些字段必须有值。 ### 更新操作(适用于StarRocks 3.0+) 从StarRocks 3.0版本开始,支持通过`UPDATE`语句修改表中的数据。例如: ```sql UPDATE table1 SET a2 = t2.b2 FROM table2 t2 WHERE table1.a1 = t2.b1; ``` 需要注意的是,`UPDATE`语句只能使用`JOIN`语法,并且要更新的字段不能带表的别名。此功能仅在3.0及以上版本可用[^2]。 ### 字段增删改 - **增加字段**: ```sql ALTER TABLE student_test ADD COLUMN `name` DOUBLE NULL COMMENT '姓名'; ``` - **删除字段**: ```sql ALTER TABLE student_test DROP COLUMN `name`; ``` - **修改字段**: ```sql ALTER TABLE student_test RENAME COLUMN `name` TO `student_name`; ``` 需要注意的是,字段修改相关的SQL在不同版本中可能存在兼容性问题,建议使用3.3及以上版本以获得更好的支持[^2]。 ### 热数据缓存配置(Data Cache) StarRocks支持通过`datacache.partition_duration`参数控制热数据的有效期。该参数为字符串类型,单位可以是`YEAR`、`MONTH`、`DAY`或`HOUR`。例如,设置为`7 DAY`表示热数据的有效期为7天。如果未指定,默认情况下所有数据都会被缓存。这对于频繁访问的数据非常有用,可以显著提升查询性能[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值