ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初探ClickHouse

2022-09-16 18:34:27  阅读:335  来源: 互联网

标签:存储 server 引擎 ClickHouse 初探 查询 数据 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有