阿里腾讯头条快手都在用的Clickhou

北京中科医院几级 https://yyk.99.com.cn/fengtai/68389/jianjie.html

又是一年七夕到了,有对象的人打开手机,准备给女朋友买个礼物,一打开女朋友的淘宝,包包、化妆品、项链、手链、衣服….全都是各种推荐,每一样都很心动,买什么好呢?反正都是女朋友喜欢的,随便买一样,准没错。那么没有对象的人难道就不能过七夕了吗?当然不是,打开手机,刷刷抖音,各种搞笑视频,笑的根本停不下来,愉快的一天就过去了。

在玩手机的同时,有木有发现它很懂你的心,给你推荐的内容基本是你可以接受的?甚至还有点让你小心动,偶尔也让你有点小惊喜,让你不得不感叹系统的强大“太厉害了,居然知道”。在这个“最懂你”的系统背后其实是ClickHouse大数据库在提供支持噢。头条内部有上千近万个clickhouse节点,单集群最大节点数,总数据量几十PB;快手内部也使用ClickHouse,存储总量大约10PB。俗话说“二十一天养成一个习惯”,在二十一天内重复的做一件事,最后这件事必定深入你的生活,同样,头条快手将你二十一天、二百一十天的数据全都进行用户画像、用户行为分析,最后呈现给你的内容,必定打动你心啊。

那么ClickHouse到底是什么呢?它有什么特性可以获得如此多大厂的青睐、互联网企业的使用呢?今天我们就来详细介绍这款数据库。

ClickHouse是用于联机分析(即OLAP,OnLineAnalyticalProcessing)的列式数据库管理系统DBMS。OLAP与OLTP是相对的,OLAP主要是用于读取数据、进行数据分析,辅助运营决策分析;OLTP(OnLineTransactionProcessing)联机事务处理是进行事务的增删改查操作,比如在电商系统中进行商品的购买、库存减少等。

在OLAP场景中侧重于对数据的分析,因此读数据操作是多于写数据的。在数据一次性写入后,数据工程师需要从各个角度对数据进行挖掘、分析,直到发现其中的业务变化趋势,对于数据的读取是非常频繁,而且不需要数据的更新,也不需要事务来强调一致性,只要获取到数据就好啦,ClickHouse非常适合作为底层数据库提供支持。

所谓列式数据库指的是数据在数据库中存储的方式。在传统的关系型数据库如Mysql中,数据是按行来存储的,而在列式数据库如ClickHouse中,数据是按列来存储的。这样存储的好处就是在做数据分析时选择某几列来作为分析属性,获取数据非常快,延迟低,如果按行读取,每次只能读取一个数据,有条就需要读取次,降低了效率。

在分析场景下,列式数据库还有很多其它的优点,比如低成本、低带宽、低延时。在列式数据库中我们知道同一列的数据都是一个类型的,那么可以将它进行压缩,在同样的存储空间下可以放更多的数据,既节省了网络带宽,也提高了数据的cache命中率,更容易更快地获取到数据。

介绍了ClickHouse的基本特性之后,我们再从存储层和计算层看看它又给我们带来哪些惊喜呢?在存储层它实现了数据有序存储、主键索引、稀疏索引、数据分区分片、主备复制等功能。

所谓数据的有序存储指的是数据在建表时可以将数据按照某些列进行排序,排序之后,相同类型的数据在磁盘上有序的存储,在进行范围查询时所获取的数据都存储在一个或若干个连续的空间内,极大地减少了磁盘IO时间;所谓数据分区分片,指的是在ClickHouse的部署模式上支持单机模式和分布式集群模式,在分布式中会把数据分为多个分片,并且分布到不同的节点上,它提供了丰富的分片策略,包含random随机分片(将写入数据随机分发到集群中的某个节点)、constant固定分片(将写入数据分发到某个固定节点)、columnvalue分片(将写入数据按某一列的值进行hash分片)、自定义表达式分片(将写入数据按照自定义的规则进行hash分片)。

在计算层ClickHouse提供了多核并行、分布式计算、近似计算、复杂数据类型支持等技术能力,最大化程度利用CPU资源,提升系统查询速度。所谓多核并行指的是在ClickHouse中数据是被分成了多个分区,查询某条数据时通过多分区的数据利用CPU的多核同时并行处理获取数据,降低了查询时长;所谓分布式计算指的是ClickHouse将查询任务拆分成多个子任务下发到多个集群中进行多机并行处理,最后汇聚结果给到用户,提供最近hostname规则(即将任务下发到机器最近的hostname节点)、inorder(即按顺序进行分发,当某个分片不可用时,下发到下一个分片);所谓近似计算指的是牺牲一定的精确度获取数据,在海量数据的分析中,其实并不需要非常精准的数据,近似数据足以分析决策,ClickHouse提供了中位数、分位数等多种聚合函数,极大的提高了查询性能,减轻了计算压力。

ClickHouse的发展可谓是非常快速,除了各个大厂都在使用之外,在社区方面,github标记为星级项目的人超过,成为最受开源的项目之一。它是一套完整的解决方案,自带存储能力、计算能力,自己实现了分布式计算、分布式集群部署,完全高可用,真可谓是简单灵活又不失强大!

在云计算、大数据的互联网时代,数据分析成为了一项尤其重要的能力,如果你还会这么一门大数据库技术,毫无疑问,绝对会为你的简历加分喔,毕竟阿里、腾讯、头条、快手都已经在使用ClickHouse了呀~




转载请注明:http://www.aierlanlan.com/rzdk/4861.html