Doris vs ClickHouse 企业级实时分析引擎怎么选?

news2025/3/13 12:59:06

在这里插入图片描述

Apache Doris 与 ClickHouse 同作为OLAP领域的佼佼者,在企业级实时分析引擎该如何选择呢。本文将详细介绍 Doris 的优势,并通过直观对比展示两者的关键差异,同时分享一个企业成功用 Doris 替换 ClickHouse 的实践案例,帮助您做出明智的技术决策。

一、为何选择 Doris?

1.1 架构设计

Doris 优势

FE/BE 分离架构:Doris 采用前端(FE)与后端(BE)分离的架构模式。FE 承担 SQL 解析、查询计划生成以及元数据管理的重任。其设计使得 SQL 语句能高效地被解析为可执行的查询计划,并且元数据管理模块保障了数据定义、权限等信息的有序存储与快速检索。

分布式存储与计算:在分布式存储方面,Doris 支持多副本机制,确保数据的高可用性。当某个 BE 节点出现故障时,其他副本节点能立即顶上,保证数据不丢失且查询不受影响。在计算层面,BE 节点间能够协同工作,并行处理查询任务。

弹性伸缩:具备出色的弹性伸缩能力,可通过简单的 SQL 命令轻松实现节点的动态增加或减少。(现在直接可以用Manager集群管理工具,更加方便快捷)

ClickHouse 特点

ClickHouse 架构:LSMTree聚合模型+两层汇聚查询引擎+列式存储,只有一个组件,每个组件都可以进行查询分发和执行
分布式采用Multi-Master多主架构,天然避免单点故障问题

依赖 ZooKeeper:ClickHouse 依赖 ZooKeeper 进行分布式协调。ZooKeeper 负责管理 ClickHouse 集群中各节点的状态信息、数据分片信息以及协调分布式事务等。虽然 ZooKeeper 是成熟的分布式协调工具,但这增加了架构的复杂性。

1.2 查询性能

Doris 优势

查询优化器:拥有强大的查询优化器,采用基于成本的优化(CBO)和基于规则的优化(RBO)相结合的方式。CBO 能根据数据的统计信息,如数据量、数据分布等,估算不同查询执行计划的成本,从而选择最优方案。

向量化执行:支持向量化执行引擎,能充分利用现代 CPU 的 SIMD(单指令多数据)指令集。传统数据库按行处理数据,而向量化执行以列向量为单位处理数据,减少了函数调用开销和数据缓存命中率低的问题。

实时查询:对实时查询的支持十分出色,能在秒级甚至亚秒级响应查询请求。这得益于其高效的存储结构和查询执行机制。

ClickHouse 特点

单表查询优势:在单表查询场景下,尤其是针对大表的聚合查询,ClickHouse 表现出卓越的性能。它通过高效的列存储结构和数据压缩算法,减少了数据读取量。

复杂查询挑战:但在处理复杂的多表关联查询时,ClickHouse 面临一定挑战。由于其查询优化器在多表连接场景下的局限性,往往需要对 SQL 进行复杂的改写才能获得较好的性能。

1.3 存储管理

Doris 优势

列存储格式:采用先进的列存储格式,将同一列的数据连续存储,这种存储方式在查询时能显著减少 I/O 开销。当执行一个仅涉及某几列的查询时,Doris 只需读取相关列的数据,而无需像行存储那样读取整行数据。而且针对点查场景 IOPS ,Doris还支持了行列混存,适用性更加强了。

数据压缩:支持多种高效的数据压缩算法,如 Snappy、LZ4 等。这些压缩算法能在不影响查询性能的前提下,大幅减少数据存储所需的空间。

存储分层:具备存储分层功能,可根据数据的访问频率和重要性,将数据存储在不同类型的存储介质上。例如,将近期频繁访问的热数据存储在高速 SSD 上,而将历史冷数据存储在成本较低的机械硬盘上。

ClickHouse 特点

独特的存储结构:ClickHouse 有其独特的存储结构,如 MergeTree 系列引擎。这种结构针对列式存储进行了优化,在数据写入时,会将数据按一定规则合并成数据块存储。例如,在写入大量用户注册数据时,ClickHouse 会将新数据与已有数据块进行合并操作,以提高数据存储的紧凑性和查询性能。但这种合并操作在高并发写入场景下可能会带来一定的性能影响。

压缩与编码:同样采用数据压缩和编码技术,如 Delta 编码、Run-Length 编码等。这些技术在减少数据存储量方面效果显著,但在某些复杂数据类型和查询场景下,编码和解码过程可能会增加查询处理时间。实际场景中Clickhouse数据压缩比通常可以达到10:1

1.4 使用方式

Doris 优势

SQL 兼容性:高度兼容 MySQL 协议,这使得熟悉 MySQL 的开发人员和数据库管理员能够快速上手 Doris。在使用过程中,可以直接使用 MySQL 客户端工具连接 Doris 集群,执行 SQL 语句。

丰富的数据模型:支持多种数据模型,包括 Unique Key、Duplicate Key 和 Aggregate Key 模型。Unique Key 模型适用于需要保证数据唯一性的场景,如用户表中的用户 ID 字段;Duplicate Key 模型适合日志类数据存储,允许数据重复;Aggregate Key 模型则在聚合查询场景下表现出色,能快速对数据进行预聚合处理。

并发上线无瓶颈:支持高并发,无并发瓶颈限制,100台集群可达10w QPS。

ClickHouse 特点

SQL 语法差异:SQL 语法与传统关系型数据库有一定差异,虽然基本的查询、插入等操作类似,但在一些高级特性和函数使用上有所不同。

数据模型相对单一:主要以 MergeTree 系列引擎为核心,数据模型相对单一。虽然 MergeTree 引擎在许多场景下表现良好,但在处理一些特殊业务需求时,灵活性不如 Doris。

不支持高并发:单条查询语句默认使用机器核数一半的CPU,因此不支持高并发的应用场景,官方建议QPS100。单条过大的查询或者过高的并发都会导致集群资源使用率过高,影响集群稳定性。

1.5 运维难度

Doris 优势

极简化运维:Doris只有FE和BE两种进程,架构简单,带来最大的好处就是运维也会很简单,这两种进程又都能通过一致性协议来保证服务的高可用和数据的高可靠。Doris 单节点故障时候,Doris副本均衡和副本补齐能够自动完成,无需人工操作;

监控与告警:提供全面的监控与告警功能,可实时监测集群的各项性能指标,如 CPU 使用率、内存占用、磁盘 I/O、查询响应时间等。通过配置告警规则,当指标超出正常范围时,系统能及时通过邮件、短信等方式通知运维人员。(Manager更加方便)

版本升级平滑:版本升级过程相对平滑,支持在线滚动升级。在升级过程中,Doris 会逐步将各节点切换到新版本,确保业务不受影响。(使用Manager升级更加方便顺滑)

ClickHouse 特点

手动运维操作多:运维过程中需要较多的手动操作。Clickhouse需要人工维护元数据,好处是数据分布可控。Clickhouse不支持数据的自动均衡,需要用户增加分片或重新建表,大幅增加业务在水平伸缩时的运维压力;重新建表在集群中进行全量数据打散,操作开销过大;

配置参数复杂:拥有大量的配置参数,这些参数相互关联且对集群性能影响较大。例如,在调整 ClickHouse Server 的内存分配参数时,需要同时考虑查询性能、数据写入性能以及操作系统的内存管理等多方面因素,稍有不慎就可能导致集群性能下降甚至出现故障。这要求运维人员对 ClickHouse 的内部机制有深入了解,增加了运维难度。

版本升级风险:版本升级可能存在一定风险,尤其是跨大版本升级时。不同版本之间可能存在兼容性问题,如数据存储格式变化、查询语法变更等,需要在升级前进行充分的测试和数据迁移准备。

1.6 社区活跃度

Doris

活跃的开源社区:Doris 拥有一个活跃的开源社区(尤其是对国内用户来说),众多开发者积极参与其中。社区提供了丰富的文档资源,包括详细的安装指南、使用教程、最佳实践案例以及 API 参考文档等,方便用户快速学习和使用。同时,社区论坛和交流群氛围活跃,用户在使用过程中遇到问题时,能及时得到其他开发者和社区成员的帮助。另外还有专门的社区论坛

ClickHouse

国内社区规模:虽然 ClickHouse 在全球用户量极大,但相较于 Doris,其国内的社区活跃度稍显不足。问题反馈以及解决的及时性并没有Doris有优势。

三、成功案例:有赞从 ClickHouse 迁移至 Doris

以有赞为例,这家领先的电商 SaaS 服务商曾面临以下挑战:

  • 高并发查询瓶颈:在业务高峰期,ClickHouse 在多表关联查询和复杂 Join 场景下响应缓慢,严重影响用户体验。
  • 扩容运维复杂:依赖 ZooKeeper 实现分布式协调,扩容操作繁琐,运维成本居高不下。
  • 数据更新不灵活:缺乏事务性导入支持,部分业务数据更新存在重复或丢失风险。

3.1 迁移动因与方案制定

经过深入调研,有赞决定引入 Apache Doris 统一 OLAP 技术栈,主要目标包括:

  • 提升大表 Join 查询性能:确保在数百亿数据量下依然能保持秒级响应。
  • 降低运维复杂度:实现在线扩缩容和自动故障恢复,简化集群管理。
  • 保障数据一致性:利用 Doris 内置的事务型导入及去重机制,确保数据写入精准无误。

为此,有赞开发了自动化 SQL 建表和查询语句转换工具,将原先的 ClickHouse 语法转换为 Doris 兼容语法,并调整数据导入策略,充分利用 Doris 的 Stream Load 技术。

3.2 迁移效果与收益

  • 查询性能提升:在多表 Join 查询场景中,Doris 平均查询速度提升达 200%,实现秒级响应。
  • 运维效率大幅改善:内置在线扩缩容与自动故障恢复功能,大大降低了运维和开发成本。
  • 数据一致性保障:事务型导入及精准去重机制确保数据准确,避免重复或丢失风险。

有赞的实践充分证明,利用 Doris 替换 ClickHouse 后,不仅查询性能大幅提升,而且在运维和数据更新方面也实现了质的飞跃,为企业带来了显著的业务价值。

四、总结

通过对 Doris 与 ClickHouse 在架构设计、数据导入、复杂查询优化和运维成本等多个维度的对比,我们可以看出:

  • Doris 在易用性、扩展性和数据一致性保障方面具有明显优势。
  • 对于需要实时数据更新和多表关联查询的企业,Doris 无疑是更理想的选择。

有赞的成功案例证明,利用 Doris 替换 ClickHouse 后,企业不仅实现了查询性能的显著提升,还大幅降低了运维成本和数据更新风险。企业在选型时应充分结合自身业务需求和技术团队能力,借助 Doris 的优势打造统一实时数仓,实现数据驱动的商业价值最大化。

欢迎大家在评论区交流更多实践经验,共同探讨实时数据分析的未来趋势!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Multipath】使用(FC)访问远程存储设备

文章目录 一、硬件与环境准备二、扫描设备1.宽幅扫描2.窄幅扫描:根据HCTL去扫3.查看远程端口(第一次扫描后会出现)4.查看FC远程存储设备软链接(块设备)5.根据HCTL查看FC块设备6.根据块设备wwn查找多路径设备 一、硬件与…

豆包大模型 MarsCode AI 刷题专栏 001

001.找单独的数 难度:易 问题描述 在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上…

用Ruby的Faraday库来进行网络请求抓取数据

在 Ruby 中,Faraday 是一个非常强大的 HTTP 客户端库,它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据,处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求,抓取数据并处理响应。 1.…

计算机视觉深度学习入门(2)

卷积运算 Dense层与卷积层的根本区别在于,Dense层从输入特征空间中学到的是全局模式(比如对于MNIST数字,全局模式就是涉及所有像素的模式)​,而卷积层学到的是局部模式(对于图像来说**,局部模式…

计算机毕业设计Python+DeepSeek-R1大模型医疗问答系统 知识图谱健康膳食推荐系统 食谱推荐系统 医疗大数据(源码+LW文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

nginx服务器实现上传文件功能_使用nginx-upload-module模块

目录 conf文件内容如下html文件内容如下上传文件功能展示 conf文件内容如下 #user nobody; worker_processes 1;error_log /usr/logs/error.log; #error_log /usr/logs/error.log notice; #error_log /usr/logs/error.log info;#pid /usr/logs/nginx.pid;even…

ReferenceError: assignment to undeclared variable xxx

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略

随着即时通讯技术的不断发展,IM即时聊天客服系统已经成为企业与客户沟通、解决问题、提升用户体验的重要工具。在选择IM即时聊天客服系统时,企业面临一个重要决策:选择SaaS(软件即服务)解决方案,还是进行私…

深入理解与配置 Nginx TCP 日志输出

一、背景介绍 在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库…

【文心索引】搜索引擎测试报告

目录 一、项目背景 1、互联网信息爆炸的时代背景 2、搜索引擎的应运而生 3、搜索引擎的市场需求和竞争态势 4、搜索引擎项目的意义 二、项目功能 1、基础搜索功能 2、用户交互与体验功能 3、数据索引与爬取功能 三、测试报告 3.1.功能测试 3.1.1.输入测试&#xff…

ReAct论文阅读笔记总结

ReAct:Synergizing Reasoning and Acting in Language Models 背景 最近的研究结果暗示了在自主系统中结合语言推理与交互决策的可能性。 一方面,经过适当Prompt的大型语言模型(LLMs)已经展示了在算术、常识和符号推理任务中通…

InternalError: too much recursion

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

在WSL2-Ubuntu中安装CUDA12.8、cuDNN、Anaconda、Pytorch并验证安装

#记录工作 提示:整个过程最好先开启系统代理,也可以用镜像源,确保有官方发布的最新特性和官方库的完整和兼容性支持。 期间下载会特别慢,需要在系统上先开启代理,然后WSL设置里打开网络模式“Mirrored”,以设置WSL自动…

LLM论文笔记 19: On Limitations of the Transformer Architecture

Arxiv日期:2024.2.26机构:Columbia University / Google 关键词 Transformer架构幻觉问题数学谜题 核心结论 1. Transformer 无法可靠地计算函数组合问题 2. Transformer 的计算能力受限于信息瓶颈 3. CoT 可以减少 Transformer 计算错误的概率&#x…

基于51单片机的智能水箱控制系统proteus仿真

地址:https://pan.baidu.com/s/1zgG90VB5TEA05O2ZkKC3CA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectroni…

虚拟系统实验

实验拓扑 启动虚拟系统 [FW]vsys enable 配置资源类 先查看 配置 创建虚拟系统 [USG6000V1]vsys name vsysa 绑定资源类 [USG6000V1-vsys-vsysa]assign resource-class r1 将接口划入虚拟系统 [USG6000V1-vsys-vsysa]assign interface GigabitEthernet 1/0/1 公共接口 --- 勾…

V90伺服电机初调试

分配设备IP地址 打开博途,将IP地址分配给对应伺服 打开V-ASSISTANT软件,刷新后读取硬件。VASSISTANT软件选择指定伺服,点击设备调试, 在控制模式选项中选择基本定位器控制(EPOS) 在设置PROFINET-选择报文页…

Air780EPM:SIM 卡接口设计指导来啦~

在数字化浪潮中,SIM卡作为通信设备的“身份证”,早已成为人们生活中不可或缺的存在。 以下详细阐述了SIM卡接口如何通过读取卡片信息完成4G网络鉴权,并支持双卡切换功能,使设备能够灵活选择最优网络。这种看似简单的机制&#xf…

DNS云解析有什么独特之处?

在数字化浪潮中,每一次网页点击、视频加载或在线交易背后,都依赖着域名系统(DNS)的高效运转。传统DNS架构的局限性(如单点故障、延迟高、安全脆弱)在云计算时代被彻底颠覆,DNS云解析作为新一代解…

VMware Workstation安装rocky9.5虚拟机

1、在镜像源网站中下载rocky镜像源,下载dvd版(图像,软件全部都有,其他版本还需下载图像),这里我使用的镜像源网站是ubuntu-releases安装包下载_开源镜像站-阿里云 2、找到isos: 3、找x86_64/ 4、…