这篇文章的内容主要围绕大数据分析引擎ClickHouse是什么进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
对于存储而言,列式数据库总是将同一列的数据存储在一起,不同列的数据也总是分开存储。
常见的列式数据库有:Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。
1、传统面对大数据量的处理方式:对数据进行分层,通过层层递进形成数据集市,从而减少最终查询的数据体量,比如提出数据立方体概念,通过对数据进行预先处理,以空间换时间,提升查询性能。关系型ROLAP:使用关系型模型构建,数据模型常使用星型模型或雪花模型多维型MOLAP:使用多维数组的形式保存数据,其核心思想是借助预处理聚合结果,使用空间换时间的形式提升查询性能混合架构HOLAP:可以理解ROLAP和MOLAP两者集成三、一匹横空出世的黑马ClickHouse
ClickHouse(全称:Click Stream,Data WareHouse)具有ROLAP、在线实时查询、完整的DBMS、列式存储、不需要任何数据预处理、支持批量更新、非常完善的SQL和函数支持、支持高可用、不依赖Hadoop生态及开箱即用等特点。Mysql时期->另辟蹊径的Metrage时期->自我突破的OLAPServer时期->水到渠成的ClickHouse时期采用MyISAM表引擎,采用B+数结构存储索引,而数据文件使用另外单独的存储文件,(区别于InnoDB表引擎使用B+树同时存储索引和数据,数据直接挂载在叶子节点中)数据模型层面:关系型模型改为Key-Value模型使用LSM树最具代表性的是Hbase数据库,LSM本质可以看成将原本一颗大树拆成了许多颗小树,每一批次写入的数据会在内存中构建出一个小树,构建完成即完成写入(这里会通过预写日志的方式,防止内存故障而导致数据丢失),写入数据只发生在内存,不涉及磁盘操作,所以极大的提高了写入速度。数据模型:换回了关系型,理由:关系型有更好的描述能力存储层面:与MyISAM表引擎类似,分为索引文件和数据文件索引层面:沿用LSM树,将索引文件和数据文件按列进行拆分,每个列字段独立存储。四、ClickHouse(全称:Click Stream,Data WareHouse)
非常适用商业智能领域,也广泛应用于广告流量、web、app流量、电信、金融、电子商务、信息安全、网络游戏、物联网等不擅长根据主键按行粒度查询(虽然支持),所以不应该把ClickHouse当作Key-Value数据库使用五、ClickHouse架构详解
ClickHouse是一款MPP架构的列式存储数据库,汲取了各家技术的精髓,将每一个细节做到了极致。DDL(数据库定义语言):可以动态的创建数据库、表和视图DML(数据库操作语言):动态的查询、新增、修改及删除数据不同的列保存在不同的文件中,数据中的重复项越多压缩率就越高,数据的体量就越小,传输就越快,对网络带宽和磁盘IO的压力就越小,使用LZ4算法压缩,压缩率达8:1.向量化引擎可以简单的理解做一项消除程序中循环的优化,原理是在寄存器层面的并行操作,寄存器的访问速度是内存的300倍,硬盘的3000万倍。关系模型(包括星型模型、雪花模型乃至宽表模型)相当于其它模型有更好的数据描述能力,另外注意ClickHouse SQL语法区分大小写。拥有合并数、内存、文件、接口和其他六大类20多种表引擎,每种引擎都有各自的特点,适用于不同的场景。如果说向量化执行是通过数据级并行方式提升了性能,那么多线程处理就是通过线程级并行方式实现了性能提升,相比底层硬件实现的向量化执行SIMD(单个指令处理多条数据),线程级并行方式由高层次的软件层面控制。分布式设计的思想是分而治之,在分布式有一条金科定律:移动计算比移动数据更划算。在存储方面ClickHouse既支持分区(纵向扩展,利用多线程原理),也支持分片(横向扩展,利用分布式原理),可以说将多线程和分布式技术应用到了极致。HDFS、Spark、Hbase和ElasticSearch这类分布式系统都采用了Master-Slave主从架构,由一个节点管控,而ClickHouse采用多主架构,客户端访问任何一个节点都能得到相同的结果。能够做到急速响应,且无须对数据进行任何预处理加工。数据分片是一种将数据横向切分,ClickHouse提供了本地表(Local Table)和分布式表(Distributed Table),本地表相当于一份数据分片,而分布式表本身不存储任何数据,它是本地表的访问代理,其作用类似分库中间件,借助分布式表可访问多个本地表,从而实现分布式查询。六、ClickHouse的设计原则,如此之快的秘诀
感谢你的阅读,相信你对“大数据分析引擎ClickHouse是什么”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!