列式数据库ClickHouse,大宽表聚合、报表一下全搞定

数据库 其他数据库
ClickHouse 更适用于大规模数据分析、数据仓库、复杂查询、大宽表聚合、报表等场景,而 Elasticsearch 更适用于全文搜索、实时数据分析、日志分析和数据探索等场景。

一、前言

现在数据库的种类也是特别的多,大致的类别包括:

  • 关系型数据库( MySQL、Oracle、PostgreSQL)。
  • 非关系型数据库(Redis、MongoDB、Cassandra、Neo4j)。
  • 全文搜索引擎和分布式文档存储系统(Elasticsearch )。
  • 列式数据库(ClickHouse)。

每种都在各自的领域表现出色,但当涉及到大规模数据分析和复杂查询时,ClickHouse 出现在了舞台上。

ClickHouse 使用列式存储,这意味着它可以高效地执行聚合、过滤和排序操作。

「面试经常问到大宽表查询聚合怎么办,这不是解决方案来了嘛!!」

今天我们就一起来深入了解一下ClickHouse !看的人多的话,下期出实战哈!

二、ClickHouse简介

ClickHouse是一款由俄罗斯搜索引擎公司 Yandex 开发的开源列式数据库管理系统(DBMS)。发布于2016年,是使用 C++ 编程语言开发的。它的设计目标是用于高性能的大规模数据分析和查询,类似SQL语法降低开发和学习成本。

「ClickHouse 是用于实时应用程序和分析的速度最快、资源效率最高的开源数据库。」

「Github的start数量已经:30.6k」

官网地址:https://clickhouse.com/

三、OLAP

简介

说起列式数据库,就不得不说OLAP,列式型数据库天然适合OLAP场景,下面我们一起了解一下什么是OLAP!

OLAP(联机分析处理)是一种强大的数据处理分析方法,特别适用于需要深入探索大量多维数据的应用场景,如业务智能、数据仓库、销售分析、财务报告等。OLAP 技术允许用户从不同的角度、维度和层次来查看和分析数据,以发现潜在的关联、趋势和模式,从而更好地做出决策。

场景特性

  • 表很“宽”,这意味着它们包含大量列。
  • 数据集很大,处理单个查询时查询需要高吞吐量(每台服务器每秒高达数十亿行)。
  • 列值相当小:数字和短字符串(例如,每个 URL 60 字节)。
  • 查询提取大量行,但只提取一小部分列。
  • 对于简单查询,允许 50 毫秒左右的延迟。
  • 每个查询有一张大表;除了一张大表外,所有表都很小。
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合单个服务器的 RAM。
  • 查询相对较少(通常每台服务器每秒数百个查询或更少)。
  • 插入发生在相当大的批次(> 1000 行)中,而不是单行。
  • 事务不是必须的。

为什么适合OLAP

面向列的数据库更适合 OLAP 场景:它们处理大多数查询的速度至少快 100 倍。下面详细解释了原因,但事实更容易直观地展示:

制作了一个动态图片能够直观的看到比行式数据库效率高很多!

四、业务场景

我们单独讲业务场景的话有点单调,我们一般喜欢拿它和Elasticsearch 进行比较!

ClickHouse 和 Elasticsearch 都是用于数据存储和查询的强大工具,但它们在业务场景和使用方面有一些不同之处。

以下是 ClickHouse 和 Elasticsearch 的业务场景对比:

「ClickHouse:」

  • 数据仓库和大规模数据分析:ClickHouse 是一个出色的大规模数据分析工具,特别适用于存储和查询历史数据。它支持复杂的 SQL 查询,可以执行聚合、过滤、排序等操作,是构建数据仓库的理想选择。
  • 时序数据分析:ClickHouse 的列式存储结构和高性能使其非常适合处理时序数据,如传感器数据、监控数据、日志数据等。
  • 报表生成:如果你需要生成复杂的报表和分析结果,ClickHouse 可以提供高性能的数据检索和处理能力。
  • 数据压缩和存储优化:ClickHouse 使用快速压缩算法,可以大幅减小存储空间占用,降低硬件成本。
  • 复杂查询:ClickHouse 支持复杂的查询和聚合操作,适用于需要深入分析数据的场景。

「Elasticsearch:」

  • 全文搜索和文本分析:Elasticsearch 是一个出色的全文搜索引擎,专注于文本数据的高级搜索、分析和相关性排序。它通常用于构建搜索引擎、日志分析和全文搜索应用。
  • 实时数据分析:Elasticsearch 支持实时数据分析,可以实时监控、查询和可视化数据。它在监控、日志分析和实时数据仓库等场景中表现出色。
  • 数据探索:Elasticsearch 提供了灵活的数据探索能力,用户可以通过自由组合查询条件来探索数据。
  • 非结构化数据:Elasticsearch 适用于非结构化或半结构化数据,如日志、社交媒体数据、文档等。
  • 数据可视化:结合 Kibana 工具,Elasticsearch 可以用于创建交互式数据可视化仪表板。
  • 高并发查询:相对于ClickHouse 更适合高并发下的查询。

五、拓展

当然我们也有列式存储,字节在 ClickHouse 架构基础上进行了升级,于 2020 年在内部启动了 ByConity 项目,并于 2023 年 1 月发布 Beta 版本,5月底正式对外开源。

ByConity官网地址:https://byconity.github.io/zh-cn/。

ByConity 是字节跳动开源的云原生数据仓库,它采用计算-存储分离的架构,支持多个关键功能特性,如「计算存储分离、弹性扩缩容、租户资源隔离和数据读写的强一致性」等。

通过利用主流的 OLAP 引擎优化,如「列存储、向量化执行、MPP 执行、查询优化」等,ByConity 可以提供「优异的读写性能」。

ByConity

字节也在内部准备从ClickHouse 全面切换为ByConity。

我们本次了解一下ClickHouse,后面再深入学习一下ByConity!

五、总结

综上所述,ClickHouse 更适用于大规模数据分析、数据仓库、复杂查询、大宽表聚合、报表等场景,而 Elasticsearch 更适用于全文搜索、实时数据分析、日志分析和数据探索等场景。

大家根据自己的业务具体使用那个即可!

责任编辑:姜华 来源: 小王博客基地
相关推荐

2021-01-21 10:23:43

数据库架构技术

2021-09-28 09:25:05

NoSQL数据库列式数据库

2018-10-16 16:00:39

数据库锁舞MySQL

2022-07-28 09:02:41

文件存储系统

2011-08-03 15:14:17

Excel XP数据库功能

2011-08-05 09:33:56

OracleUser ProcesServer Proc

2011-07-20 17:31:36

关系型数据库

2011-07-29 13:40:34

Oracle数据库PLSQL异常处理

2018-12-26 15:00:56

数据库行式存储列式存储

2021-03-19 08:16:03

数据库

2016-11-22 23:02:49

2016-03-24 10:52:44

iOS储存数据库

2017-03-27 23:22:23

数据库列式存储

2010-06-17 12:35:49

SQL Server数

2011-10-26 17:16:10

惠普Vertica数据库软件

2013-09-13 09:31:09

MongoDBZardosht KaTokutek

2019-08-19 01:34:38

数据库SQL数据库优化

2022-03-24 20:44:53

数据库索引SQL

2011-08-09 15:25:14

线程池数据库连接池

2024-01-31 08:23:54

点赞
收藏

51CTO技术栈公众号