1. 搭建测试环境
docker pull starrocks/allin1-ubuntu:2.5.4
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd starrocks/allin1-ubuntu:2.5.4
docker ps
2. 简单测试
2.1. 使用mysql client连接
mysql -P 9030 -h 127.0.0.1 -u root --prompt="StarRocks > "
#创建用户
CREATE USER tom@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'tom'@'%' ;
2.2. 测试SQL
# 创建数据库
CREATE DATABASE test;
# 使用数据库
USE test;
# 创建表
CREATE TABLE IF NOT EXISTS sr_member (
sr_id INT,
name STRING,
city_code INT,
reg_date DATE,
verified BOOLEAN
)
PARTITION BY RANGE(reg_date)
(
PARTITION p1 VALUES [('2022-03-13'), ('2022-03-14')),
PARTITION p2 VALUES [('2022-03-14'), ('2022-03-15')),
PARTITION p3 VALUES [('2022-03-15'), ('2022-03-16')),
PARTITION p4 VALUES [('2022-03-16'), ('2022-03-17')),
PARTITION p5 VALUES [('2022-03-17'), ('2022-03-18'))
)
DISTRIBUTED BY HASH(city_code)
PROPERTIES(
"replication_num" = "1"
);
# 插入数据
INSERT INTO sr_member VALUES (001,"tom",100000,"2022-03-13",true), (002,"johndoe",210000,"2022-03-14",false), (003,"maruko",200000,"2022-03-14",true), (004,"ronaldo",100000,"2022-03-15",false), (005,"pavlov",210000,"2022-03-16",false), (006,"mohammed",300000,"2022-03-17",true);
INSERT INTO sr_member WITH LABEL insertDemo VALUES (0010,"张三",100000,"2022-03-13",true), (0012,"李四",210000,"2022-03-14",false);
# 查询数据
SELECT sr_id, name FROM sr_member;
SELECT sr_id, name FROM sr_member PARTITION (p2);
SELECT sr_id, name FROM sr_member PARTITION (p1,p2);
3. 与clickhouse的区别
3.1. 整体区别
StarRocks 与 ClickHouse 是两款基于 MPP 架构的列式数据库管理系统,都可以提供高性能的 OLAP 分析能力。 但是它们在功能、性能和使用场景上也有一些区别。 总结如下:
- StarRocks 与 ClickHouse 最大的区别就在于对于 join 的处理上。 ClickHouse 虽然提供了 join 的语义,但使用上对大表关联的能力支撑较弱,复杂的关联查询经常会引起 OOM。 StarRocks 有更强的 join 能力,可以支持更复杂的查询。 StarRocks 还提供了基于代价的优化器(CBO),可以自动优化 join 的顺序和类型。
- ClickHouse 更适用于大宽表的场景,可以考虑将需要进行关联的表打平成宽表,放入 ClickHouse 中。 StarRocks 对于星型或雪花模型的兼容度更好,可以建立星型或雪花模型应对维度数据的变更。
- StarRocks 可以支持数千用户同时进行分析查询,在部分场景下,高并发能力能够达到万级。 ClickHouse 对高并发的业务并不友好,建议针对大量短查询的分析型场景每秒最多查询100次。
- StarRocks 支持秒级的数据导入和实时更新,提供准实时的服务能力。 ClickHouse 的数据导入和更新相对较慢,更适合静态数据的分析。
- StarRocks 兼容 MySQL 协议和生态,可以使用 MySQL 的客户端和工具访问 StarRocks。 ClickHouse 不完全兼容 MySQL 协议和生态,需要使用专门的客户端和工具访问 ClickHouse。
3.2. SQL加速对比
- 都支持Colocate Join,但两者的写法不同,StarRocks 需要在建表时指定
colocate_with
- 都支持Lateral Join
- 都支持物化视图, 但StarRocks 除支持单表的物化视图外,还支持异步的物化视图
区别点:StarRocks 提供了基于代价的优化器(CBO),可以自动优化 join 的顺序和类型
3.3. 内置函数区别
- ClickHouse的内置函数种类更多,详见下图的对比
- ClickHouse有table function
- 两者都支持窗口函数
- 两者都支持聚合函数
3.4. table engine表引擎区别
ClickHouse 的表引擎目前存在2个缺点:
- ClickHouse 对高并发的业务并不友好,建议针对大量短查询的分析型场景每秒最多查询100次。
- ClickHouse 的数据导入和更新相对较慢,更适合静态数据的分析
3.5. 数据加载
针对数据加载方面,StarRocks 提供的工具更多,不仅能加载离线数据,还集成flink实时加载CDC数据
3.6. 表管理
针对这块,ClickHouse创建分布式表是麻烦的,痛苦的,需要在集群的每一个节点的手工创建本地表、再创建分布式表
但StarRocks这块还像一个MPPDB数据,通过一条create DML即可完成创建分布式表。
另外,StarRocks 提供了更的表管理工具。文章来源:https://www.toymoban.com/news/detail-493327.html
参考
StarRocks deploy_in_docker文章来源地址https://www.toymoban.com/news/detail-493327.html
到了这里,关于数据仓库系列:StarRocks的简单试用及与clickhouse的对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!