学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
Python实战微信订餐小程序 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
Python量化交易实战 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
ClickHouse是什么数据库?ClickHouse速度有多快?应用场景是怎么样的?ClickHouse是关系型数据库吗?ClickHouse目前是很火爆的一款面向OLAP的数据,可以提供秒级的大数据查询。
Google于2003~2006年相继发表了三篇论文“Google File System”“Google MapReduce”和“Google Bigtable”,将大数据的处理技术带进了大众视野。2006年开源项目Hadoop的出现,标志着大数据技术普及的开始,大数据技术真正开始走向普罗大众。长期以来受限于数据库处理能力的大数据技术,开始了波澜壮阔的技术革新浪潮席卷而来。Hadoop最初指代的是分布式文件系统HDFS和MapReduce计算框架,但是它一路高歌猛进,在此基础之上像搭积木一般快速发展成为一个庞大的生态,包括Yarn、Hive、HBase、Spark等数十种之多组件相继开源。Hadoop全家桶很快成为了主流。传统关系型数据库所构建的数据仓库,被以Hive为代表的大数据技术所取代,数据查询分析的查询计算引擎Spark、Impala、Kylin等都出来了。Hadoop成为大数据的代名词。
Hadoop虽然带来了诸多便利性,随着时代的发展,但是也带来了一些新的问题。
当然这是hadoop生态的确定,但是目前最普及的方案还是hadoop莫属,但是hadoop生态在大数据量的查询和组件的笨重确实存在,在日常的数据开发中,数据分析,BI等都需要查询数据,目前的hadoop查询引擎提供的查询速度,相对于ClickHouse,会慢很多。
所以,这款非Hadoop生态、简单、自成一体的技术组件ClickHouse横空出世。
ClickHouse背后的研发团队是一家俄罗斯本土的互联网企业Yandex公司,2011年在纳斯达克上市,它是现今世界上最大的俄语搜索引擎,占据了本国47%以上的搜索市场,Google是它的直接竞争对手。 ClickHouse的前身是一款在线流量分析的产品Yandex.Metrica,类似Google Analytics,随着Yandex.Metrica业务的发展,其底层架构历经四个阶段,最终形成了大家现在所看到的ClickHouse。
ClickHouse是一款高性能、MPP架构、列式存储、具有完备DBMS功能的OLAP数据库。
ClickHouse可以在存储数据超过20万亿行的情况下,做到了90%的查询能够在1秒内返回。它基本能够满足各种数据分析类的场景,并且随着数据体量的增大,它与Spark、Impala、Kylin对比,优势也会变得越为明显。
ClickHouse适用于商业智能领域(BI),也能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域。应该说它适合的场景,就是OLAP。
ClickHouse不是万能的。它对于OLTP事务性操作的场景支持有限,它有以下几点不足。
这些弱点并不能视为ClickHouse的缺点,事实上其他同类高性能的OLAP数据库同样也不擅长上述的这些方面。因为对于一款OLAP数据库而言,上述这些能力并不是重点,只能说这是为了极致查询性能所做的权衡。
前面我们说了ClickHouse以在存储数据超过20万亿行的情况下,在1秒内返回查询,那它是怎么做到的?主要有下面的原因。
上图中,右侧为vectorization(向量化计算),左侧为经典的标量计算。将多次for循环计算变成一次计算完全仰仗于CPU的SIMD指令集,SIMD指令可以在一条cpu指令上处理2、4、8或者更多份的数据。在Intel处理器上,这个称之为SSE以及后来的AVX;在ARM处理器上,这个称之为NEON。
因此简单来说,向量化计算就是将一个loop——处理一个array的时候每次处理1个数据共处理N次,转化为vectorization——处理一个array的时候每次同时处理8个数据共处理N/4次,假如cpu指令上可以处理更多份的数据,设为M,那就是N/M次。
为了实现向量化执行,需要利用CPU的SIMD指令。SIMD的全称是Single Instruction Multiple Data,即用单条指令操作多条数据。现代计算机系统概念中,它是通过数据并行以提高性能的一种实现方式,它的原理是在CPU寄存器层面实现数据的并行操作。ClickHouse目前利用SSE4.2指令集实现向量化执行。
而分布式数据属于基于分而治之的基本思想,实现的优化,如果一台服务器性能吃紧,那么就利用多台服务的资源协同处理。这个前提是需要在数据层面实现数据的分布式,因为计算移动比数据移动更加划算,在各服务器之间,通过网络传输数据的成本是高昂的,所以预先将数据分布到各台服务器,将数据的计算查询直接下推到数据所在的服务器。
如果还想了解更多关于ClickHouse,可以看看这个文档,也可以看看ClickHouse官方网站的文档
ClickHouse经典中文文档分享
文章参考:ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景