【ClickHouse】深入浅出系列之初识ClickHouse

简介: 【ClickHouse】深入浅出系列之初识ClickHouse

ClickHouse是什么?

先看官方怎么说:

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

用通俗易懂的中文(人话)解释下:

  • 联机分析(OLAP):在线分析查询,可以理解成平时在MySQL上执行SQL查询数据。
  • 列式储存:咱们平时用的MySQL、PgSQL等每行进行存储,而ClickHouse是按照列进行存储,优点是压缩率高、节省服务器资源、查询效率高。
  • 数据库管理系统:这个大家都不陌生,类似于MySQL、SQLSever等。
  • 业界有些人会简称ClickHouse为CH或CK,我们后面的文章默认以CK代替ClickHouse

ClickHouse的优势

完备的DBMS功能

  • DDL(数据定义语言):可通过ddl快速操作ck,如增、删、改、查库表,动态修改冷热存储策略,无需重启服务。
  • DML(数据操作语言):即常见的SQL语句,如Insert、Update、Select、Delete、Drop等。
  • 分布式管理:自身提供了丰富的System表,可查询集群、磁盘存储情况、操作日志等。
  • 数据备份和恢复功能:可通过CVS等文件快速进行文件的导入导出。

写入性能

由于ck内部采用稀疏索引和列式存储,以及ck内部的优化,以至于写入数据非常快。如果再加上程序本身的优化(自定义规则写入本地表,不写入分布式表)会使得ck写入性能非常客观,根据多个技术博客(文末会挂载相关链接)的对写入性能的测试单节点单表可达到50W/S以上。

根据ck使用经验,以下做法会对ck的写入性能有极大的提升:

  • 利用ck自身提供的冷热存储方案实现冷热分离,即热数据使用SSD磁盘存储,冷数据使用SATA磁盘存储(对于日志场景来说热数据一般存储7天,冷数据一般存储180天)
  • 大批量的数据写入,如每批次10000-20000条数据写入更佳
  • 编写程序时采用轮训写入ck集群节点的方式写入本地表,避免写入分布式表(会导致ck压力增加很多,如CPU使用率100%等问题)
  • 磁盘IO尽可能高,尽量保持在30M/S以上,磁盘IO测试命令:
dd if=/dev/zero of=/data/text.txt bs=10k count=10000 oflag=direct

查询性能:

对于单表的查询非常快,基本都是毫秒级响应,特别适合数据分析。查询速率es性能的5倍以上。

一些优化查询性能的方法:

  • 尽可能的避免join查询,对于ck而言更期望的是建立大宽表查询,而非多张表的关联查询。
  • 可建立物化视图,会大大减少扫描磁盘的时间,从而提高查询效率。

节省成本:

相比ES而言,在日志场景下能节省很多成本。

  • 采用列式存储,压缩比很高,基本在35%以上。
  • 磁盘空间占用少,不需要像es一样建立倒排索引和正排索引之类的。
  • 节省维护成本,单节点宕机时不影响其他集群节点,且数据恢复快。

使用场景

  • 大数据量的日志场景
  • 金融行业的交易分析场景
  • 大屏的实时分析场景

目前在用的一些大厂:滴滴,京东,携程,微信,阿里云等

京东OLAP亿级查询高可用实践

ClickHouse在阿里云实时广告圈人业务最佳实践

滴滴基于 Clickhouse 构建新一代日志存储系统

从携程性能测试case中重新认识clickhouse - 简书

ClickHouse物化视图在微信的实战经验

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 SQL 关系型数据库
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
ClickHouse的核心架构包括执行过程和数据存储两部分。执行过程涉及Parser与Interpreter解析SQL,通过Column、DataType、Block、Functions和Storage模块处理数据。Column是内存中列的表示,Field处理单个值,DataType负责序列化和反序列化,Block是内存中表的子集,Block Streams处理数据流。Storage代表表,使用不同的引擎如StorageMergeTree。数据存储基于分片和副本,1个分片由多个副本组成,每个节点只能拥有1个分片。
1290 0
ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
|
9月前
|
设计模式 缓存 分布式计算
《3D端游开放世界载具物理交互优化实践日志》
本文记录现代都市题材3D端游载具物理交互优化过程,此前载具存在行驶卡顿、悬挂延迟、浮空穿模及寻路耗时过长问题,物理引擎CPU占用率超20%,寻路耗时达1.2秒。优化从三方面展开:碰撞体按场景分高、中、低精度适配,结合时速动态过滤冗余计算;悬挂系统依地形标签切换参数,通过渐变逻辑保障流畅;寻路系统分区设网格密度,优化A*算法并加路径缓存。还补充碰撞校验补偿机制,最终物理引擎CPU占用率降至10%内,寻路耗时≤0.3秒,穿模率<0.5%,多载具同屏交互也能稳定运行。
405 7
|
存储 SQL 监控
【Clickhouse 探秘】你真正知道 Clickhouse 吗?
ClickHouse 是一个开源的列式数据库管理系统,专为在线分析处理(OLAP)设计。它由 Yandex 开发并于 2016 年开源。ClickHouse 以其高性能、实时数据处理能力和易用性著称,广泛应用于大数据分析、日志处理和用户行为分析等领域。其主要特点包括列式存储、向量化执行、分布式架构、丰富的数据类型和 SQL 支持。
1565 4
|
8月前
|
数据挖掘
医院随访系统源码,三级随访管理流程解析
患者院后随访管理系统是一款智能化医疗平台,实现从“院内诊疗”到“院外康复”的全程闭环管理。系统支持三级随访、多途径回访、自动提醒、数据分析与满意度调查,提升随访效率与医疗服务质量,推动医疗服务延伸至院外,助力构建高效、规范的随访生态。
561 1
|
10月前
|
存储 人工智能 监控
LangGraph实战:从零构建智能交易机器人,让多个AI智能体像投资团队一样协作
如今的量化交易已远超传统技术指标,迈向多智能体协作的新时代。本文介绍了一个基于 **LangGraph** 构建的多智能体交易系统,模拟真实投资机构的运作流程:数据分析师收集市场情报,研究员展开多空辩论,交易员制定策略,风险团队多角度评估,最终由投资组合经理做出决策。系统具备记忆学习能力,通过每次交易积累经验,持续优化决策质量。
1636 8
LangGraph实战:从零构建智能交易机器人,让多个AI智能体像投资团队一样协作
|
9月前
|
传感器 人工智能 安全
AI + 视频监管:构筑智慧工地全场景安全防线
融合AI与物联网技术,智慧工地视频监管系统实现人员、设备、环境全维度智能管控,通过主动预警、全域覆盖、数据闭环,提升安全隐患识别效率,降低事故率67%,减少巡检成本40%,推动建筑安全管理迈向智能化、精细化新阶段。
1049 0
|
SQL 存储 算法
ClickHouse(06)ClickHouse建表语句DDL详细解析
ClickHouse创建表有多种语法,包括在当前服务器上创建、复制已有表结构、从表函数创建和从查询创建。表引擎决定表的特性和数据存储方式,如Memory引擎仅存储内存中。分布式DDL可在CLUSTER子句中实现跨节点操作。临时表生命周期与会话绑定,仅支持Memory引擎。分区表用于优化查询性能,MergeTree系列引擎支持分区。默认值表达式(DEFAULT, MATERIALIZED, EPHEMERAL, ALIAS)影响数据插入和查询行为。主键和约束可增强数据完整性,TTL功能用于自动删除过期数据。列压缩和编码能减少存储空间。文章还提供了ClickHouse更多相关系列内容链接。
1794 5
|
Ubuntu Linux Docker
【ClickHouse】深入浅出系列之快速部署ClickHouse
【ClickHouse】深入浅出系列之快速部署ClickHouse
【ClickHouse】深入浅出系列之配置详解,全中文注释!
【ClickHouse】深入浅出系列之配置详解,全中文注释!
|
存储 SQL 分布式计算
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
1635 0