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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【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物化视图在微信的实战经验

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
SQL 监控 关系型数据库
ClickHouse快速入门 2
ClickHouse快速入门
293 0
|
OLAP 数据库 索引
59.【clickhouse】ClickHouse从入门到放弃-分区表
【clickhouse】ClickHouse从入门到放弃-分区表
59.【clickhouse】ClickHouse从入门到放弃-分区表
|
13天前
|
存储 SQL 监控
【Clickhouse 探秘】你真正知道 Clickhouse 吗?
ClickHouse 是一个开源的列式数据库管理系统,专为在线分析处理(OLAP)设计。它由 Yandex 开发并于 2016 年开源。ClickHouse 以其高性能、实时数据处理能力和易用性著称,广泛应用于大数据分析、日志处理和用户行为分析等领域。其主要特点包括列式存储、向量化执行、分布式架构、丰富的数据类型和 SQL 支持。
50 4
|
3月前
|
Ubuntu Linux Docker
【ClickHouse】深入浅出系列之快速部署ClickHouse
【ClickHouse】深入浅出系列之快速部署ClickHouse
|
存储 SQL 关系型数据库
ClickHouse快速入门 1
ClickHouse快速入门
147 0
|
存储 搜索推荐 关系型数据库
55.【clickhouse】ClickHouse从入门到放弃-概念场景
【clickhouse】ClickHouse从入门到放弃-概念场景
55.【clickhouse】ClickHouse从入门到放弃-概念场景
|
SQL 存储 缓存
13.【clickhouse】ClickHouse从入门到放弃-引擎
【clickhouse】ClickHouse从入门到放弃-引擎
13.【clickhouse】ClickHouse从入门到放弃-引擎
|
SQL 存储 数据库
12.【clickhouse】ClickHouse从入门到放弃-环境搭建
【clickhouse】ClickHouse从入门到放弃-环境搭建
12.【clickhouse】ClickHouse从入门到放弃-环境搭建
|
存储 开发工具
|
存储 算法 NoSQL
65.【clickhouse】ClickHouse从入门到放弃-数据存储
【clickhouse】ClickHouse从入门到放弃-数据存储
65.【clickhouse】ClickHouse从入门到放弃-数据存储