0


数据仓库系列:StarRocks的简单试用及与clickhouse的对比

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
dockerps

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

# 创建数据库CREATEDATABASE test;# 使用数据库USE test;# 创建表CREATETABLEIFNOTEXISTS sr_member (
    sr_id            INT,
    name             STRING,
    city_code        INT,
    reg_date         DATE,
    verified         BOOLEAN)PARTITIONBY 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')))DISTRIBUTEDBYHASH(city_code)
PROPERTIES("replication_num"="1");# 插入数据INSERTINTO 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);INSERTINTO 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 提供了更的表管理工具。

参考

StarRocks deploy_in_docker


本文转载自: https://blog.csdn.net/penriver/article/details/130046033
版权归原作者 java编程艺术 所有, 如有侵权,请联系我们删除。

“数据仓库系列:StarRocks的简单试用及与clickhouse的对比”的评论:

还没有评论