ClickHouse原理剖析

这篇具有很好参考价值的文章主要介绍了ClickHouse原理剖析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.ClickHouse简介

ClickHouse是一款开源的面向联机分析处理的列式数据库,其独立于Hadoop大数据体系,最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。

ClickHouse核心的功能特性介绍如下:

完备的DBMS功能

ClickHouse拥有完备的数据库管理功能,具备一个DBMS(Database Management System,数据库管理系统)基本的功能,如下所示。

  • DDL (数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。

  • DML(数据操作语言):可以动态查询、插入、修改或删除数据。

  • 权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

  • 数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求。

  • 分布式管理:提供集群模式,能够自动管理多个数据库节点。

列式存储与数据压缩

ClickHouse是一款使用列式存储的数据库,数据按列进行组织,属于同一列的数据会被保存在一起,列与列之间也会由不同的文件分别保存。

在执行数据查询时,列式存储可以减少数据扫描范围和数据传输时的大小,提高了数据查询的效率。

例如在传统的行式数据库系统中,数据按如下表顺序存储:
行式数据库

row ID Flag Name Event Event
0 12345678901 0 name1 1 2020/1/11 15:19
1 32345678901 1 name2 1 2020/5/12 18:10
2 42345678901 1 name3 1 2020/6/13 17:38
N

行式数据库中处于同一行中的数据总是被物理的存储在一起,而在列式数据库系统中,数据按如下表2顺序存储:
列式数据库

row: 0 1 2 N
ID: 12345678901 32345678901 42345678901
Flag: 0 1 1
Name: name1 name2 name3
Event: 1 1 1
Time: 2020/1/11 15:19 2020/5/12 18:10 2020/6/13 17:38

该示例中只展示了数据在列式数据库中数据的排列方式。对于存储而言,列式数据库总是将同一列的数据存储在一起,不同列的数据也总是分开存储,列式数据库更适合于OLAP(Online Analytical Processing)场景。

向量化执行引擎

ClickHouse利用CPU的SIMD指令实现了向量化执行。SIMD的全称是Single Instruction Multiple Data,即用单条指令操作多条数据,通过数据并行以提高性能的一种实现方式 ( 其他的还有指令级并行和线程级并行 ),它的原理是在CPU寄存器层面实现数据的并行操作。

关系模型与SQL查询

ClickHouse完全使用SQL作为查询语言,提供了标准协议的SQL查询接口,使得现有的第三方分析可视化系统可以轻松与它集成对接。

同时ClickHouse使用了关系模型,所以将构建在传统关系型数据库或数据仓库之上的系统迁移到ClickHouse的成本会变得更低。

数据分片与分布式查询

ClickHouse集群由1到多个分片组成,而每个分片则对应了ClickHouse的1个服务节点。分片的数量上限取决于节点数量(1个分片只能对应1个服务节点)。

ClickHouse提供了本地表 (Local Table)与分布式表 (Distributed Table)的概念。一张本地表等同于一份数据的分片。而分布式表本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件。借助分布式表,能够代理访问多个数据分片,从而实现分布式查询。

2.ClickHouse应用场景

ClickHouse是Click Stream + Data WareHouse的缩写,起初应用于一款Web流量分析工具,基于页面的点击事件流,面向数据仓库进行OLAP分析。当前ClickHouse被广泛的应用于互联网广告、App和Web流量、电信、金融、物联网等众多领域,非常适用于商业智能化应用场景,在全球有大量的应用和实践,

3.关键特性

副本机制

ClickHouse利用ZooKeeper,通过ReplicatedMergeTree引擎(Replicated 系列引擎)实现了副本机制。副本机制是多主架构,可以将INSERT语句发送给任意一个副本,其余副本会进行数据的异步复制
ClickHouse原理剖析,clickhouse,oracle,数据库
副本机制功能:

  • ClickHouse副本机制的设计可以最大限度的减少网络数据传输,用以在不同的数据中心进行同步,可以用来建设多数据中心、异地多活的集群架构。
  • 副本机制是实现:高可用(HA)、负载均衡(Load Balance)、迁移/升级(Migration/Upgrade)功能的基础。
  • 高可用:系统会监视副本数据的同步情况,识别故障节点,并在节点恢复正常时进行故障恢复,保证服务整体高可用。

4.分布式查询

ClickHouse通过分片和分布式表机制提供了线性扩展的能力。

  • 分片机制:用来解决单节点的性能瓶颈,通过将数据进行水平切分,将一张表中的数据拆分到多个节点,不同节点之间的数据没有重复,这样就可以通过增加分片对ClickHouse进行线性扩展。
  • 分布式表:在查询分片的数据时,通过分布式表进行查询,分布式表引擎自身不存储任何数据,仅是一层代理,能够自动路由到集群中的各个分片节点获取数据,即分布式表需要和其他数据表一起协同工作。

如下图所示,在查询时,我们需要查询分布式表 table_distributed,分布式表会将查询请求自动路由到各个分片节点上,并进行结果的汇聚。

分布式查询
ClickHouse原理剖析,clickhouse,oracle,数据库

5.MergeTree引擎

MergeTree(合并树)及其系列(*MergeTree)是ClickHouse最强大的存储引擎,被设计用于插入大量数据到一张表中。数据以数据块的形式被快速写入,数据块在后台会进行异步合并,确保高效的插入和查询性能。

主要支持的功能点有:

  • 主键排序、稀疏索引
  • 支持数据分区
  • 支持副本机制 (ReplicatedMergeTree 系列)
  • 支持数据采样
  • 并发数据访问
  • 支持TTL
  • 支持二级索引(Data Skipping Index 跳数索引)

6.与组件的关系

如下图所示,ClickHouse和其他组件关系如下:

  • Flink支持ClickHouse Sink
  • 支持Hive/SparkSQL数据批量导入ClickHouse
  • HetuEngine支持ClickHouse数据源
  • 常用第三方工具如DBeaver支持ClickHouse对接
  • ClickHouse依赖ZooKeeper实现了分布式DDL执行以及ReplicatedMergeTree表主备节点之间的状态同步。

ClickHouse与其他组件关系

ClickHouse原理剖析,clickhouse,oracle,数据库文章来源地址https://www.toymoban.com/news/detail-573303.html

到了这里,关于ClickHouse原理剖析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ClickHouse原理剖析

    ClickHouse是一款开源的面向联机分析处理的列式数据库,其独立于Hadoop大数据体系,最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。 ClickHouse核心

    2024年02月16日
    浏览(24)
  • 大数据ClickHouse(五):数据库引擎介绍与实例演示

    文章目录 数据库引擎介绍与实例演示 一、Ordinary默认数据库引擎 二、MySQL数据库引擎

    2024年02月03日
    浏览(50)
  • 统一观测|借助 Prometheus 监控 ClickHouse 数据库

    ClickHouse 作为用于联机分析(OLAP)的列式数据库管理系统(DBMS), 最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse 支持 SQL 查询,在基于大宽表的聚合分析查询场景下展现出优异的性能。因此,获得了广泛的应用。本文旨在分享阿里云可观测监控 Prometheus 版对开源 Cli

    2024年02月14日
    浏览(41)
  • [1180]clickhouse查看数据库和表的容量大小

    在mysql中information_schema这个数据库中保存了mysql服务器所有数据库的信息, 而在clickhouse,我们可以通过system.parts查看clickhouse数据库和表的容量大小、行数、压缩率以及分区信息。 在此通过测试数据库来说明。 结果为:这种结果显示的大小size是字节,我们如何转换为常见的

    2024年02月05日
    浏览(52)
  • 分布式数据库(DorisDB、Clickhouse、TiDB)调研

    B站视频:DorisDB VS ClickHouse OLAP PK 1.1 DorisDB 场量:线上数据应用 访问官方网站 DorisDB企业版文档 单表/多表查询,DorisDB总体时间最短 单表查询:DorisDB最快次数最多,ClickHouse次之 多表查询:DorisDB所有执行均最快 DorisDB多表关联效率好 支持各种主流分布式Join,不仅支持大宽表模

    2024年02月06日
    浏览(43)
  • clickhouse数据库 使用http 方式交付查询sql

    今天使用clickhouse 的HTTP 方式进行查询语句 clickhouse  服务  搭建在192.168.0.111 上面 那么我们如何快速的去查询呢   如下 我们可以使用curl 功能 或者直接在浏览器上输入对应的查询命令  如下: 说明: 前面的IP 是我们clickhouse所在的服务器IP底子 端口      8123     默认的H

    2024年01月25日
    浏览(44)
  • Spring Boot集成JPA和ClickHouse数据库

    Spring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它具有快速开发特性,可以大大减少开发人员的工作量。JPA(Java Persistence API)是Java中处理关系型数据库持久化的标准规范,而ClickHouse是一个高性能、分布式的列式数据库。 本文将介绍如何在Spring Boot项目中集成

    2024年02月09日
    浏览(52)
  • Python 连接clickhouse数据库以及新建表结构,csv导入数据

    目录 一、Python 连接clickhouse数据库 ◼ clickhouse对外的接口协议通常有两种形式: ◼ 代码实现部分: 二、使用客户端工具DBeaver连接clickhouse ◼ 新建clickhouse表 三、DBeaver 连接clickhouse 用csv文件导入数据 ◼ 导入方式: 方法一:使用DBeaver自带导入数据功能; 方法二:具体方式如

    2024年02月08日
    浏览(92)
  • (三十六)大数据实战——ClickHouse数据库的部署安装实现

    ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库 DBMS ),使用C语言编写,主要用于在线分析处理查询( OLAP ),能够使用SQL查询实时生成分析数据报告。 列式存储 :数据按列进行存储,这使得 ClickHouse 能够高效地处理聚合查询和分析操作; 高性能 :ClickHouse 被设计用

    2024年02月19日
    浏览(38)
  • OLAP型数据库 ClickHouse的简介 应用场景 优势 不足

    ClickHouse 是一个开源的分布式列式数据库管理系统 (DBMS),专门用于在线分析处理 (OLAP)。它最初由 Yandex 开发,并且在处理大规模数据分析和实时查询方面表现出色。以下是关于 ClickHouse 的简介、应用场景、优势和不足的概述: ClickHouse 是一个高性能的列式数据库管理系统,专

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包