Clickhouse的架构设计&clickhouse快的原因

本文详细探讨了Clickhouse的架构设计,包括Column与Field的基础映射,DataType的序列化处理,Block与Block流的数据操作,以及Table、Parse和Interpreter在查询中的角色。此外,还阐述了Clickhouse的快速查询能力源于列式存储、向量化函数执行和高效的算法选择。
摘要由CSDN通过智能技术生成

Clickhouse架构设计

Column与Field

Column和Field是Clickhouse数据最基础的映射单元。作为一款百分之百的列式存储数据库,clickhouse按列式存储数据,内存中的一列数据由一个Column对象表示。column对象分为接口和实现两个部分,在Icolumn接口对象中,定义了对数据进行各种关系运算的方法,例如插入数据的insertRangeFrom和insertFrom,用于分页的cut,以及用于过滤的filter等。而这些方法的具体实现对象则是根据数据类型不同,由相应的对象实现,例如ColumnString,ColumnArray和Columntuple等。在大多数场合,clickhouse都会以整列的方式操作数据库。如果需要操作单个数值,需要使用field对象,field对象代表一个单值。field采用了聚合设计模式,在field对象内部聚合了Null,Uint64,string,array等13种数据类型以及相应的处理。

DataType

数据的序列化和反序列化工作由datatype负责。Idatatype接口定义了许多正反序列化的方法,成对出现。涵盖常用的二进制、文本、json,csv,protobuf等。Idatatype也采用了泛化设计模式,具体方法实现逻辑由对应数据类型的实例承载,例如DataTypeString、DataTypeArray等。DataType虽然负责序列化相关工作,但它并不直接负责数据的读取,而是转由Column或Field对象获取。

Block与Block流

Clickhouse内部的数据操作时面向Block进行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值