【大数据面试】ClickHouse:介绍、特点、数据类型、引擎、操作、副本、分片

1、介绍

开源的列式存储数据库(DBMS),由C++编写,用于在线分析处理查询(OLAP

可以通过SQL查询实时生成分析数据报告

解释:

DBMS:数据库管理系统

常见的列式存储数据库:HbaseClickHouseDruid

OLAPOn-Line Analytical Processing,联机分析处理,做数据统计和分析的平台

OLTPOn-Line Transaction Processing,联机事务处理,业务数据处理的平台

 

2、特点

列式存储适用于聚合统计操作、便于压缩和缓存

兼容SQL语法和DBMS的功能

可以根据需求选择多种引擎

顺序写+压缩,保证了高吞吐写入能力

划多个分区及索引粒度,可以实现并行处理,可以充分利用CPU,但不适用于多条查询

 

3、常见的数据类型

整形:(U)Int8-64

浮点型:Float32-64,存在误差,适用于精度要求不高场景

×布尔型:无专门类型,常用UInt8表示,取值0/1

Decimal类型(可保持精度的有符号浮点类型):Decimal32(s)-128

字符串类型:任意长/定长字符串FixString(N)

枚举类型:Enum8/16,例如x Enum8('hello' = 1, 'world' = 2),插入是VALUES(hello),(world),或转换整形查询CAST(x,Int8)

时间类型:DateDatetimeDatetime64

数组类型:array(1, 2) AS x[1, 2] AS x

 

4、常见的表引擎

表引擎介绍:显式声明、决定存储方式和位置、并发索引多线程

TinyLog:保存到磁盘,无索引和并发控制,仅用于测试少量数据

Memory:存至内存,无索引,查询性能高,小数据量

MergeTree-合并树:可设置分区(不同文件、写入合并)、主键(非唯一约束,默认间隔8192)和排序字段(前缀字段必须为主键)、可设置表级别和列级别TTL生命周期

ReplacingMergeTree:去重合并树,避免了无唯一约束,重复数据保留版本字段大(参数, 常为时间)

SummingMergeTree:适用于根据维度进行汇总聚合,参数传递汇总列

 

5、常见操作

1)插入

2)更新/删除:
重操作,会改变分区(建议做批量变更)

语法:alter table t_order_smt delete/update

执行:先为新数据新建分区,把旧分区打失效标记,通过分区合并的触发,删除旧数据
3)查询

支持子查询、CTECommon Table Expression 公用表表达式/临时结果集,例如with a as xxx)、joingroup by的各种小计操作:

with rollup:自右至左去掉维度小计

with cube:先自右至左,再自左至右进行小计

with totals: 计算合计

4)修改字段操作

增删改字段

alter table tableName add / modify / drop column

5)数据导出操作

clickhouse-client --query "select * from t_order_mt where create_time='2020-06-01 12:00:00'" --format CSVWithNames > /opt/module/data/rs1.csv1

 

6、副本-高可用性

写入流程:写入数据后将写入日志提交到zk,副本收到zk的写入日志后从主节点下载新数据

配置步骤:同步xml配置文件,分别建表,引擎采用ReplicatedMergeTree

参数传递:engine =ReplicatedMergeTree('/clickhouse0225/table/01/t_order_rep','rep_102')

 

7、分片集群

1)解决问题:横向扩容、水平切分

2)操作:不同分片在不同节点,使用Distributed 表引擎实现数据拼接

3)读取流程:选择error count小的副本进行数据的读取

posted @ 2022-01-19 16:45  哥们要飞  阅读(325)  评论(0编辑  收藏  举报