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

1、介绍

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

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

解释:

DBMS:数据库管理系统

常见的列式存储数据库:Hbase、ClickHouse、Druid

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

OLTP:On-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’)

时间类型:Date、Datetime、Datetime64

数组类型: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)查询

支持子查询、CTE(Common Table Expression 公用表表达式/临时结果集,例如with a as xxx)、join、group 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小的副本进行数据的读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值