当前位置: 首页 > news >正文

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上给一个免费的关注吗?

相关文章:

ClickHouse01-什么是ClickHouse

什么是ClickHouse? 关于发展历史存在的优势与劣势什么是它风靡的原因? 什么是ClickHouse? 官方给出的回答是,它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统 当然这边不得不提到OLAP(Online Analytical Pr…...

使用Docker搭建Nascab

使用Docker来部署Nascab能够让这个过程变得更加灵活和便捷,因为Docker可以在隔离的环境中运行应用程序,简化了部署和配置的复杂性。 使用Docker CLI部署Nascab docker run -d \ --name nascab \ -p 18080:80 \ -p 18443:443 \ -p 18090:90 \ -p 18021:…...

Elasticsearch8.x版本Java客户端Elasticsearch Java API 如何并发修改

前言 并发控制,一般有两种方案,悲观锁和乐观锁,其中悲观锁是默认每次更新操作肯定会冲突,所以每次操作都要先获取锁,操作完毕再释放锁,适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突&#…...

Docker 安装 Skywalking以及UI界面

关于Skywalking 在现代分布式系统架构中,应用性能监控(Application Performance Monitoring, APM)扮演着至关重要的角色。本文将聚焦于一款备受瞩目的开源APM工具——Apache Skywalking,通过对其功能特性和工作原理的详细介绍&am…...

mysql 空间查询 多边形内的点

数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段,原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…...

实际开发中,git版本切换操作

业务场景 客户环境需要部署当前分支的之前的一个版本代码,所以需要从当前的commit切换到之前的commit 版本切换步骤 查看版本提交日志 $ git reflog切换版本 git reset --hard 七位数的版本id在切换后的版本上更改代码后 执行完暂存 git commit 把回退后的代码提…...

线程池实现“线程复用”的原理

线程池实现“线程复用”的原理 学习线程复用的原理,以及对线程池的 execute 这个非常重要的方法进行源码解析。 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务,但无论是固定数量或可变数量的线程,其线程数量都远远…...

[Linux开发工具]——make/Makefile的使用

Linux项目自动化构建工具——make/Makefile 前言:一、背景二、认识make和makefile2.1 创建Makefile文件2.2 创建test.c文件,并打开Makefile2.3 我们想要test.c生成test文件2.4 编译2.5 清理可执行文件 三、理解依赖关系和依赖方法3.1 依赖关系3.2 依赖方…...

C++中的动态数组vector的基本操作

文章目录 前言一、vector数组的声明二、vector数组的初始化三、vector数组的大小1. 在声明时设置大小2. 修改大小3. 查看大小 四、添加元素与删除元素1. 添加元素2. 删除元素 总结 前言 在 C 中,std::vector 是一个标准库中的容器类型。它是一个动态数组&#xff0…...

vsc ctrl+. 无效的问题

描述 ubuntu ibus 输入法 vsc ctrl.快捷键无效 输出 _e 解决方案: 运行 ibus-setup 把表情符号这里的快捷键改了...

科大讯飞开放平台-python语音转文字教程

文章目录 简介实际使用代码coding简介 科大讯飞的语音转写(Long Form ASR)——基于深度全序列卷积神经网络,将长段音频(5小时以内)数据转换成文本数据,为信息处理和数据挖掘提供基础。 转写的是已录制音频(非实时),音频文件上传成功后进入等待队列,待转写成功后用户…...

【LeetCode: 433. 最小基因变化 + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

Python 安装目录及虚拟环境详解

Python 安装目录 原文链接:https://blog.csdn.net/xhyue_0209/article/details/106661191 Python 虚拟环境 python 虚拟环境图解 python 虚拟环境配置与详情 原文链接:https://www.cnblogs.com/hhaostudy/p/17321646.html...

linux sh脚本编写

linux中bash Shell 是 Linux 的核心部分,它允许你使用各种诸如 cd、ls、cat 等的命令与 Linux 内核进行交互。Bash脚本和Shell脚本实际上是指同一种类型的脚本,只不过Bash是其中最常用的一种Shell。除了Bash之外,常见的Shell解释器还有C She…...

代码随想录笔记|C++数据结构与算法学习笔记-字符串(二)|28. 实现 strStr()、459.重复的子字符串、KMP算法

文章目录 卡码网.右旋字符串28. 实现 strStr()KMP算法(理论)KMP算法(代码)C代码 459.重复的子字符串暴力解法移动匹配KMP解法 卡码网.右旋字符串 卡码网题目链接 略 28. 实现 strStr() 力扣题目链接 文字链接:28. 实现 strStr() 视频链接:帮你把KMP算法…...

【复杂网络建模】——建模工具Matlab入门

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…...

JVM面试篇

面试篇就是复习前面学的 什么是JVM 1.定义:JVM指的是Java虚拟机,本质是一个运行在计算机上的程序 2.作用:为了支持Java中Write Once ,Run Anywhere 编写一次 到处运行的跨平台特性 功能: 1.解释和运行 2.内存管理…...

openEuler 22.03(华为欧拉)一键安装 Oracle 19C RAC(19.22) 数据库

前言 Oracle 一键安装脚本,演示 openEuler 22.03 一键安装 Oracle 19C RAC 过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库…...

蓝桥杯刷题记录之数字王国之军训排队

记录 卡了半天&#xff0c;check函数中的temp % ele 0写成了ele % temp 0就挺无语的 思路 这个晚上在补 代码 import java.util.*; public class Main{static List<List<Integer>> que new ArrayList<>();static int MIN Integer.MAX_VALUE;static i…...

Go语言学习Day1:什么是Go?

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、走近Go①Go语言的Logo②Go语言的创始人③Go语…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...