第01期:一文了解 ClickHouse

Java项目中Clickhouse大数据量插入 Clickhouse JDBC客户端大数据量插入实践 阅读详情

一、简介

1.1 ClickHouse 是什么?

ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。

1.2 ClickHouse的一些特性:
  1. 快速:ClickHouse 会充分利用所有可用的硬件,以尽可能快地处理每个查询。单个查询的峰值处理性能超过每秒 2 TB(解压缩后,仅使用的列)。在分布式设置中,读取是在健康副本之间自动平衡的,以避免增加延迟。
  2. 容错:ClickHouse 支持多主机异步复制,并且可以跨多个数据中心进行部署。所有节点都相等,这可以避免出现单点故障。单个节点或整个数据中心的停机时间不会影响系统的读写可用性。
  3. 可伸缩:ClickHouse 可以在垂直和水平方向上很好地缩放。ClickHouse 易于调整以在具有数百或数千个节点的群集上或在单个服务器上,甚至在小型虚拟机上执行。当前,每个单节点安装的数据量超过数万亿行或数百兆兆字节。
  4. 易用:ClickHouse 简单易用,开箱即用。它简化了所有数据处理:将所有结构化数据吸收到系统中,并且立即可用于构建报告。SQL 允许表达期望的结果,而无需涉及某些 DBMS 中可以找到的任何自定义非标准 API。
  5. 充分利用硬件:ClickHouse 与具有相同的可用 I/O 吞吐量和 CPU 容量的传统的面向行的系统相比,其处理典型的分析查询要快两到三个数量级。列式存储格式允许在 RAM 中容纳更多热数据,从而缩短了响应时间。
  6. 提高 CPU 效率:向量化查询执行涉及相关的 SIMD 处理器指令和运行时代码生成。处理列中的数据会提高 CPU 行缓存的命中率。
  7. 优化磁盘访问:ClickHouse 可以最大程度地减少范围查询的次数,从而提高了使用旋转磁盘驱动器的效率,因为它可以保持连续存储数据。
  8. 最小化数据传输:ClickHouse 使公司无需使用专门针对高性能计算的专用网络即可管理其数据。

何时使用 ClickHouse:
用于分析结构良好且不可变的事件或日志流,建议将每个此类流放入具有预连接维度的单个宽表中。
何时不使用 ClickHouse:
不适合事务性工作负载(OLTP)、高价值的键值请求、Blob 或文档存储。

1.3 为什么 ClickHouse 速度这么快?

首先我们了解一下 OLAP 场景的特点:

  1. 读多于写。
  2. 大宽表,读大量行但是少量列,结果集较小。
  3. 数据批量写入,且数据不更新或少更新。

针对分析类查询,通常只需要读取表的一小部分列。在列式数据库中你可以只读取你需要的数据。例如,如果只需要读取 100 列中的 5 列,这将帮助你最少减少 20 倍的 I/O 消耗。

由于数据总是打包成批量读取的,所以压缩是非常容易的。同时数据按列分别存储这也更容易压缩。这进一步降低了 I/O 的体积。由于 I/O 的降低,这将帮助更多的数据被系统缓存。

例如,查询《统计每个广告平台的记录数量》需要读取《广告平台 ID》这一列,它在未压缩的情况下需要 1 个字节进行存储。如果大部分流量不是来自广告平台,那么这一列至少可以以十倍的压缩率被压缩。当采用快速压缩算法,它的解压速度最少在十亿字节(未压缩数据)每秒。换句话说,这个查询可以在单个服务器上以每秒大约几十亿行的速度进行处理。这实际上是当前实现的速度。

ClickHouse 从 OLAP 场景需求出发,定制开发了一套全新的高效列式存储引擎

column-oriented 图片来源见水印相比于行式存储,列式存储在分析场景下有着许多优良的特性。

  1. 如前所述,分析场景中往往需要读大量行但是少数几个列。在行存模式下,数据按行连续存储,所有列的数据都存储在一个 block 中,不参与计算的列在 IO 时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计算的列即可,极大的减低了 IO cost,加速了查询。
  2. 同一列中的数据属于同一类型,压缩效果显著。列存往往有着高达十倍甚至更高的压缩比,节省了大量的存储空间,降低了存储成本。
  3. 更高的压缩比意味着更小的 data size,从磁盘中读取相应数据耗时更短。
  4. 自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。
  5. 高压缩比,意味着同等大小的内存能够存放更多数据,系统 cache 效果更好。

二、安装实践

2.1 安装
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client

本案例安装的是单机版本。yum 安装会自动创建 clickhouse 用户。

2.2 修改配置文件

yum 安装完成之后,配置文件,数据文件日志目录设置如下:

配置文件目录:/etc/clickhouse-server/
数据文件目录:/var/lib/clickhouse/
日志文件目录:/var/log/clickhouse-server/

clickhouse 相关的各个目录可以在配置文件 /etc/clickhouse-serverconfig.xml 中进行修改。

启动

sudo /etc/init.d/clickhouse-server start

连接

clickhouse-client -m #默认以 default 用户登录

在 /etc/clickhouse-server/users.xml 中可以设置其他用户的访问权限等。

clickhouse-client [–user=xxx --password=xxx --host=xxx]

2.3 速度测试
localhost :) SELECT
:-]     C_CITY,
:-]     S_CITY,
:-]     toYear(LO_ORDERDATE) AS year,
:-]     sum(LO_REVENUE) AS revenue
:-] FROM lineorder_flat
:-] WHERE (C_CITY = 'UNITED KI1' OR C_CITY = 'UNITED KI5') AND (S_CITY = 'UNITED KI1' OR S_CITY = 'UNITED KI5') AND year >= 1992 AND year <= 1997
:-] GROUP BY
:-]     C_CITY,
:-]     S_CITY,
:-]     year
:-] ORDER BY
:-]     year ASC,
:-]     revenue DESC;

SELECT 
    C_CITY, 
    S_CITY, 
    toYear(LO_ORDERDATE) AS year, 
    sum(LO_REVENUE) AS revenue
FROM lineorder_flat
WHERE ((C_CITY = 'UNITED KI1') OR (C_CITY = 'UNITED KI5')) AND ((S_CITY = 'UNITED KI1') OR (S_CITY = 'UNITED KI5')) AND (year >= 1992) AND (year <= 1997)
GROUP BY 
    C_CITY, 
    S_CITY, 
    year
ORDER BY 
    year ASC, 
    revenue DESC

┌─C_CITY─────┬─S_CITY─────┬─year─┬────revenue─┐
│ UNITED KI1 │ UNITED KI1 │ 1992 │ 5776096629 │
│ UNITED KI5 │ UNITED KI1 │ 1992 │ 5555883901 │
│ UNITED KI5 │ UNITED KI5 │ 1992 │ 5348705805 │
│ UNITED KI1 │ UNITED KI5 │ 1992 │ 5326870427 │
│ UNITED KI1 │ UNITED KI1 │ 1993 │ 5892974670 │
│ UNITED KI1 │ UNITED KI5 │ 1993 │ 5490859451 │
│ UNITED KI5 │ UNITED KI1 │ 1993 │ 5468354303 │
│ UNITED KI5 │ UNITED KI5 │ 1993 │ 5089909647 │
│ UNITED KI5 │ UNITED KI1 │ 1994 │ 5437315108 │
│ UNITED KI1 │ UNITED KI1 │ 1994 │ 5348775917 │
│ UNITED KI5 │ UNITED KI5 │ 1994 │ 5310936695 │
│ UNITED KI1 │ UNITED KI5 │ 1994 │ 5237461110 │
│ UNITED KI1 │ UNITED KI1 │ 1995 │ 5737551920 │
│ UNITED KI5 │ UNITED KI5 │ 1995 │ 5657584590 │
│ UNITED KI5 │ UNITED KI1 │ 1995 │ 5260093556 │
│ UNITED KI1 │ UNITED KI5 │ 1995 │ 5213763257 │
│ UNITED KI5 │ UNITED KI1 │ 1996 │ 5522325005 │
│ UNITED KI1 │ UNITED KI1 │ 1996 │ 5451244409 │
│ UNITED KI5 │ UNITED KI5 │ 1996 │ 5231759057 │
│ UNITED KI1 │ UNITED KI5 │ 1996 │ 5203962897 │
│ UNITED KI1 │ UNITED KI1 │ 1997 │ 5340760807 │
│ UNITED KI5 │ UNITED KI1 │ 1997 │ 5295685214 │
│ UNITED KI1 │ UNITED KI5 │ 1997 │ 5188428156 │
│ UNITED KI5 │ UNITED KI5 │ 1997 │ 5024634475 │
└────────────┴────────────┴──────┴────────────┘

24 rows in set. Elapsed: 1.723 sec. Processed 546.67 million rows, 4.46 GB (317.28 million rows/s., 2.59 GB/s.) 

扫描 1.7 秒处理 546w 的数据量,每秒处理 317w 行数据,速度是相当快了。

三、和其他列式存储的对比

没有银弹,各种数据存储类型还是要结合具体的场景使用。

图片来自 新浪 高鹏的 ppt 目前大量使用 ClickHouse 的互联网公司:
1. 今日头条内部用 ClickHouse 来做用户行为分析,内部一共几千个 ClickHouse 节点,单集群最大 1200 节点,总数据量几十 PB,日增原始数据 300TB 左右。
2. 腾讯内部用 ClickHouse 做游戏数据分析,并且为之建立了一整套监控运维体系。
3. 携程内部从 18 年 7 月份开始接入试用,目前 80% 的业务都跑在 ClickHouse 上。每天数据增量十多亿,近百万次查询请求。
4. 快手内部也在使用 ClickHouse,存储总量大约 10PB, 每天新增 200TB, 90% 查询小于 3S。
5. 在国外,Yandex 内部有数百节点用于做用户点击行为分析,CloudFlare、Spotify 等头部公司也在使用。当然还有一些没有关注到的公司也在大量使用,有兴趣的朋友可以积极尝试。

四、小结

本文是浅出的介绍了 Clickhouse 的是什么,有哪些新特性。需要深入学习还是要看官方文档,纸上来得终觉浅,绝知此事要躬行。

参考文章

  1. https://www.cnblogs.com/zhoujinyi/p/12625655.html
  2. https://clickhouse.tech/docs/zh/
  3. https://zhuanlan.zhihu.com/p/98877249
  4. https://github.com/ClickHouse-China/ClickhouseMeetup

关于 ClickHouse 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

clickhouse通过java jdbc实现批量操作 1.7、开始编写jdbc操作批量操作clickhouse的ClickhouseBatchDemo。1.2、注意,httpclient5-fluent和httpclient5必须引入,否则会报错。1.5、编写一个ClickHouseConnectionSettings枚举。1.3、编写一个DriverPropertyCreator 驱动接口。1.4、编写一个ClickHouseQueryParam枚举。1.6、编写一个ClickHouseProperties类。 阅读详情

相关推荐

clickhouse之数据写入问题

文章目录1. 写入方法方法一:文件导入方法二:插入语句方法三:JDBC接口2. 性能瓶颈3. 其它注意事项4. 总结 众所周知,在精心设计的索引(见前文:clickhouse之索引)以及极致压制硬件物理性能(见前文clickhouse之向量执行引擎)的作用下,clickhouse单机表现出卓越的查询和计算性能。但是有些使用场景,对数据库的写性能要求同样很高,那么clickhouse在写数据上的表现究竟如何呢?因为最近我们的小伙伴因为项目需要有做过一些测试,我简单总结一下吧~~ 1. 写入方法 方法一:文件导

普普通通程序猿的博客 7508

【ClickHouse】批量写入ClickHouse 的几种方式

ClickHouse没有官方的Python接口,有个第三方的库,叫clickhouse-driver,笔者所知道的将数据批量写入的方式不是很多,这里列举最常见的3种方式。 第一种方式 CSV文件 cat /dev/shm/data | clickhouse-client -h 123.456.1.X --query="insert into database.table FORMAT CSV"``` 或 clickhouse-client -h 192.168.1.X --query="insert int

一个技术迷的博客 1万+

【ClickHouse】-01

,解决了很多数字化转型企业数据分析的效率问题,包括:● 大数据建设完成后最终产出了大量的 BI 报表、OLAP 分析,数据驱动距离业务远。● 有经验的业务分析人员无法快速获得需要的数据,或者需要复杂 NoSQL 技术。● 数据驱动还是“人”驱动,还有大量的提数、出报表的需求,而很多报表往往只用一次。● 业务快速变化要求更新速度高,数据流无法让业务人员上手。

2401_84187537的博客 1002

clickhouse 批量插入数据_ClickHouse常用命令

一.安装使用ClickHouse是Yandex提供的一个开源的列式存储数据库管理系统,多用于联机分析(OLAP)场景,可提供海量数据的存储和分析,同时利用其数据压缩和向量化引擎的特性,能提供快速的数据搜索。Ⅰ).安装sudo yum install yum-utils sudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KE...

weixin_30444625的博客 1万+

【Clickhouse从入门到精通】第11篇:ClickHouse内置工具实战——clickhouse-local与clickhouse-benchmark

摘要 ClickHouse提供了两款强大的内置工具——clickhouse-local和clickhouse-benchmark,无需启动完整的ClickHouse服务即可进行本地数据处理和性能基准测试。本文详细介绍这两款工具的功能特性、使用方法和实战案例。clickhouse-local支持多种文件格式的读取和转换,适合ETL数据预处理和快速数据探索;clickhouse-benchmark则是专业的性能测试工具,可以评估查询性能并生成详细的性能报告。掌握这两款工具将极大提升数据工程师和DBA的工作效率。

xyghehehehe的专栏 597

在k8s上部署ClickHouse

clickhouse的容器化部署,已经有非常成熟的生态了。在一些互联网大厂也已经得到了大规模的应用。clickhouse作为一款数据库,其容器化的主要难点在于它是有状态的服务,因此,我们需要配置PVC。kubectl 原生部署这种方式部署流程复杂,需要管理的资源非常多,稍不留神就容易出错维护繁琐,涉及到集群的扩缩容、rebalance等操作会很复杂非常不推荐这种部署方式kubectl + operator部署资源集中管理,部署方便维护方便业界已经有成熟的方案,如等。

禹鼎侯的博客 4727

clickhouse批量写入_第01期:一文了解 ClickHouse

一、简介1.1 ClickHouse 是什么?ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。1.2 ClickHouse的一些特性:快速:ClickHou...

weixin_39605278的博客 321

ClickHouse 教程

ClickHouse 是一个开源的列式数据库管理系统(DBMS),专门用于在线分析处理(OLAP)。它能够以极高的速度处理大量数据,适用于实时分析和大数据场景。以下是一个简单的 ClickHouse 教程,帮助你快速入门。

flying0916的博客 1584

ClickHouse【使用篇】01:ClickHouse的引擎

ClickHouse【使用篇】01:ClickHouse的引擎

weixin_40612128的博客 1483

clickhouse集群的安装与部署

clickhouse集群的安装与部署

风中凌乱的专栏 1980

JDBC批量插入 更新 删除等操作

一、JDBC的批量插入 一、JDBC的批量更新 一、JDBC的批量删除 一、JDBC的批量修改

ClickHouse【理论篇】01:什么是ClickHouse

什么是ClickHouse

weixin_40612128的博客 872

Disk Drill 使用教程

Disk Drill只需单击几下,即可恢复USB闪存驱动器上已删除的数据,包括丢失的照片,文档和其他文件类型。Disk Drill是真正的多合一应用程序,可在Mac上恢复闪存驱动器。Disk Drill将自动应用最佳的笔式驱动器恢复算法来恢复Mac数据。 USB闪存驱动器是一种传输和存储信息的好方法,但是如果错误地丢失或删除了存储在其中的文件,会发生什么呢?当您需要Mac的闪存驱动器数据恢复软件时,Disk Drill是您的最佳选择。Disk Drill将扫描您的USB闪存驱动器(也称为笔式驱动器)并查找

zjj778899的博客 1万+

Clickhouse时间日期函数一文详解+代码展示

Clickhouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK, 与Hadoop, Spark相比,ClickHouse很轻量级,由俄罗斯第一大搜索引擎Yandex于2016年6月发布, 开发语言为C++。主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。时间在数据库中经常作为时间索引,在数据入库和出库以及更新的时候都需要变化。在一些指标计算或者是提取某段时间的数据时,都会根据数据库中的时间索引数据进行操作。因此很大一部分我们操作数据都得先从时间数

master_hunter的博客 3万+

1.STM32H743VGT6最小系统板

此款MCU具备较大算力进行频谱运算,为复杂数据运算提供更高效的保障。该MCU具备REV-V和REV-Y两个型号,后者为新版本。

Audiation88的博客 3794

解决VMWare ESXi PCIe直通显卡导致的DevicePowerOn启动故障

本文详细解析了VMWare ESXi中PCIe直通显卡导致的DevicePowerOn启动故障,重点分析了MMIO空间不足的根本原因,并提供了完整的解决方案。通过修改.vmx文件中的关键参数,如pciPassthru.64bitMMIOSizeGB,可以有效解决显存分配问题。文章还涵盖了硬件兼容性检查、性能调优技巧及大规模部署的实战案例,帮助用户彻底解决显卡直通难题。

weixin_42537919的博客 574

一文教会你使用强大的ClickHouse物化视图

探讨物化视图在ClickHouse中如何成为一个强大的工具,用于提高查询性能和扩展数据管理能力

ClickHouseDB的博客 9199

用Python写个彩票小助手:自动生成双色球/大乐透号码并保存到桌面

本文介绍如何使用Python开发一个智能彩票助手,实现双色球和大乐透号码的随机生成与桌面文件保存功能。通过详细的代码示例,包括随机号码生成、文件操作、用户交互和错误处理,帮助Python初学者快速掌握实用工具开发技巧。

weixin_42566121的博客 515

ClickHouse【拓展篇】01:Prometheus监控ClickHouse以及通过Grafana展示

ClickHouse【拓展篇】01:Prometheus监控ClickHouse以及通过Grafana展示

weixin_40612128的博客 903

Signoff Criteria --- ocv/aocv/pocv之AOCV介绍

Advanced on chip variation,相比较于OCV来说,对于悲观度的去除很有效。相比较与ocv对于整个design中的lauch/capture path设置统一的derate值,aocv通过将cell derate值与cell的逻辑深度以及实际的位置结合起来进行derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的aocv lib file,里面有专门对相关的cell进行的aocv derate值的描述。> table: \

sinat_27691203的博客 7853

Modbus RTU 详解 + FreeMODBUS移植(附项目源码)

本文全面解析Modbus RTU通信协议,详细介绍其报文格式、功能码定义及典型应用场景,并手把手指导如何将FreeMODBUS协议栈移植到嵌入式平台。内容涵盖从底层硬件驱动配置、协议栈移植到主机/从机通信测试的全流程,重点讲解移植过程中的常见问题及解决方案。文章最后提供经过实测的完整项目源码,帮助开发者快速实现稳定的Modbus RTU通信功能。

Bit_Dong的博客 2926

ClickHouse01-什么是ClickHouse

ClickHouse是由俄罗斯搜索引擎巨头Yandex内部开发的数据存储和分析系统。截至2024年,ClickHouse持续保持快速迭代,定期发布新版本,它已成为OLAP领域的重要参与者之一,与Apache Druid、Vertica、Greenplum以及其他现代数据仓库解决方案共同竞争市场,并在许多实际应用案例中展现出卓越的性价比和稳定性。它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统。

c_zyer的博客 1146

出现Command ‘vim‘ is available in the following places,vim: command not found等解决方法

内置命令无法识别,说明系统变量有误,导致无法识别,既然系统变量有误,将其注释或者更改为正确的即可,但是现在打不开,又怎么注释掉。替换vim来打开编辑,打开之前错误的全局变量文件,发现变量有误,要么注释要么改为。系统变量有全局变量(通过命令行printenv或者echo)和局部变量。对应通过vim修改错误的变量文件,不然source也无法让配置文件生效。本身vim是系统内置的命令,连vim都出现问题。修改为正确的即可,之后还需要重启服务器,使用。之后即可成功,通过即可查看命令是否有写入。...

码农研究僧的博客 5883

2024年最全【ClickHouse】-01

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。友情提示ClickHouse 并不是数据仓库,它也不是数据导入和调度工具,它需要结合很多的组件来合作使用,包括:数仓、关联查询(eg:Presto、Drois、SPL、数据导入(eg:sea Tunnel)、调度…)CK主要解决的是数据分析的最后一公里场景。

2401_84181481的博客 1271

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 技术译文 | MySQL 8.x DDL 和查询重写插件
下一篇: 技术译文 | How Can ScaleFlux Handle MySQL Workload?
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值