[关闭]
@zhangyy 2021-09-15T23:40:06.000000Z 字数 2785 阅读 154

ClickHouse数据库的基础

ClickHouse系列



一:ClickHouse 介绍

1.1 数据的应用分类

  1. 从数据库的业务应用类型来分,一般有三种:OLTPOLAP, HTAP
  2. OLTP: 联机事务处理OLTP 传统关系型数据库的主要应用,其主要面向基本的,日常的事务处理,例如银行交易,消费等业务,我们平时接触最多的属于这种类型
  3. OLAP:联机分析处理,OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策分析支持,并提供直观的易懂的查询结果,如:大数据分析,报表,可视化。
  4. HTAP:混合事务分析处理(OLTP+OLAP),可以同时支持完成处理事务与 分析事务

1.2 数据库的存储方式

  1. 从数据库的存储方式来分,一般分为:行存储,列式存储
  2. 行级别存储(Row
  3. 数据是按照行数据为基础的逻辑存储单元进行存储,一行中的数据在存储介质中以连续存储 形式存在,如:OracleMySQL postgresql DB2, SQL SERVER 传统的关系型级别的数据库
  4. 列存储(Column
  5. 数据是安装列为存储的逻辑存储单元进行存储,一列中的数据在存储介质中以连续存储形式存在。如:clickhouse,hbase,greenplum,HP vertica , HANA 等分布式数据库。

image_1er69cbcv1ak13cp1n56vbu1oq59.png-353.1kB

  1. 行式数据库:
  2. 1. 数据是按行存储的,行存储的写入是一次性完成的,消耗的时间比列存储少,并且能够保证数据的完整性,缺点是数据读取过程中会产生冗余数据。
  3. 2. 没有索引的查询使用大量I/O ,可通过索引加快查询效率,但是建立索引和物化视图需要花费成本高,面对大量的查询需求,数据库必须被大量的读取才能满足需求。
  4. 列式数据库:
  5. 1.数据按列存储,即每一列单独存放,数据即索引,在写入效率,保证数据完整性上都不如行级别的存储,他的优势是在每次读取只访问查询涉及的列,不会产生冗余数据,可以大量降低系统I/O
  6. 2. 每一个列由一个线程来处理,即查询的并发处理性能高,有多少CPU 就用多少CPU
  7. 3. 每一列数据类型一致,数据特征相似,可以高效压缩,提升查询速度。

1.3 clickhouse的数据库介绍

  1. clickhouse 2016 俄罗斯yandex 公司开源出来的一款MPP架构(大规模并行处理)的列式数据库,主要用于大数据分析(OLAP)领域,具有快速查询,线性可扩展,功能 丰富,硬件利用效率高,容错,高度可靠等优点。
  2. ClickHouse的主要应用场景:
  3. 电信行业用于存储数据和统计数据使用
  4. 用户行为数据记录与分析
  5. 信息安全日志分析
  6. 商业智能与广告网络价值数据挖掘分析
  7. 网络游戏以及物联网的数据处理与分析。
  8. clickhouse 与其它的数据查询对比
  9. https://clickhouse.tech/benchmark/dbms/

image_1er6almuoesd102gm9g15fdkivm.png-1069.2kB

  1. 容错与高可靠
  2. 1. 分布式集群
  3. 2 支持多主机异步复制,并且可以跨多个数据中心进行部署
  4. 3. clickhouse 所有节点都相等,这个可以避免出现单点故障
  5. 4. clickhouse 单个节点或者整个数据中心的停机时间不会影响系统的 读写可用性。
  6. 5. clickhouse 包括许多企业级别安全功能和针对人为错误的故障安全机制。
  7. 不支持事务。
  8. 只有alter 没有 真正的update delete 操作。

1.4 clickhouse 的核心特性与架构

  1. clickhouse 的定位是分析型的数据库,而不是严格的关系心数据库,但具有完善的DBMS功能,比如: 实例, database,table,row,colume,DDL,DML,用户,权限控制,数据备份,数据恢复,分布式管理等功能,而且支持大规模并行计算,每个节点存在有对应的分区数据

  1. clickhouse 服务实例与数据库
  2. 1. 服务实例
  3. MySQL 相似,启动clickhouse 程序就有一个服务进程,默认9000 端口的进程,启动的这个程序就是一个实例,一台主机上也可以启动多个实例,不同的端口即可。
  4. 2. 数据库
  5. 则是文件的集合,一个服务启动后,clickhouse 默认会有system default 的两个数据库,如果业务使用,可以通过create database 来创建业务数据库,用于数据的存放于管理。

  1. clickhouse 数据访问流程
  2. 1. server
  3. clickhouse 服务器实现了多个不同的接口:
  4. 1.用于认为外部客户端的HTTP 接口
  5. 2.用于传输数据进行拷贝接口
  6. 3.用于本机clickhouse 客户端
  7. 以及在分布式查询中跨服务器通信的TCP 接口

image_1er6dqgt3eg5t1s1c1b1mn12cj13.png-143.5kB


  1. 2. Parsers 分析器
  2. 负责创建AST 对象(抽象语法树)
  3. parser 分析器可以将一条SQL 语句 解析成AST 语法树的形式
  4. 不同的SQL 语句,会由不同的parser 实现类解析。
  5. 3. Intercepter 解析器
  6. 负责解释AST 对象(抽象语法树),然后创建查询的执行通道。
  7. 4. Istorage 存储 接口
  8. IStorge 负责根据AST 查询语句的指示要求,返回指定列的原始数据
  9. IStorge 接口定了DDL(如alterrename ,drop 等),read write 方法,分别负责数据的定义,查询写入。
  10. 在这个过程中,通过对block 对象完成一系列数据操作
  11. block 对象的本质是由数据对象(cloumn),数据类型(DataType)和列名称组成的三元组,block在这些对象的基础上实现了进一步的抽象封装,从而简化了整个使用的过程,仅通过block就可以完成一些列数据操作。

  1. clickhouse 数据访问流程:
  2. 1. Column field
  3. 2. column 提供数据的读取能力
  4. 3. column Field clickhouse 数据的最基础的映射单元
  5. 4. clickhouse 按列式存储数据,内存中的一列数据由一个column对象表示,而filed 对象代表Column的一个单值。

  1. Datatype
  2. 数据类型是由DataType 负责,DataType 提供序列化和反序列化,数据从Column 或者Field 获取
  3. Function
  4. Clickhouse 主要提供两类函数:
  5. 普通函数和聚合函数
  6. 普通函数 IFunction 接口定义,内部由很多的函数实现。
  7. 聚合函数是有状态的 ,由IAggregateFunction接口定义。

1.5 Clickhouse的存储引擎

image_1er6ps6dt1rb51rnu1b7043ekmkc.png-671kB

image_1er6pttps1ocg18bj3ro18fqg0qp.png-483.2kB

1.6 clickhouse表:

image_1er6q28r11ipi1prta1afbp9s16.png-306.9kB

image_1er6q75chmg8a82gt183miaf1j.png-411.1kB

1.7 clickhouse 分区

image_1er6qbanhv78css1tr41ucn4qv20.png-533.7kB


1.8 clickhouse 的 索引

image_1er6qd08nbm81qaujdg1gejljn2d.png-485.8kB

image_1er6qdean1ntv152tqs4ss8e3i2q.png-283kB

二: ClickHouse 集群分片与副本复制的特性

image_1er6r87vd3e41dpl107t1j8tcvi3k.png-228.5kB

image_1er6ra7otv1h1i0117o5bsq1evc9.png-263.5kB

image_1er6rdhia63qmdeqfd1c7f1h24m.png-318.3kB

image_1er6rp7381psc4v71tnlppc1pq613.png-246.5kB


三:Clickhouse 的生产环境

image_1er6rv55211mu1c991g9514oh33h1g.png-153.1kB

image_1er6s34hf16vf1m8310kt13snppu20.png-266.5kB

image_1er6secdf122mttn1pkh7tb17792q.png-345.4kB

image_1er6sfomh1g1d1vk82ds1n6evcu37.png-446.5kB

image_1er6sl1tosd71uneivmb5t1v0r3k.png-266.2kB

image_1er6smo8ofhn8gi186q1goa1v7p41.png-376.4kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注