ClickHouse 介绍 | 青训营笔记

73 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第7天

什么是ClickHouse?

Clickhouse是一款用于联机分析的列式数据库管理系统。

什么是联机分析?联机分析是一种软件技术,它使得分析人员能够从多方面观察信息,目的是深入理解数据。联机分析系统使用的数据库系统不同于日常业务中使用到的MySQL等。使用关系型数据库来存储和管理业务数据,并建立相应的业务系统来支持日常的业务运作,这种数据库以支持业务作为目的,被称为联机事务处理应用。而企业管理分析人员为了能够从业务数据中观察和分析对企业运营有影响的信息,则使用另一类数据库系统来存储这些信息,这种数据库系统就被称为联机分析处理。联机分析系统的特点是,不同于联机事务处理系统对查询功能的弱化,联机分析系统需要强大的查询功能和分析功能,以满足用户对数据的挖掘需求。

什么是列式数据库管理系统?数据库系统按照其对数据的组织方式,分为行式数据库管理系统和列式数据库管理系统。再行式数据库中,每一行中的所有数据总是被物理地存储在一起。这有助于单独读取每一行的操作,例如常见的业务查询和修改。而在列式数据库中,每一列被物理的存放在一起。这种方法适合不经常对数据库数据进行修改,和一次需要查询大量的列的场景。联机分析的场景和列式数据库管理系统就非常般配。

为什么列式数据库更加适合联机分析场景?

  • 在联机分析系统中,一般只读取每个表的一小部分列,这匹配了列式数据库系统的优势。
  • 在联机分析系统中,数据一般都是批量读取的,压缩也非常容易。同时,由于每列都存放在一起,所以压缩率会比行式存储更高(因为同一列的数据的数据分布更加集中,更好创建字典)可以降低IO体积,IO的降低将更好地帮助系统缓存这些数据。

数据库系统设计

SQL

SQL是一种DSL,支持对数据库进行操作。SQL具有标准化、高度非过程化(高抽象度)、语言简洁,简单易用。

数据库的架构

  • Client 客户端
  • Parser 对SQL进行语法分析,生成对应的AST
  • Analyzer 语法分析,检查SQL语句的正确性
  • Optimizer 优化器,对SQL语句进行优化,提高性能
  • Executor 执行器,按照SQL语句的指令在存储引擎上执行命令
  • Storage Engine 存储引擎,管理数据库内部的数据结构

本质上可以把SQL堪称一种解释型语言,SQL服务器主要做的就是解释执行客户端发来的语言。