在大数据时代,凡是AI类项目的落地,都需要具备数据、算法、场景、计算力四个基本元素,缺一不可。
处理大数据已经不能仅仅依靠计算力就能够解决问题,计算力只是核心的基础,还需要结合不同的业务场景与算法相互结合,沉淀出一个完整的智能化平台。
数据中台就是以云计算为数据智能提供的基础计算力为前提,与大数据平台提供的数据资产能力与技术能力相互结合,形成数据处理的能力框架赋能业务,为企业做到数字化、智能化运营。
目前,外界与业内很多人对于数据中台的理解存在误区,一直只是在强调技术的作用,强调技术对于业务的推动作用,但在商业领域落地的层面上,更多时候技术的发展和演进都是需要跟着业务走,技术的发展和进步需要基于业务方的需求与数据场景应用化的探索来反向推动。
这个也就是为什么最近知乎、脉脉都在疯传阿里在拆“大中台”?个人猜想,原因是没有真正理解中台的本质,其实阿里在最初建设数据中台的目的主要是为了提升效率和解决业务匹配度问题,最终达到降本增效。
所以说“拆”是假的,在“拆”的同时一定在“合”,“拆”的一个方面是企业战略布局层面上的规划,架构升级,如果眼界不够高,格局不够大,看到的一定只是表面;另一方面不是由于组织架构庞大而做“拆”的动作,而是只有这样才能在效率和业务匹配度上,做到最大利益化的解耦。
数据中台出现的意义在于降本增效,是用来赋能企业沉淀业务能力,提升业务效率,最终完成数字化转型。前一篇数据中台建设的价值和意义,提到过企业需要根据自身的实际情况,打造属于自己企业独有的中台能力。
因为,数据中台本身绝对是不可复制的,从BCG矩阵的维度结合各家市场资源、市场环境、市场地位以及业务方向来看,几乎所有企业的战略目标都是不一样的。
一、数据中台演进的过程
从数据处理的维度来聊一聊数据中台经历的四个阶段:数据库阶段、数据仓库阶段、数据平台阶段、数据中台阶段。
刚好之前本人经历过电商公司的0 - 1 - N,就拿电商行业来举个例子,更好的让大家理解数据中台演进的四个阶段
1、数据库阶段
电商创业早期启动非常容易,门槛相对来说较低,试错成本较少。三五个小伙伴组个小团队,做一个可以下单的前端页面,云上搭几台服务器再加上一个MySQL数据库,形成一个简单的OLTP系统,就可以给用户去使用,它的主要作用用于保证数据持久化存储和简单商品交易查询。
现在估计很多小型电商与小程序创业者的初期都是这么干的,甚至找个外包团队做完就开始对于市场试错。
原因很简单,从ROI来看,项目前期业务数据量不大,简单的GB级别,每天的订单和流量数都比较少,后端数据库只要做简单的单条数据的查询和展示就能够满足了需求,根本就没有什么高并发,批量处理等高深技术,就连做在初期做数据统计/分析用Excel就可以满足需求。
最终,随着客户、订单和外部流量的逐步上升,数据量从GB发展成TB级别,数据库通过普通查询存在较大的压力,只能做升级改造,于是就有了数据仓库的诞生。
2、数据仓库阶段
随着业务指数级的增长,数据量增长的同时公司的组织架构慢慢变得庞大、复杂,面临的问题也越来越多,越来越深入。公司上层关心的问题,从最初简单的想知道“昨天、今天的GMV”、“上周的PV、UV是多少”、“某品类商品的环比、同比的增长比例是多少”,慢慢演化到希望通过数据进行精细化运营和用户的价值模型分析。
希望通过数据统计/分析/挖掘,分析出用户在某种特定的使用场景中,比如“18~25岁女性用户在过去三个月对服装类商品的购买行为与节假日促销活动之间的关系”。
当公司运营和高层,提出此类非常具体的case,希望通过数据统计/分析/挖掘对公司运营决策起到关键性作用的问题,其实是很难从业务数据库从直接调取出来。
原因是由于数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,为捕获数据而设计,在设计上数据库是尽量避免冗余,一般采用符合范式的规则来设计。
比如,业务数据库中的数据结构是为了完成商品交易而设计的,不是为了查询和分析的便利设计的。数据仓库存储的一般是历史数据,为分析数据而设计,在设计上是有意引入冗余,采用反范式的方式来设计。
数据库和数据仓库两个基本的元素都有维表和事实表。(维表是看问题的角度,比如时间,部门、人,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维表的ID)。
因此,数据仓库的出现,并不是要取代数据库,而是为了更好的做数据分析和报表需求分析,主要处理OLAP(联机分析处理)需求。
但是,随着客户、订单和外部流量的逐步上升,数据量从TB发展成PB级别,原来的技术架构越来越不能支持海量数据处理,这时候又有了数据平台的诞生。
3、数据平台阶段
第一、企业业务系统过多,彼此数据没有打通。涉及分析数据的过程当中,需要先从各个系统寻找到相应的数据,然后提取数据进行整合打通,才能做数据分析。在这个过程中人为进行整合出错率高,分析效果不及时,导致整体的效率低下,数据迁移、数据同步的滞后与错误;
第二、业务系统压力大,架构相对笨重,做数据分析计算消耗资源很大。需要通过将数据抽取出来,经过独立服务器来处理数据查询、分析任务,来释放业务系统的压力;
第三、性能问题,公司业务越来越复杂,数据量越来越大。历史数据的积累严重,数据没有得到使用。原始数据系统不能承受更大数据量的处理时,数据处理效率严重下降。
于是,通过整合Hadoop/Spark/Storm/Flink等分布式的离线与实时计算框架,建立计算集群,并在上面运行各种计算任务,搭建大数据平台,使得平台具有数据互联互通、支持多数据集实时同步、支持数据资源管理,实现多源异构数据的整合管控能力;
可以提供完善的大数据分析基础运行环境,提供统一二次开发接口等能力的,用这些能力来解决大数据存储与计算问题,提升数据分析效率以及用户画像系统/推荐/搜索系统的运用落地。
4、数据中台阶段
数据量的指数级增长,从PB发展成EB级别,为了更好的赋能业务,企业启动中台战略,打通各个业务线的数据,整合汇集数据,在底层通过技术手段解决数据统一存储和统一计算问题。
在数据服务层通过数据服务化的Data API的方式,打通数据平台和前台的业务层对接,结合算法,把前台业务的分析需求和交易需求直接对接到中台来,通过数据中台处理和逻辑运算,然后在反向赋能业务,真正做到意义上的『一切业务数据化,一切数据业务化』。
二、数据仓库、数据平台和数据中台的架构
数据仓库架构图
1、采集层
从各种数据源中采集数据和存储到数据到存储在基于Hadoop分布式文件系统HDFS上,期间做ETL操作。其中数据采集一般采用Flume收集日志,采用Sqoop将RDBMS以及NoSQL中的数据同步到HDFS上
数据源主要有:日志数据(服务器日志 + 系统日志等)+ 业务数据库(Mysql、Oracle等)+ 埋点数据(服务端埋点 + 移动端埋点数据等)+ 其他数据(Excel手工录入的数据、合作伙伴提供的接口数据、第三方爬虫数据、合法购买的第三方数据等)
2、存储与分析层
主要有离线计算 + 实时计算
3、共享层
通过离线和实时计算的数据分析与计算后的结果存储在数据共享层,做数据共享层,主要做数据分发和调度中心。因为通过Hive、MR、Spark、SparkSQL分析和计算的结果,是存储在HDFS上,业务和应用不可能直接从HDFS上获取数据。其中使用Kylin作为OLAP引擎做多维度分析
4、数据应用
报表展示 + 数据分析 + 即席查询 + 数据挖掘
5、任务调度与监控
数据平台架构图
1、采集层
基于Hadoop分布式文件系统对采集层的数据进行存储。
2、数据层
一方面,把相关业务结构化数据和有一定格式关系的半结构化的数据存放在Hadoop Hive数据仓库中,基于业务需求,按照特定的业务主题域进行数据集市的构建;另一方面把相关业务中半结构化的数据直接存放在HDFS分布
3、计算层
离线计算 + 实时计算
4、应用层
可视化数据分析报表 + 搜索/推荐/广告具体的场景应用
5、任务调度与监控
阿里数据中台架构图
三、数据仓库、数据平台和数据中台的区别与联系
数据仓库、数据平台和数据中台的区别与联系:
1、在概念层面上
数据平台和数据中台的技术能力都是基于数据仓库发展而来的,在数据建设理论上一脉相承,他们处理的对象都是海量数据,服务目的、商业价值也同样类似。其实中平台和中台,两者在能力上都有对外都提供Open API服务。
一方面,中台是业务应用,不具体代表着某种技术,它不是最终用户能直接使用的,必须结合企业的各个数据业务场景;另一方面,平台是不带有业务特征性质的,主要汇集其他人的能力,整合成平台的能力,相对来说是静态的,而中台是动态变化的本身,需要通过数据驱动的方式来滋养业务,不断训练调整业务模型和业务算法提供的能力,提供给其他系统和平台集成的能力。
2、在数据层面上
数据仓库的数据来源主要来源于RDBMS,其中存储的数据格式以结构化数据为主,这些数据并非企业全量数据,而是根据企业业务需求做针对性整合、抽取。数据平台和数据中台的数据来源的期望都是全域级的数据,主要有结构化数据、半结构化数据、非结构化数据等
3、在目标层面上
4、在应用层面上
建立在数据中台上的数据应用场景,不仅仅只是面向于数据报表开发分析与展示处理,更多是将数据变成服务化的方式,然后提供给业务系统。