使用Starrocks替换Clickhouse的理由

背景

Starrocks和clickhouse都是非常优秀的OLAP数据库,那么什么情况下使用clickhouse,什么场景下使用starrocks呢,本文就简单列举一下他们的优缺点

理由

首先两者都是列存储,并且都实现了列压缩,所以从存储中两者的压缩比是差不多的,所以对应的I/O消耗也是相差不大的

介绍一下Starrocks计算资源的底层实现:

  • MPP并行查询,可以充分利用多台机器的资源
  • 单机通过pineline并行执行,充分利用单机的多线程资源
  • 单核CPU利用SIMD向量化进行查询
    备注: Starrocks的MPP并行是设计之初就完善好的,他自身支持动态扩展
    对应的clickhouse计算资源的底层实现:
  • 可以通过分布式表的方式利用多台机器的资源
  • 单机利用多核的实现利用的不够充分
  • 单核CPU利用SIMD向量化进行查询
    备注:clickhouse严格来说是单机数据库,他的分布式的实现都需要手动完成
    OK,回到最初的问题,对于Starrocks来说,分布式的实现从设计之初就已经完成,而clickhouse分布式完全是通过手动的方式应用方组装起来的,使用起来非常不方便,我们列举下使用Starrocks替换Clickhouse的几个理由
    1.如果我们的表可以做成中等大小的宽表的,那么使用Starrocks和Clickhouse的实现都无所谓,两者的性能都很出色
    2.starrocks具有主键表,这个是真正拥有去重能力的表,同一个主键的数据合并虽然也是延迟进行(磁盘还是占用),但是查询的时候也会进行过滤获取最新版本的主键记录,所以这是一个真正意义的主键表,而clickhouse没有严格意义的主键表,最接近主键的实现是ReplacingMergeTree,但是他的主键数据合并是延迟进行的,而且在这期间,查询时会有返回新旧的主键记录,需要应用自身进行处理,非常麻烦
    3.Starrocks对于多表join的支持非常完善,starrocks从设计之初就考虑到了多表join的分布式实现的问题,多表join时依然可以充分利用多机/多核/SIMD的并行化能力,所以几乎可以理解成使用starrocks的join和Mysql的join的性能相差不大,而Clickhouse对于join的实现可以用灾难来形容,特别是在分布式表的join的时候,容易出错并且性能大打折扣,当然这里并不是说starrocks的join性能有多好,只是说他可以非常好的支持join的实现
    4.Starrocks的qps请求可以比clickhouse要高很多,原因在于它的FE可以扩展支持更多的QPS,但是底层的BE的瓶颈还是有限的,毕竟BE要进行数据IO和计算,此外,网络资源也是有限的,毕竟join等操作需要进行数据的移动,所以Starrocks可以支持比较高的qps,但是由于他们都是OLAP引擎,不可能支持类似OLTP数据库那样的QPS,充其量也就是使用了类似后台,定时任务等几百到几千左右的qps,不可能用于C端的应用
    5.Starrocks的部分列更新功能,Starrocks可以更新部分列,这对于当一个表的数据是来源于多个业务方,每个业务方只更新自己对应的列的宽表来说非常有用,clickhouse是不支持部分列更新的功能的,这个功能真的很有用
    6.Starrocks的物化视图在查询时是会进行自动改写的,也就是不需要类似clickhouse一样需要应用方根据不同的应用场景选择对应的物化视图

结论

Starrocks替换clickhouse的优点是很多的,几乎每个功能Starrocks都可以几乎无损的替换掉clickhouse,再加上Starrocks拥有clickhouse没有的一些功能,所以使用Starrocks替换clickhouse除了历史数据迁移问题外,几乎不需要犹豫

相关推荐
HackTwoHub8 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t8 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK9 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
TDengine (老段)9 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
S1998_1997111609•X10 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
KmSH8umpK11 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
BU摆烂会噶12 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
l1t13 小时前
DeepSeek总结的DuckLake 入门
数据库
Joseph Cooper13 小时前
RAG 与 AI Agent:智能体真的需要检索增强生成吗?
数据库·人工智能·ai·agent·rag·上下文工程
light blue bird13 小时前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform