简介

随着数据的指数级增长、算力提升和人工智能(例如ChatGPT)等技术的不断发展,比较传统仅仅依靠个人经验与主观的战略业务决策是否还有意义呢?

这里就要先介绍两个概念当下流行的流程驱动与数据驱动机制,传统的业务流程决策都是以套路化和人为最核心的驱动,每个人都具有清晰的职责,是整个流程驱动中的一个钉子,这样的一个层次结构,非常符合人类的思维逻辑。

随着互联网和软件行业的发展,业务流程+信息化的沉淀、为数字化打下了厚实的基础。这个时代下就有人提出了新的概念:要打造数据驱动的文化,如互联网先驱Google,麦肯锡这样的公司:

![image-20230215081555289](/Users/mac/Library/Application Support/typora-user-images/image-20230215081555289.png)

数据驱动指的是流程中的行为是被数据驱动而不是被人的直觉和经验驱动的,数据驱动型决策 (DDDM) 的定义是使用事实、指标和数据来指导与您的目标、追求和计划一致的战略业务决策。定义是“构建工具、能力,最重要的是,依据数据去决策行为的文化”。

之前火山引擎总经理谭待以《数据驱动x敏捷开发,业务高速增长的双引擎》为主题深度解密了字节跳动业务快速发展的两大技术理念——数据驱动、敏捷开发,分享如何构建数据驱动的飞轮,以及如何通过全栈云原生架构,支撑大规模应用实现敏捷开发。其中飞轮建设分为四个关键步骤, 业务过程数字化、数字化协同、数据驱动业务优化、客观的分析评估。 而在底层,面向每天产生的大规模、批量、实时的数据,离不开一套完整的数据采集、研发和治理的套件,提升数据开发的效率。字节基于开源的Clickhouse项目,根据内部需求改造,最终形成的一个云原生的大规模数据分析平台ByteHouse。对于大部分公司来说改造Clickhouse实现自己的ByteHouse是不太现实的,那接下来可以看下单纯的使用Clickhouse做实时分析是否是有价值的。

Clickhouse是什么呢?

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 它既可以作为开源软件使用,也可以作为云产品使用。

ClickHouse 最初是为世界第二大网络分析平台Yandex.Metrica开发的,并将继续成为该系统的核心组件。ClickHouse 在数据库中有超过 13 万亿条记录,每天有超过 200 亿个事件,允许直接从非聚合数据动态生成自定义报告。

为什么要用列式数据库?

列式数据库更适合于OLAP场景(对于大多数查询而言,处理速度至少提高了100倍),下面详细解释了原因(通过图片更有利于直观理解):

行式

Row-oriented

列式

Column-oriented

Clickhouse具有紧凑的数据存储,相比HBase,BigTable,Cassandra,HyperTable等列式数据库。在这些系统中,你可以得到每秒数十万的吞吐能力,但是无法得到像Clickhouse这样每秒几亿行的吞吐能力。

为何不使用 MapReduce等技术?

我们可以将MapReduce这样的系统称为分布式计算系统,其中的reduce操作是基于分布式排序的。这个领域中最常见的开源解决方案是Apache Hadoop。

这些系统不适合用于在线查询,因为它们的延迟很大。换句话说,它们不能被用作网页界面的后端。这些类型的系统对于实时数据更新并不是很有用。如果操作的结果和所有中间结果(如果有的话)都位于单个服务器的内存中,那么分布式排序就不是执行reduce操作的最佳方式,这通常是在线查询的情况。在这种情况下,哈希表是执行reduce操作的最佳方式。优化map-reduce任务的一种常见方法是使用内存中的哈希表进行预聚合(部分reduce)。用户手动执行此优化。在运行简单的map-reduce任务时,分布式排序是导致性能下降的主要原因之一。

大多数MapReduce实现允许你在集群中执行任意代码。但是声明性查询语言更适合于OLAP,以便快速运行实验。例如,Hadoop有Hive和Pig。还可以考虑使用Cloudera Impala或Shark(已经过时了)来支持Spark,以及Spark SQL、Presto和Apache Drill。与专门的系统相比,运行这些任务的性能是非常不理想的,但是相对较高的延迟使得使用这些系统作为web界面的后端是不现实的。

入门

ClickHouse被广泛应用于流量分析、广告营销分析、行为分析、人群划分、客户画像、敏捷BI、数据集市、网络监控、分布式服务和链路监控等业务场景。下面两个图主要来源于阿里云社区,可以整体看下Clickhouse的社区版本与运维限制。

![image-20230301064139522](/Users/mac/Library/Application Support/typora-user-images/image-20230301064139522.png)

![image-20230301063918950](/Users/mac/Library/Application Support/typora-user-images/image-20230301063918950.png)

安装教程

ClickHouse官网提供了完善的安装教程和数据示例集合,可以尝试安装一个,详细的安装命令与导入数据的教程均可以在官网网站找到,同时官网也支持中文版本搭建部署相对简单。

![image-20230301061917156](/Users/mac/Library/Application Support/typora-user-images/image-20230301061917156.png)

ClickHouse 是新生代的 OLAP,尝试使用了很多有趣的实现,虽然仍旧有很多不足,比如不支持数据更新、动态索引较差、查询优化难度高、分布式需要手动设计等问题。但由于它架构简单,整体相对廉价,实时查询性能比较高,逐渐得到很多团队的认同,很多互联网企业加入社区,不断改进 ClickHouse,更多参考资料可以在微信公众号 《中间件源码》 中回复 clickhouse 获取。