ClickHouse基础介绍

目录

前言

1、什么是clickhouse

2、OLAP场景的关键特征

3、列式存储更适合于OLAP场景的原因

4、clickhouse的独特功能

5、clickhouse的缺点

6、性能

6.1、单个大查询的吞吐量

6.2、处理短查询的延迟时间

6.3、处理大量短查询的吞吐量

6.4、数据的写入性能


 

前言

        11月份的时候,有幸收到OceanBase官方的邀请,代表部门去参加了OceanBase2023年度发布大会(对OceanBase不了解的兄弟盟,后面有空我会发表一些关于Ob的文章哈),之前公司国产化信创适配改造过程中,对于OB有了一定的实践以及了解。整个大会让我印象最深刻的就是OceanBase列存实验室版本同业内一流的大宽表数据库ClickHouse现场进行了跑分PK。结果显示,在同等硬件条件下,OceanBase的性能达到了ClickHouse的同一水平,甚至比ClickHouse还高一点点。之前对ClickHouse基本不了解,会后对这兄弟产生了好奇。利用业余时间了解了一下,做了下总结。

913de29407e544dc8365a99bc772aeda.webp

1、什么是clickhouse

clickhouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),由俄罗斯最大的搜索公司Yandex开发,于2016年开源,采用c++开发

2、OLAP场景的关键特征

  1. 大多数是读请求
  2. 数据总是以相当大批的写入(>1000rows)
  3. 不修改已添加的数据
  4. 每次查询都从数据中读取大量的行,但同时仅需要少量的列
  5. 宽表,即每个表包含大量的列
  6. 较少的查询(通常每台服务器每秒数百个查询或更少)
  7. 对于简单查询,允许延迟大约50ms
  8. 列中的数据相对较小,如数字和短字符串
  9. 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
  10. 事务不是必须的
  11. 对于数据一致性要求低
  12. 每个查询除了一个大表外,其余都很小
  13. 查询结果明显小于源数据,或者说,数据被过滤或聚合后能够被盛放在内存中

3、列式存储更适合于OLAP场景的原因

列式数据对于大多数查询而言,处理速度至少提高了100倍

行式:

8d221e36b5e947ce88323291c47025ba.png

列式:

fc02de70e1a941d49815278dcbf5ef69.png

为何会有以上情况的发生?

  1. 针对分析类查询,通常只需要读取表中一小部分列。在列式数据库中你可以只读取你需要的数据。如果只需要读取100列中的5列数据,这将帮助你减少20倍的io消耗。
  2. 由于数据总是打包成批量读取的,所以压缩是非常容易的。同时数据按列分别存储也容易压缩。
  3. 由于io的降低,这将帮助更多的数据被系统缓存。

4、clickhouse的独特功能

  1. 真正的列式数据库管理系统,即除了数据本身外不应该存在其它额外的数据。这意味着为了避免在值旁边存在它们的长度,必须支持固定长度数值类型
  2. 数据压缩,数据压缩在性能提升上有很关键的作用
  3. 数据存储,clickhouse专门设计在机械盘工作,因此存储成本更低。如果有ssd和额外ram也将充分利用
  4. 多核并行处理
  5. 多服务器分布式查询处理,在clickhouse中,数据可以保存在不同的shard上,每个shard都由一组用于容错的replica组成,查询可以并行的在所有shard上进行处理,这对用户是透明的
  6. 大部分情况兼容标准sql
  7. 向量引擎,数据不仅以列存储,还以向量块来处理。因此可以提高cpu效率
  8. 实时数据更新,click house支持具有主键的表,为了能够快速在主键范围内快速执行扫描,使用合并树对数据增量排序,因此支持数据不断添加到表中,添加时没有锁表
  9. 索引,通过主键对数据进行物理排序这使得你以较低延迟(数毫秒)接收特定值或范围的数据
  10. 适用于在线查询,低延迟意味着可以立即执行查询
  11. 支持近似计算,click house提供各种允许牺牲数据精度情况下对查询数据进行加速的方法
  12. 支持数据复制和数据完整性,clickhouse使用异步复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其它副本,以保证系统在不同副本上保持相同的数据。大多数情况下,clickhouse能在故障后自动恢复,在一些少数情况下需要手动恢复

5、clickhouse的缺点

  1. 没有完整的事务支持
  2. 缺乏高速率低延迟修改或删除已存在数据的能力,有可用于批量更新和删除数据的能力
  3. 稀疏索引使得clickhouse不适合通过其键检索单行的定点查询

6、性能

根据Yandex的内部测试结果,clickhouse表现出了同类可比较产品更优的性能(长查询的吞吐量最高,短查询的延迟最低)

b062e33140aa43058a17fbc9dd6a2691.png

 

6.1、单个大查询的吞吐量

吞吐量可以以每秒处理的行数或每秒处理的字节数来衡量。如果数据被放置在page cache缓存的情况下,则不太复杂的查询在现代硬件上大约2-10G/s的速度在单个服务器上处理未压缩数据(对于简单查询,速度可以达到30G/s)

对于分布式处理,处理速度几乎是线性扩展的,但这受限于聚合或排序的结果不是那么大的情况下

6.2、处理短查询的延迟时间

如果一个查询使用主键且没有太多行(几十万行)进行处理,并且查询没有太多列,那么在数据被page cache的情况下,它的延迟应该小于50ms(最佳情况应该小于10ms)。否则,延迟取决于数据的查找次数。如果使用HDD,在数据没有加载的情况下,查询所需要的延迟可以通过一下公式计算得知:查找时间(10ms)*查询的列的数量*查询的数据库的数量

6.3、处理大量短查询的吞吐量

在相同情况下,clickhouse可以在单个服务器每秒处理数百个查询(在最佳的情况下最多可以处理数千个)。但是由于这不适用于分析型场景,因此我们建议每秒最多100次查询

6.4、数据的写入性能

建议每次写入不少于1000行的批量写入,或每秒不超过一个写入请求。可以使用多个insert并行插入,这将使性能线性提升

 

 

 

 

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

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

相关文章

RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务不存在的原因及解决办法

EasyNVS云管理平台具备汇聚与管理EasyGBS、EasyNVR等平台的能力,可以将接入的视频资源实现统一的视频能力输出,支持远程可视化运维等管理功能,还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户在现场部署EasyNVR,…

how2heap-2.23-04-unsorted_bin_leak

#include<stdio.h> #include<malloc.h>int main() {char* a malloc(0x88);char* b malloc(0x8);free(a);long* c malloc(0x88);printf("%lx , %lx\n",c[0],c[1]);return 0; }unsorted bin leak原理&#xff1a;将chunk从unsorted bin申请回来时&#…

ssm基于web的素材网的设计与实现+vue论文

基于web的素材网站的设计与实现 摘要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。传统的素材信息管理模式&#xff0c;采用人工登记的方式保存相关数据&#xff0c;这种以人力为主的管理…

安卓逆向某脚本-stringFog 拆解

引言 有个autojs 脚本软件,挺好用的,我想看下这个软件怎么实现的,学习写人家怎么写的。 先用MT 重新打包下, 看下重打包之后是否还可以继续使用。 用MT 打开APK,然后选择查看 随便找一个dex ,编辑下

02、Kafka ------ 配置 Kafka 集群

目录 配置 Kafka 集群配置步骤启动各Kafka节点 配置 Kafka 集群 启动命令&#xff1a; 1、启动 zookeeper 服务器端 小黑窗输入命令&#xff1a; zkServer 2、启动 zookeeper 的命令行客户端工具 &#xff08;这个只是用来看连接的节点信息&#xff0c;不启动也没关系&#…

数据结构与算法(六)

文章目录 高频-体系学习班(六)41 四边形不等式技巧(上)41.1 非负数组切分成左右两部分累加和的最大值41.2 非负数组切分成左右两部分累加和的最大值的数组41.3 合并石子的得分41.4 画匠问题42 四边形不等式技巧(下)42.1 邮局选址问题42.2 丢棋子问题43 状态压缩的动态规划…

RabbitMQ安装与应用

文章目录 1. RabbitMQ1.1. 同步通讯与异步通讯1.2. 异步通讯的优缺点1.3. 几种MQ的对比1.4. docker安装运行RabbitMQ 流程1.5. RabbitMQ的几个概念1.6. 五种模型1.6.1. 基本消息队列 1.7. 基本使用1.7.1. 1建立连接时会出现以下界面![在这里插入图片描述](https://img-blog.csd…

MFC扩展库BCGControlBar Pro v34.0 - 网格、报表控件功能升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v34.0已正式发布了&#xff0c;该版本包括新的主题任务对话框、图像效果、旋转圆形刻度、…

[电子榨菜]状态管理redux,以及react-redux

0.写在前面 很遗憾&#xff0c;最终还是没能入围2023年的博客评选。 不过不管怎么说&#xff0c;今年需要开个好头。 迫于成本压力吧&#xff0c;最终还是没能顺利离开这里。。。。。。 其实白天已经能放的下啦&#xff0c;我给自己买了喜欢的玩具&#xff0c;去了喜欢的漫…

MySQL:约束主键唯一键

表的约束&#xff1a;表中一定有约束&#xff0c;通过约束让插入表中的数据是符号预期的 约束的本质是通过技术手段&#xff0c;倒逼程序员插入正确的数据 Null约束 这里的Null表示在插入的时候&#xff0c;该属性能否为空&#xff0c;如果是NO&#xff0c;则插入时候必须有数…

《Effective C++》《Resource Management》

文章目录 13、term13:Use objects to manage resources14、term14:Think carefully about copying behavior in resource-managing classes15、term15:Provide access to raw resources in resource-managing classes法一&#xff1a; 使用智能指针的get进行显示转换法二&#…

第11课 实现桌面与摄像头叠加

在上一节&#xff0c;我们实现了桌面捕获功能&#xff0c;并成功把桌面图像和麦克风声音发送给对方。在实际应用中&#xff0c;有时候会需要把桌面与摄像头图像叠加在一起发送&#xff0c;这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…

Python数据分析从入门到进阶:分类算法

数据分析是处理和解释数据以发现有用信息和洞察的过程。其中&#xff0c;分类算法是数据分析领域的一个重要组成部分&#xff0c;它用于将数据分为不同的类别或组。 本文将介绍分类算法的基本概念和进阶技巧&#xff0c;以及如何在Python中应用这些算法&#xff0c;包括示例代…

01.微服务架构优缺点、服务拆分和远程调用

1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff1a;将业务的所有…

企业招聘信息查询API:招聘市场情报站,一键了解就业机会

前言 在当今这个信息爆炸的时代&#xff0c;快速、准确地获取企业招聘信息对于求职者来说至关重要。为了满足这一需求&#xff0c;企业招聘信息查询API应运而生&#xff0c;它为求职者提供了一个便捷、高效的平台&#xff0c;帮助用户快速了解企业的招聘动态。本文将详细介绍企…

众和策略:全国期货市场成交量同比增长25%

近来&#xff0c;我国期货业协会发布2023年12月全国期货商场生意状况数据。以单边核算&#xff0c;12月全国期货生意商场成交量为6.91亿手&#xff0c;成交额为480437.25亿元&#xff0c;同比分别添加4.48%和0.08%&#xff0c;环比分别下降12.58%和12.49%。2023年1-12月&#x…

AI写作生成器哪个好用一点,试试下面这五款

AI写作生成器在当今信息时代的快速发展中&#xff0c;成为了许多人的选择。然而&#xff0c;面对市场上众多的AI写作生成器&#xff0c;我们很难判断哪个更好用一点。为了解决这个问题&#xff0c;本文将介绍并使用下面这五款AI写作生成器&#xff0c;以帮助大家做出更明智的选…

使用 SpringSecurity 发送POST请求出现 403

问题场景 在使用 SpringSecurity 时对一些访问权限进行了设置, 在用户请求资源时出现了403错误 , 通过检查代码发现请求权限是开放的, 并且切换成 GET 请求也是可以通过, 换成POST 请求就无法通过。 解决方法 在 SpringSecurity 中关闭 CSRF 因为 前端向后台发送 post 请求…

【kettle】pdi/data-integration 打开ktr文件报错“Unable to load step info from XML“

一、报错内容&#xff1a; Unable to load step info from XML step nodeorg.pentaho.di.core.exception.KettleXMLException: Unable to load step info from XMLat org.pentaho.commons.launcher.Launcher.main (Launcher.java:92)at java.lang.reflect.Method.invoke (Met…

2023年终总结(脚踏实地,仰望星空)

回忆录 2023年&#xff0c;经历非常多的大事情&#xff0c;找工作、实习、研究生毕业、堂哥结婚、大姐买车、申博、读博、参加马拉松&#xff0c;有幸这一年全家人平平安安&#xff0c;在稳步前进。算是折腾的一年&#xff0c;杭州、赣州、武汉、澳门、珠海、遵义来回跑。完成…