数据仓库是大数据技术的核心模型,其发展历程也见证了数据智能从关系型向非关系型、从结构化到非结构化、从分布式到中心化、从零散化到标准化、从显式分析到智能分析的演化走向。如今,业界流行的各种新兴概念,包括数据中台、数据湖、流批一体等,都是基于数据仓库提出的优化方向。那么,数据仓库目前在业界的发展具备什么特点?如何从数据仓库的优化来理解这些新兴概念?
通过对数据仓库进行专家访谈和行业调研,DataFun对数据仓库目前的发展特点,也就是技术落地现状和趋势做了如下总结:引言
DataFun社区|出品
数据智能专家访谈 第01期|来源
数据仓库的标准化主要指的是数据治理。数据治理是数仓落地应用的核心问题,在近年受到越来越多的关注,其根本上是为了解决数据仓库烟囱式开发带来的资源浪费等问题。
例如上图所示,企业发展初期,因为业务模式不稳定,多个业务线都有独立研发的技术栈,到后期就会出现标准不统一、重复计算、模型依赖关系混乱的问题。
而经过标准统一、底层逻辑屏蔽和不同粒度的汇总,各个业务线的技术栈得以统一,就能大大简化模型计算链路、降低成本、提高速度。也可以从数据建模的角度来理解这个问题。数据建模是数仓建设的核心环节之一,包括自上而下(范式建模,Inmon模式)和自下而上(维度建模,Kimball模式)两种建模方式。范式建模主要在电信、金融、政务、工业等传统行业用的比较多,而互联网由于业务变化很快,初期需要更加灵活的分布式决策结构,因此维度建模会更加合适,但也因此基于Kimball模式建模的后期会出现数据孤岛问题和治理需求。不过,专家表示,维度建模在前期若有指导思想或方法论的话,或许能提前避免这个问题。在业界,数仓治理最核心的工作是改善数据质量,数据的完整性、一致性等指标都会影响最终的数据决策的好坏,这对于整个行业都是一个挑战。因为数据质量仅仅通过简单的唯一性校验、波动性校验等手段是很难排查出业务波动的根本原因的。而除了人为制定规则以外,如今也有不少企业正在尝试引入AI算法对质量监控进行预测,目前技术上尚未成熟,但AI的潜力值得期待。DataOPs是近期比较热的概念,很大程度上也是围绕数据质量的工作,但其本质和数据治理相差不远,关注数据生产的标准化、流程化、自动化、智能化,也就是将越来越多大数据技术环节中的人工工作自动化,也会开始结合AI技术,涉及开发和运维过程。上图展示了一个数仓开发的工作流程,包括模型检索、模型创建、ETL开发、作业发布、监控报警等全流程的标准化、自动化都是DataOPs关心的问题。提到标准化和数据治理,又不得不提到数据中台。目前业界对于数据中台都有不同的解释,有专家对DataFun表示,数据仓库和数据中台其实是相对的概念。实际上,中小企业通常只限于搭建数据仓库,很多中小企业声称的数据中台其实也是局限于某个业务的数据仓库,不是真正的数据中台。真正的数据中台主要在大企业,其中每个部门都拥有一个数仓体系,那么每个部门相当于一个小型公司。而在业务发展中后期会出现数据一致性、数据标准等方面的困难,因而就产生数据治理和建设中台的需求。这也意味着,数据治理通常只在大企业中有足够的需求。数据治理在标准化方面的一大特点是将并行的业务线进行合并。实际上,这种合并统一的趋势不仅存在于业务逻辑和数据层面,其根本上还存在于存储、计算、处理等底层逻辑中。存储、计算、处理的两种基本的开发模式是离线计算和实时计算,因此数仓标准化的另一个方向是流批一体。流批一体除了解决多条技术栈之间的标准不统一之外,还有一大好处就在于成本层面。在发展到一定阶段的时候,离线数仓通常已经无法满足业务需求了。而实时数仓对于下游的成本比较高,普惠性不足。根据一些分析结果,批计算的成本和数据体量大致呈线性关系,而流计算的成本却随着数据体量的增长而呈指数级增长,背后原因包括随机IO、存算不分离、写放大等。因而实时计算一般不直接面向业务,更多面向算法或数据工具。另外,流批一体能够实现状态复用,很多时候这是有必要的,因为离线计算在取数的时候,经常会遇到数据有效期不足的问题,而复用实时计算的结果就能很好地解决这个问题。总体而言,流批一体架构的好处是解决流批不统一带来的数据不一致、开发成本、使用成本、运维成本问题。人们一般默认流批一体的解决方案是Kappa架构,采用Kafka和Flink也就是消息队列和实时计算引擎的组合。但Kappa架构严重依赖消息队列的顺序处理,而在顺序存储上进行OLAP分析是比较困难的。因此在业界,许多企业开始探索通过数据湖方案实现流批一体,比如Iceberg支持读写分离,又支持并发读、增量读、小文件合并,还可以支持秒级到分钟级的延迟,因此可以实现近实时数据接入。
同时,Iceberg底层依赖列式存储,用于替换Kafka后就可以对OLAP分析进行基本的优化,在中间层直接用Flink执行批式计算或流式计算。最后,再结合Alluxio的缓存能力,就可以对近实时的数据湖架构进一步加速。尽管如此,目前在业界,无论是流批一体还是数据湖,其技术发展都还存在很大挑战。据专家反馈,业界的方案基本都局限于部分场景,距离通用方案还很遥远。流批一体的含义包含了多个层次,首先是存储流批一体,其次是计算流批一体,最后是处理结果的流批一体,也就是让同一段代码在分别做批处理和流处理时,得到的结果是一致的,而这通常也是最难的。
流批一体技术的需求自然来源于实时计算的发展。如今越来越多的服务面向ToC用户,实时性需求越来越强,这些业务包括了风控事件处理,搜广推的实时特征计算,以及指标监控等等,实时数仓的开发也愈发受到企业的重视和投入。目前而言,业界最关心的数据仓库核心性能指标是查询的实时性。性能指标设置对于业务成长非常重要,背后的考虑因素有两个,一个是性能本身会导致数据产出的延迟,另一个是性能差一般也代表着资源消耗大。提高数据处理实时性的解决方案类型主要有两种,包括:数据和业务逻辑优化(主要指数据治理)、底层计算引擎优化。其中,底层计算引擎的优化也是大企业比较常用的方法,常用的选型包括Spark、Flink、Blink等。但严格来说,对于大企业而言,一般不存在选型的概念。专家表示,因为大企业一般都有成熟的大数据平台,里面包括了采集、模型设计等模块,经过优化和协同,这些组件都已经封装成了一套完整的体系。但对于中小企业来说,他们一般很难抉择如何做具体的选型,一般都是考虑模仿大企业的架构,或者直接购买大企业的平台产品。除了查询以外,数仓中另一个消耗资源较大的流程是ETL。在业界,数仓比较常用的ETL模式是增量ETL和全量ETL。
数仓ETL通常面临的核心挑战是高效实施,也就是如何用最低资源产出最多成果,另一个是数据质量。
除了增量ETL、全量ETL之外,还有一种ETL的模式是流式ETL,自然也是源于实时计算的业务需求,据专家介绍,目前在业界的成熟度还比较低。模块化与标准化是相辅相成的,有标准化则必有模块化。
以数据治理为例,不同的业务线得以统一依赖的一个基本规律是,每个业务技术栈发展到中后期的时候,基本都能划分成标准化流程集合的不同组合,本质上与中台或微服务背后的思想是一致的。
流批一体也类似,由于目前的大数据架构都实现了存算分离,因此也可以分成计算和存储两大类。
相对于计算的流批一体,存储的流批一体已经比较成熟,比如Hive表流批查询一体,既可以查到离线的数据,也可以查到实时分钟级的数据。
而计算流批一体仍有较大挑战性,目前行业内也是局限于局部应用,还无法全场景应用。
计算流批一体有两种实现方式,其一是基于离线计算的流批一体方案,比如支撑阿里双十一活动的数仓架构,其二是基于流式计算的流批一体方案,比如支撑字节信息流广告或抖音视频推荐的数仓架构。
相比而言,基于流式计算的流批一体方案更好实现。主要是因为流式计算的体系尚未固化,还有很大的可改造和优化空间。而离线数仓体系已经比较固化,一旦涉及改造,成本就非常高了,包括人力成本、改造成本等等。
计算和存储是实现所有业务逻辑的核心,也是性能优化的根本。计算方面关心的性能指标主要包括查询速度、计算成本、高可用等,存储方面主要包括存储成本、数据读取等。
当然,这里提到存储方向比较成熟的主要考虑因素是成本。相对于计算成本,技术的进步使得存储成本要低得多。
但另一方面,计算和存储也是相对的概念,存储属于空间换时间(比如预计算),计算属于时间换空间(比如高压缩),在实际业务中,通常两者之间需要互相权衡和协同才可以兼顾性能和成本。
在模块化方面,数据建模遇到的问题在于还不能很好地实现模块化。其主要挑战之一是数据域划分与业务域划分的良好匹配,由于数据域和业务域会有不同步的变化过程,也会用不同的建模方式,因此快速的适应和匹配就成为难题。
而业务域的合理数据划分本身也是一个难题,很多企业一般都局限于数据源数据的划分,比如财务域、用户等,而没有直接针对业务进行数据划分,比如营销域、直播域、风控域等,缺少成熟的方法论指导。
在模块化方面,OLAP的一个比较重要的发展趋势是自助分析,也就是屏蔽底层逻辑的产品化趋势。
自助分析针对实时和离线场景的计算语义区别,可以通过参数化的方式,使系统可以自动判断场景是实时的还是离线的。甚至可以是选型透明的,可以基于不同的性能需求自动转换选型的加载。
模块化的一大好处是实现技术的快速迭代,以及快速地适应业务需求的变化,即敏捷OLAP,这也是OLAP在业界面临的一大挑战。以上我们相继讨论过实时查询、计算成本等指标,但实际上,这些都不能作为判断一个数仓好坏的标准。专家表示,对数据模型的优劣判断(比如数据的业务覆盖率、数据的业务使用率等),目前行业内还缺乏统一的、成熟的衡量指标。而数据模型是数仓的核心,其优劣判断关系到数仓整体能力的判断,重要性很高。通过以上分析可知,除了标准化、模块化、实时处理、整体衡量等发展特点以外,数据仓库也还面临许多整体层面的挑战,包括解决方案通用性、整体衡量标准等。
目前业界正在投入数据编织、DataOPs等方向,使得数据仓库在标准化、模块化等方面走的更远,并实现更强的通用性,从而实至名归地演化成数据中台、数据湖等架构,适应数据智能业务不断增长的规模化、多样化、产品化需求。
参考文献:
图片:DataFun
“数据智能专家访谈”是 DataFun 新推出的内容系列,本系列旨在访谈不同公司的核心技术人员,得到专家在不同领域的洞察,包括但不限于行业重点、热点、难点,增加读者对行业技术的了解。▌大话数智
大话数智,是DataFun策划的智库类公众号,包括但不限于知识地图、深度访谈、直播、课程等学习资料,旨在为广大数据智能从业者、数据智能团队提供一个日常学习成长的平台,促进先进的数据智能技术的传播与广泛落地。