【数据库学习】ClickHouse(ck)

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

1,ClickHouse(CK)

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

1)特性

  1. 按列存储,列越多速度越慢;
    按列存储,数据更容易压缩(类型相同、区分度);==》每次读取的数据就更多,更少的io。
  2. 聚合性能高;
  3. 类sql操作;仅支持数据的查询、批量写入、批量删除。
  4. 用于磁盘查询,同时也利用SSD和内存
  5. 支持近似计算

2)常见的列式数据库有

Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。

3)ck为什么快?

  1. 列式存储,数据类型相同,值范围也可能小(稀疏索引),更容易压缩,压缩之后每次io读取数据更多,降低了io。
  2. 可以把更多的数据放入内存。
  3. 在ck中,数据保存在不同的shard上,每一个shard都由一组用于容错的replica组成,查询可以并行地在所有shard上进行处理。
  4. 向量引擎,更高效的使用cpu。

插入为什么块?顺序批量写入;
删除为什么快?删除不快,一般按表删除(比如按天分区)。
查询为什么块?索引;
不支持修改;
group by为什么块?按列算,列数据量小;

2,索引原理

1)主索引(Primary Indexes)建立:LSM树

  1. 数据批量入库;
  2. 索引文件组织:主键列 + 其它排序列 升序
    每个表都有一个数据文件(*.bin)用于存储索引
  3. 按稀疏矩阵压缩,存储在磁盘上。

Granule (颗粒、行组)
是ck进行数据处理的最小的不可分割数据集。
ck每次读取数据,不是读取单独的行,而是始终读取整个行组(Granule)。

【数据库学习】ClickHouse(ck),数据库,学习,clickhouse第一个(根据磁盘上的物理顺序)8192行(它们的列值)在逻辑上属于颗粒0,然后下一个8192行(它们的列值)属于颗粒1,以此类推。
每个颗粒对应主索引的一个条目。

2)索引查询

1>颗粒选择

通过主索引二分查找,选择可能包含匹配查询的行的颗粒。

2>定位颗粒

每个列的标记文件以偏移量的形式存储两个位置:

  1. 压缩块位置
    包含所选颗粒的压缩版本的压缩列数据文件中定位块。这个压缩块可能包含几个压缩的颗粒。所定位的压缩文件块在读取时被解压到内存中。
  2. 解压数据的位置
    颗粒在解压数据块中的位置。

3)二级索引(Skipping Indexes)

传统的关系数据库的二级索引并不适用与ck(或者列式存储数据库),因为磁盘上没有单独的行可以添加到索引中。

如果一级索引查询后基数过大,可以考虑建立二级索引;
如果二级索引没有太大作用,此时,可以考虑:

  1. 新建一个不同的主键的新表;
  2. 创建一个物化视图;
  3. 增加Projecttion

ck主要的二级索引类型有:minmax、set、Bloom Filter。

1>Minmax

存储每个块的索引表达式的最小值和最大值(如果表达式是一个元组,它分别存储元组元素的每个成员的值)。

场景:标量、元组表达式
不适用于:数组、map数据类型

2>Set

这个集合包含块中的所有值。
场景:列值相对集中。每组颗粒中基数较低、但总体基数较高的列。

3>Bloom Filter Types(跳数索引)

允许对集合成员进行高效的是否存在测试,但代价是有轻微的误报,读取更多的块。
场景:列有较多离散值、主键和目标列具有很强的相关性。文章来源地址https://www.toymoban.com/news/detail-783331.html

4)MergeTree引擎

到了这里,关于【数据库学习】ClickHouse(ck)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 「从ES到CK 05」clickhouse高效数据处理工具vector

            在完成将公司日志数据从Elasticsearch(下称ES)转战到Clickhouse后,个人认为有必要将过程记录分享。限于篇幅及便于分类组织,我会以一个系列文章的形式记录: 01 《Elasticsearch vs Clickhouse》 02 《Clickhouse的基础知识扫盲》 03 《​Clickhouse多分片多副本集群部署​》 04

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

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

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

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

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

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

    2024年02月05日
    浏览(54)
  • Spring Boot集成JPA和ClickHouse数据库

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

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

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

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

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

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

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

    2024年02月02日
    浏览(52)
  • docker安装mysql、clickhouse、oracle等各种数据库汇总

    1:docker 安装mongo数据库并使用 官网:https://www.mongodb.com/docs/manual/ mongo shell教程1:http://c.biancheng.net/mongodb2/connection.html 安装1 :https://www.zhihu.com/question/54602953/answer/3047452434?utm_id=0 安装2:https://www.duidaima.com/Group/Topic/ArchitecturedDesign/9182 使用驱动进行java开发:https://mongodb.github.

    2024年02月10日
    浏览(53)
  • mysql、clickhouse查询数据库所有的表以及字段信息

    mysql查询数据库所有的表以及字段信息 SELECT     table_schema 数据库名,   table_name 表名,   COLUMN_NAME 列名,   COLUMN_TYPE 数据类型,   DATA_TYPE 字段类型,   CHARACTER_MAXIMUM_LENGTH 长度,   IS_NULLABLE 是否为空,   COLUMN_DEFAULT 默认值,   COLUMN_COMMENT 备注  FROM  INFORMATION_SCHEMA.COLUMNS where -- tab

    2024年02月08日
    浏览(70)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包