初探ClickHouse
作者:互联网
一、简介
ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System),简称CK , 使用C++语言来实现的,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
ClickHouse是一个完全的列式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生 client。另外就是它比较快。
ClickHouse是一个用户联机分析(OLAP)的列式数据库管理系统(DBMS)
在传统的行式数据库中,处于同一行的数据总是被物理的存储在一起,
常见的行式数据库有MySQL、Postgres、MySQL server、 Postgresql等
行模式存储适合OLTP(Online Transacation Processing)系统。因为数据基于行式存储,所以数据的写入会更快,对按记录查询也更快,
列模式存储适合OLAP(Online Analytical Processing)系统,适用于在线分析,实时计算。
常见的列式数据库有HBase、Druid、HP Vertica等
不同的数据存储方式适合不同的业务场景,数据访问的场景包括:进行了何种查询、多久查询一次以及各类查询的比例;每种类型的查询(行、列、字节)读取多少数据;读取数据和更新之间的关系;
使用的数据集大小以及如何使用本地的数据集;是否使用事务,以及它们之间如何进行隔离的;数据的复制机制与数据的完整性要求;每种类型的查询要求的延迟与吞吐量等。
二、安装
这里使用docker安装
https://hub.docker.com/r/clickhouse/clickhouse-server/
docker pull clickhouse/clickhouse-server
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
docker run -it --rm --link some-clickhouse-server:clickhouse-server --entrypoint clickhouse-client clickhouse/clickhouse-server --host clickhouse-server
三、表引擎
表引擎作为ClickHouse的一大特色,可以说,表引擎决定了如何存储表的数据。
- 表引擎决定了数据的存储方式以及数据的存储位置,数据写入到哪里以及要从哪里来读取数据
- 表引擎的不同支持的查询也会不同,以及支持的方式也会不同
- 表引擎可以支持并发数据访问
- 表引擎也支持索引的使用(如果索引存在)
- 表引擎可以决定是否可以执行多线程请求
- 表引擎提供了数据的复制参数
ClickHouse的表引擎一般常见的有五种,TinyLog、Memory、MergeTree、ReplacingMergeTree以及SummingMergeTree
TinyLog
最简单的表引擎,用于将数据存储在磁盘上,每列都单独存储在单独的压缩文件中,写入时,数据将附加在文件末尾,不支持索引,没有并发控制,一般适用于保存少量数据的小表
Memory
Memory是一种内存引擎,数据会以未压缩的原始形式直接保存在内存中,服务器重启数据会消失,对于读写操作不会阻塞,但是不支持索引。简单查询下有非常高的性能表现(10G/s)
MergeTree
ClickHosue中最强大的表引擎当属MergeTree(合并树)引擎以及该系列(*MergeTree)中的其他引擎,它支持索引和分区,地位相当于Mysq的innodb。
ReplacingMergeTree
ReplcaingMergeTree是MergeTree的一个变种,它存储特效完全继承MergeTree,只是多了一个去重的特性,尽管MergeTree可以设置主键,但是primary key并没有唯一约束的功能,如果想要处理重复
数据,可以用ReplcaingMergeTree
SummingMergeTree
对于不查询明细,只关心以维度进行汇总聚合的场景,如果只使用普通的MergeTree的话,无论是存储空间的开销,还是临时聚合的开销都是很大的,ClickHouse为了这种场景,提供了一种能够预
聚合的引擎SummingMergeTree。
标签:存储,server,引擎,ClickHouse,初探,查询,数据,clickhouse 来源: https://www.cnblogs.com/LiuFqiang/p/16700895.html