这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
ClickHouse
ClickHouse 是俄罗斯的“百度”——Yandex 公司在 2016 年开源的一款针对大数据实时分析的高性能分布式数据库,与之对应的有 Hadoop 生态 hive,Vertica 和百度出品的 palo。这是“战斗民族”继 Nginx 后,又开源的一款“核武器”。那么其作为分析型数据库,有 三大特点:
- 跑分快
- 功能多
- 文艺范
ClickHouse 特性
-
采用列式存储
-
数据压缩
-
CPU 利用率高,在计算时会使用机器上的所有 CPU 资源
-
支持分片,并且同一个计算任务会在不同分片上并行执行,计算完成后会将结果汇总
-
支持 SQL,SQL 几乎成了大数据的标准工具,使用门槛较低
-
支持联表查询
-
支持实时更新
-
自动多副本同步
-
支持索引
-
分布式存储查询
ClickHouse性能
-
低延迟: 对于数据量(几千行,列不是很多)不是很大的短查询,如果数据已经被载入缓存,且使用主码,延迟在 50MS 左右。
-
并发量: 虽然 ClickHouse 是一种在线分析型数据库,也可支持一定的并发,但当单个查询比较短时,官方建议 100 Queries / second。
-
写入速度: 在使用 MergeTree 引擎的情况下,写入速度大概是 50 - 200M/s,如果按照 1K 一条记录来算,大约每秒可写入 50000 ~ 200000 条记录每秒。如果每条记录比较小的话写入速度会更快。1 亿条数据的文件 2.2GB,导入 Clickhouse 用时 24 秒。查询统计用时 0.185 秒。
ClickHouse 数据类型
-
UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64。
-
Float32, Float64
-
String
-
Date
-
DateTime
ClickHouse SQL 语句
建库
CREATE DATABASE test ENGINE = Ordinary;
建表
CREATE TABLE 表名(字段名 数据类型...) ENGINE = 存储引擎(日期字段, (主键), 索引粒度);
插入数据
INSERT INTO 表名 [(字段名...)] VALUES (值...), ...
查询数据
SELECT 字段名... FROM 表名 WHERE 条件;