9

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

 11 months ago
source link: https://www.51cto.com/article/768887.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
512dd0387f9a372a093031a808645b3eee1016.png

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

  • 关系型数据库( 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/

62e907d8501855bd055188384d8a58658b43a7.jpg

三、OLAP

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

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

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

为什么适合OLAP

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

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

93c542196d23ba538d6648829f6b33f70645d0.jpg

四、业务场景

我们单独讲业务场景的话有点单调,我们一般喜欢拿它和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 可以提供「优异的读写性能」。

f3894ac28c82ebfe41d226eea7bfaf2cea990e.jpg

ByConity

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK