数据仓库系列: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
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'@'%' ;

数据仓库系列:StarRocks的简单试用及与clickhouse的对比_第1张图片

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
  • 两者都支持窗口函数
  • 两者都支持聚合函数
    数据仓库系列:StarRocks的简单试用及与clickhouse的对比_第2张图片

3.4. table engine表引擎区别

ClickHouse 的表引擎目前存在2个缺点:

  • ClickHouse 对高并发的业务并不友好,建议针对大量短查询的分析型场景每秒最多查询100次。
  • ClickHouse 的数据导入和更新相对较慢,更适合静态数据的分析
    数据仓库系列:StarRocks的简单试用及与clickhouse的对比_第3张图片

3.5. 数据加载

针对数据加载方面,StarRocks 提供的工具更多,不仅能加载离线数据,还集成flink实时加载CDC数据

3.6. 表管理

针对这块,ClickHouse创建分布式表是麻烦的,痛苦的,需要在集群的每一个节点的手工创建本地表、再创建分布式表
但StarRocks这块还像一个MPPDB数据,通过一条create DML即可完成创建分布式表。

另外,StarRocks 提供了更的表管理工具。

参考

StarRocks deploy_in_docker

你可能感兴趣的:(数仓,MPPDB,数据仓库,clickhouse,StarRocks,MPPDB)