ClickHouse01-什么是ClickHouse

news2024/9/23 9:31:23
  • 什么是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.coloradmin.cn/o/1536442.html

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

相关文章

Nginx 的安装、启动和关闭

文章目录 一、背景说明二、Nginx 的安装2.1、依赖的安装2.2、Nginx 安装2.3、验证安装 三、启动 Nginx3.1、普通启动3.2、如何判断nginx已启动3.3、通过配置启动3.4、设置开机启动 四、关闭 Nginx4.1、优雅地关闭4.2、快速关闭4.3、只关闭主进程4.4、使用nginx关闭服务 五、重启…

IP SSL证书注册流程

使用IP地址申请SSL证书,需要用公网IP地址申请,申请之前确保直接的IP地址可以开放80或者443端口两者选择1个就好,端口不需要一直开放,只要认证的几分钟内开放就可以了,然后IP地址根目录可以上传txt文件。 IP SSL证书认…

【最后2天】京东云游戏云服务器0门槛抽奖送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息:抽奖活动开启!时间:3月17日——3月24日 最高奖品:16G 6个月;32G 3个月 抽奖规则:B站点赞评论关注即可参与抽奖,3.24日公布获奖名单。 抽奖地址: 【首次抽奖】16G、32G免费…

EKMA曲线及大气O3来源解析技术应用

目前,大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染,首先需要了解导致臭氧生成的主要前体物。因此,EKMA曲…

LeetCode:2617. 网格图中最少访问的格子数(优先级队列 Java)

目录 2617. 网格图中最少访问的格子数 题目描述: 实现代码与解析: 优先级队列 原理思路: 2617. 网格图中最少访问的格子数 题目描述: 给你一个下标从 0 开始的 m x n 整数矩阵 grid 。你一开始的位置在 左上角 格子 (0, 0) 。…

鸿蒙一次开发,多端部署(六)自适应布局

针对常见的开发场景,方舟开发框架提炼了七种自适应布局能力,这些布局可以独立使用,也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时,增加或减小的空间全部分配给容…

【Winform学习笔记(十一)】解决无边框窗体最大化显示异常问题

解决无边框窗体最大化显示异常问题 前言正文1、防止改变窗口大小时控件闪烁2、FrmMain_SizeChanged 前言 Winform 无边框窗体的设计,旨在为用户提供更加独特和个性化的界面体验,但是在实现这一设计的过程中,最大化显示异常问题往往成为开发者…

关于5.x版本的Neo4j与py2neo的访问技巧

先说结果。 Neo4j是可以使用py2neo来操作的。而且网上搜到的教程和方法里,首推的http连接方法可能并不是最好的,应该用 bolt 方法可能更好。 对于大多数使用 py2neo 与 Neo4j 数据库进行交互的应用程序来说,建议使用 Bolt 协议(即…

谷歌DeepMind推出3D游戏AI代理SIMA,实现自然语言操控游戏新纪元

近日,谷歌DeepMind研究团队推出了一款名为SIMA的创新AI代理,专为3D游戏环境设计。这款代理独树一帜,无需访问游戏源代码或依赖定制API,仅通过输入图像和简单的自然语言文本指令,便能实现与人类玩家相当的游戏操作。 AI…

Django数据库查询

聚合查询 分组查询 F与Q查询 默认情况下,用Q包裹的两个条件,用逗号分割也是and关系 choices参数 只要某个字段的可能性是完全可以列举出来的,可以采取choices参数 该gender字段存的还是数字,但是如果数字在上面的元组列举范围内,该怎么获取对应的值,如果不在范围内,会怎…

springboot网站开发解决图片存储问题,前端无法访问解决办法

最近使用springboot开发网站的时候,遇到了一个图片存储问题,我之前的方法是,把证书图片存在项目的static目录下面,这样的话,打包发布到远程服务器后,虽然可以正常展示已经打包封装好的内容,但是…

【Java】Java程序员必备的一些流程图

一、spring的生命周期 Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要; 首先容器启动后,对bean进行初始化按照bean的定义,注入属性检测该对象是否实现了xxxAware接口,并将相…

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障: 表现为IGM机器人K5控制柜不能开机或突然断电。 检查:检查电源线是否连接良好,有无破损;检查电源模块的输出电压是否正常; 维修方法:如电源模块损坏&…

蓝桥杯-模拟-旋转图片

题目 思路 Python中range() 函数的使用介绍_python指定范围内的整数-CSDN博客 range(start, stop, step):生成一个序列包含start到stop-1的整数,其中步长为step 代码 n, m map(int, input().split()) a [list(map(int, input().split())) for _ in…

2024年Jira全面解析:从 Jira 的概念到优缺点、最新政策

Jira是澳大利亚的Atlassian公司开发的一款项目管理软件,名字来源于日文中“哥斯拉”的称呼“Gojira”。Jira不仅可以追踪缺陷和问题,还能管理项目。很多企业还将JIRA用于一些特殊的场景,比如作为仓库自动化工具、管理文档流程、优化费用等等。…

34 | 到底可不可以使用join?

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类: 1. 我们 DBA 不让使用 join,使用 join 有什么问题呢? 2. 如果有两个大小不同的表做 join,应该用哪个表做驱动表呢? 今天这篇文…

实型数据详解

1 实型常量的表示方法 实数(real number)又称浮点数(floating-point number)。实数有两种表示形式: (1)十进制小数形式。它由数字和小数点组成(注意必须有小数点)。.123、123.、123.0、0.0都是十进制小数形式。 (2)指数形式。如123e3或123E3都代表123x103。但注意字母e(或E)…

LeetCode 热题 100 | 堆(一)

目录 1 什么是堆排序 1.1 什么是堆 1.2 如何构建堆 1.3 举例说明 2 215. 数组中的第 K 个最大元素 2.1 子树大根化 2.2 遍历所有子树 2.3 弹出栈顶元素 2.4 完整代码 菜鸟做题,语言是 C 1 什么是堆排序 1.1 什么是堆 堆的定义和分类&#xff…

打造新质生产力,亚信科技2024年如何行稳致远?

引言:不冒进、不激进,稳扎稳打, 一个行业一个行业地深度拓展。 【全球云观察 | 科技热点关注】 基于以往“一巩固、三发展”的多年业务战略,亚信科技正在落实向非通信行业、标准产品、软硬一体产品和国际市场的“四…