ClickHouse01-什么是ClickHouse

  • 什么是ClickHouse?
    • 关于发展历史
    • 存在的优势与劣势
    • 什么是它风靡的原因?

什么是ClickHouse?

官方给出的回答是,它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统

当然这边不得不提到OLAP(Online Analytical Processing)概念的出现

随着大数据的风吹起,传统数据库在险中求生,新生的大数据分析引擎如雨后春笋般出现。

为了更好地利用数据,发挥数据的价值,让静默的数据会"说话",就需要分析引擎具备能够快速读取、分析、产出统计结果的能力,那么大数据量、快速实时查询此外还需要尽可能低成本使用成为市场需求。

与ClickHouse类似的市场产品有

  • Apache Cassandra(特别是配合CQL查询时,用于大规模分布式环境)
  • Apache Kylin(针对大数据OLAP分析而设计,与Hadoop生态集成紧密)
  • IBM Db2 BLU(支持列式存储和内存计算,适用于数据仓库场景)
  • Actian Vector(高性能列式数据库,专为快速数据分析打造)
  • Kyligence(基于Apache Kylin构建的企业级智能数据平台)
  • Apache Pinot(实时 OLAP 数据库,面向低延迟和高并发场景)
  • Druid(专为实时事件流处理和快速聚合查询设计的列式数据库)
  • Vertica(HP开发的列式MPP数据库,后被Micro Focus收购)
  • Presto(开源的分布式SQL查询引擎,适合交互式分析查询)
  • Cloudera Impala(在Hadoop之上提供快速SQL查询功能)
  • Oracle Exadata(Oracle优化的数据库机器,特别针对数据仓库场景
  • Microsoft SQL Server Analysis Services (SSAS) 或 Azure Synapse Analytics
  • Teradata(专长于大规模数据仓库解决方案)
  • Greenplum Database(开源MPP数据仓库系统)

那么ClickHouse有哪些历史,在市场竞争力上又有哪些优劣势呢?

关于发展历史

ClickHouse是由俄罗斯搜索引擎巨头Yandex内部开发的数据存储和分析系统。

该项目始于2008年,其初始设计目标是为了支持Yandex Metrica产品,这是一个Web流量分析服务,需要处理海量数据并实现快速的在线分析查询(OLAP)。随着技术的发展和完善,ClickHouse逐渐成为一个独立且功能强大的列式数据库管理系统。

2016年6月15日,Yandex正式将ClickHouse作为开源项目对外发布

截至2024年,ClickHouse持续保持快速迭代,定期发布新版本,它已成为OLAP领域的重要参与者之一,与Apache Druid、Vertica、Greenplum以及其他现代数据仓库解决方案共同竞争市场,并在许多实际应用案例中展现出卓越的性价比和稳定性。

存在的优势与劣势

正如官网简单介绍的突出几点

优势1:高性能查询处理

特别适合大数据分析场景下的实时或近实时 OLAP 查询。它通过列式存储、向量化执行引擎和高度优化的数据压缩算法,能够快速处理大规模数据集。

优势2:列式存储与高效压缩

数据按列存储,使得在进行聚合计算时仅需读取相关列,大大减少了I/O成本,并且同列数据类型相同的情况下可以实现高倍率的压缩,进一步减少存储空间和提升读取速度。

优势3:分布式架构

分布式无主架构,支持灵活的扩缩容,成为企业生产的重要考量之一。

优势4:SQL兼容性

相较于传统大数据引擎,对SQL的兼容性不足上,ClickHouse 提供了丰富的 SQL 支持,积极与SpringBoot大框架靠拢,能够像查询传统数据库那样查询ClickHouse,降低技术门槛,更快地获得市场的认可。此外针对数据分析需求增加了许多高级特性,比如窗口函数、数组和其他复杂数据类型的支持,以及用于数据预处理的内置聚合函数和表引擎。
在这里插入图片描述

优势5:开源

ClickHouse 是活跃的开源项目,允许用户根据具体业务需求自由定制,这绝对是中小型企业生产选型的重要考量之一。

在这里插入图片描述

对于它的不足也是情理之中

劣势1:不支持事务

它无法做到传统数据库的事务特性,它更适合那些对最终一致性容忍度较高的分析型工作负载。

劣势2:DML的效率不高

正如它的自我介绍,它是适用于OLAP的引擎,数据分析引擎主要面向大数据读进行优化,对于写入、更新、删除的DML操作生效效率都是相对偏低的,不适合于大数据量实时写入的场景。

劣势3:管理、监控与安全性功能不足

总体发展的时间还不长,对于外围的管理、监控与安全性上面稍显不足,但是相信用的人、贡献的人越多,会发展地越来越完善。

什么是它风靡的原因?

OLAP引擎那么多,列式存储的数据库也很多,到底为什么它的受众如此之多?Github star 33.3K

核心的两个原因体现在了官网:查询快 & 占用小

查询快是OLAP技术选型首要考虑的点,不快怎么能做在线实时分析呢?查询快取决于几点:

  1. 列式存储:ClickHouse采用了列式存储格式,相比于传统的行式存储,列式存储在进行大数据分析时具有显著优势。当查询仅涉及部分列时,只需要读取相关的列数据,大大减少了磁盘I/O和内存带宽消耗

  2. 向量化执行引擎:ClickHouse使用向量化执行模型,在处理查询时一次性操作一整批数据,更充分地利用CPU缓存,提高计算效率。

  3. 高度优化的算法与代码库:由C++编写,代码经过深度优化以追求极致性能,包括但不限于高效的压缩算法、索引结构以及函数库等。

  4. 稀疏索引与并发处理能力:支持稀疏索引,采用MPP架构

  5. SQL解析,查询优化,预聚合表和物化视图

占用小则是另一个重要的点。对于传统的存储,冷数据尝尝放起来备份不被使用,占用很多存储介质,一旦要用就还需要经历痛苦的恢复,这也是历史数据用不起来,数据分析受限的点。相比市面其他的分析引擎,它可以在有限的存储内放下更多的数据,数据分析范围扩大,分析结果的准确性和全面性一定会有所提升,那就在有限空间带来更大的价值。占用小则取决于:

  1. 依旧是列式存储,不仅结合查询的特点做到了查询效率的提升,还更有效地利用了数据块的存储,数据在物理上是连续存放的,同类型数据具有更好的局部性规律,更适合进行高效的压缩
  2. 高效的压缩算法:支持多种压缩算法,如LZ4、ZSTD等
  3. 排序和字典编码优化:利用排序和字典编码技术进一步压缩数据量
  4. 数据块压缩:每个数据块独立进行压缩

关于列式和行式DB的写入性能的比对官网有详细的数据,可以移步了解点这里>>


如果喜欢我的文章的话,可以去GitHub上给一个免费的关注吗?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录day24(1)二叉树:最大二叉树(leetcode654)

题目要求: 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构…

【C++】AVL树的两单旋和两双旋

目录 1. 新节点插入较高左子树的左侧---左左:右单旋 代码 2. 新节点插入较高右子树的右侧---右右:左单旋 代码 3. 新节点插入较高左子树的右侧---左右:先左单旋再右单旋 ​编辑 代码 4. 新节点插入较高右子树的左侧---右左:先…

如何选择适合大功率直流电子负载

选择适合大功率直流电子负载时,需要考虑以下几个关键因素: 功率范围:首先,需要确定所需的最大功率范围。大功率直流电子负载通常有不同的功率等级,如1kW、2kW、5kW等。根据实际应用场景和需求,选择合适的功…

CTF题型 php反序列化进阶(1) php原生类 例题和总结

CTF题型 php反序列化进阶(1) php原生文件操作类 例题和总结 文章目录 CTF题型 php反序列化进阶(1) php原生文件操作类 例题和总结特征原理 我们可以通过PHP自身本来就有的类来进行文件操作扫描目录的三个类DirectoryIterator(支持glob://协议)FilesystemIterator(继…

基于springboot的stone音乐播放器的设计与实现

摘 要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,stone音乐播放器展现了其蓬勃生命力和广阔的前景。与此同时,…

使用 CSS 实现毛玻璃效果

在现代 Web 设计中,毛玻璃效果越来越受欢迎。它能够让界面元素看起来更加柔和、朦胧,同时又不会完全遮挡背景内容,给人一种透明而又不失质感的视觉体验。虽然过去实现这种效果需要借助图像编辑软件,但现在只需要几行 CSS 代码,就可以在网页上呈现出令人惊艳的毛玻璃效果。 使用…

小火星露谷管理器 报错:“你似乎没有安装Edge的webview2”

错误 解决办法 你可以到这个地方下载安装webview2 https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?formMT00IS

如何进行汇川PLCH1U-XP系列PLC远程监控?

在工业自动化的浪潮中,可编程逻辑控制器(PLC)作为控制系统的核心,其稳定性和可靠性对于生产流程的顺畅运行至关重要。汇川PLCH1U-XP系列以其高性能和广泛的应用场景,在工业控制领域占有一席之地。然而,对于…

华为机试真题练习汇总(81~90)

华为机试真题练习汇总(81~90) 华为机试真题练习汇总(81~90)HJ81 字符串字符匹配** HJ82 将真分数分解为埃及分数HJ83 二维数组操作HJ84 统计大写字母个数HJ85 最长回文子串HJ86 求最大连续bit数HJ87 密码强度等级* HJ88 扑克牌大小…

2024年 嵌入式系统设计师(中级)

2024年 嵌入式系统设计师全套视频、历年真题及解析、历年真题视频解析、教材、模拟题、重点笔记等资料 1、2023、2022、2021、2020年全套教程精讲视频。 2、嵌入式系统设计师历年真题及解析(综合知识、案例分析)、历年真题视频解析。 3、官方最新信息嵌…

【爬虫实战】使用Python获取花粉俱乐部中Mate60系列的用户发帖数据

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

每日一题 1969 数组元素的最小非零乘积

1969. 数组元素的最小非零乘积 题目描述: 给你一个正整数 p 。你有一个下标从 1 开始的数组 nums ,这个数组包含范围 [1, 2p - 1] 内所有整数的二进制形式(两端都 包含)。你可以进行以下操作 任意 次: 从 nums 中选…

yolov7 gui 轻松通过GUI来实现车辆行人计数

YOLOv7 GUI 是一款用户友好型图形界面应用程序,专为简化基于YOLOv7(You Only Look Once version 7)的目标检测流程而设计。该工具允许用户无需深入掌握命令行操作和复杂编程细节,即可方便快捷地运行YOLOv7模型来检测图像或视频中的…

进制,码制及其表示范围

一 进制 1 常见的进制及其简写 十进制(Dec)二进制(Binary)十六进制(Hex)八进制(Octal) 2 进制之间的相互转换 二 码制 1 常用的码制 三 各码制在定点整数时表示的范围 个人推导…

使用Vscode连接云进行前端开发

使用Vscode连接云进行前端开发 1、ssh连接腾讯云 本人使用的是腾讯云。 然后vscode,用最新版,插件选择remote ssh,或者remote xxx下载过来。 然后点击远程资源管理器,选择SSH通道 然后输入命令如下。 ssh rootip然后输入密码 腾讯云应该…

网络工程师练习题2

网络工程师 将专用IP地址转换为公用IP地址的技术是()。 A.ARPB.DHCPC.UTMD.NAT 【答案】D 【解析】概念题,NAT技术将源地址从内部专用地址转换成可以在外部Internet上路由的全局IP地址。 R1、R2是一个自治系统中采用RIP路由协议的两个相…

社交变革:探索Facebook的魔力

社交媒体平台的崛起已经改变了我们与世界的交互方式,而Facebook作为其中的巨头,其影响力和魔力更是不可忽视。本文将深入探讨Facebook如何引领社交变革,并探索其背后的魔力所在。 连接世界的纽带 Facebook的独特之处在于它作为一个社交平台&…

【SAP-ABAP】CO01保存时错误DBSQL_DUPLICATE_KEY_ERROR

找到该表的主键OBJNR,事务代码SM56中查看当前缓冲到该key的号码段,事务代码SNRO修改对象名称OBJNR编号范围状态。 事务代码SM13查看数据更新记录

从头开始安装vpbx

1、安装Ubuntu18.04系统 进入root用户,(后续操作都需要在root用户中) su root2、下载ubuntu系统中常用的基础软件 openssh-server、vim、net-tools sudo apt-get install -y openssh-server vim net-tools3、下载freeswitch编译和运行的编…

MNN Session 创建执行器(六)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session::resize 之流水线编码&am…
最新文章