新一代企业级大数据应用模式
三个问题
- 当下是否还需要一个复杂的EDW(企业级数据仓库)?
- 数据系统的目标用户是谁?
- 让数据适应计算能力还是计算跟着数据走?
数据仓库这个概念在二十多年前由Bill Inmon提出后,几乎所有的IT厂商都开始介入这个领域,为企业级数据仓库设计非常复杂的体系结构和数据模型,典型的企业级数据应用架构如下:
- 这个架构,层次结构非常清晰,但是链路非常长,导致数据冗余非常大,同时数据表结构关系复杂,是一个典型的给技术人员使用的模型,业务的同学要使用数据是非常难的,没法理解底层复杂的表结构和表之间复杂的关联关系。这个现状到现在还在持续存在,许多企业投入大量的资源构建企业级数据仓库,目标是提升企业自身数据化运营的能力,其结果大部分都与目标相差很远,更多看到的就是构建了一套报表系统。
- 同时,随着互联网和移动互联网的兴起,几乎所有的企业都在拥抱互联网,企业里面产生出很多互联网应用,同时也产生了大量的非结构化数据,结果问题来了,发现按照这样的结构设计数据模型,似乎并不能解决企业对非结构化数据的应用能力。同时对于提升数据处理效率也没有带来多大的用处。
- 业务变化快,这点在新兴互联网公司表现的特别明显,在创新的驱动下,业务变化非常频繁,同时大数据概念的提出,多源数据结合使用将成为主流的数据应用模式,导致数仓工程师很难抽象出一个相对比较稳定的数据仓库模型。
- 产生大量沉睡数据,很多企业里面,设计了ODS、DW、DM、RT层,产生了大量的数据表和数据任务,结果真正生产上使用的数据不多,导致每天有大量的关联任务在不断的耗用资源。我遇到的一些case,每日从业务库里面抽取的表只有1万多张,但是经过后面的各种加工,整个库里面产生上百万张数据表,技术人员使用起来都非常困难了,找不到数据。
我们回过头来分析一下,为什么会这样,同时也思考一下那三个问题。为什么会按照这个体系来设计:
- 我认为,出现上述架构的最大的原因是计算能力不够,传统的IT架构用来实现DT架构,计算能力受限,必须通过改变数据的组织形式来适应计算。也就是前面我提到的数据跟着计算走,去积极的适应计算能力。这同时也导致另一个更为严重的问题,二十几年的发展,各个大数据厂商,都把很大精力放在了数据模型的设计和构建上面,忽略了针对上层业务场景化应用的计算模型探索,所以在新的技术体系下,我们需要来重新思考这些问题。
- 这样的模式下,限制了上层数据应用模式,企业里面业务人员根本不可能去理解一个复杂的IT架构,所有的需求都是由业务人员驱动技术人员来实现。真正对数据有需求的业务人员,理解不了技术的语言,他们理解不了什么是表、什么事字段、什么是主键、什么是外键、表与表之间怎么关联、甚至是SQL怎么写都很难理解。而日常工作中,业务人员更能理解的是什么,他们能理解自己的客户是谁,客户都长什么样子,具备什么样的气质;自己有哪些产品,产品有什么功能,能解决什么问题;自己的客户和产品之间是如何互动,互动的结果是什么。诸如此类的,这是业务人员能力理解的。所以当下要做的就是抽象并提供一套能让业务人员直接可以理解使用的数据模型,而这个模型一定不是传统的数仓模型。
- 封闭的,不透明的,这也是导致企业内数据膨胀的重要原因,同一个标签,甚至同一张表,在企业数据仓库里面比比皆是,导致大量数据冗余,因为很多技术同学根本不知道库里面有什么,厂商提的元数据管理也是面向技术的一个方案,没有从本质上解决数据的业务视图。所以企业里面需要一种可以协同、共享、共建的全新的数据应用体系,确保有效数据的有效透出。
- 企业需要数据应用,提升自身数据化运营能力,但是是否需要一个复杂的DW模型,我认为当下不需要了,设计上应该轻数据模型(注意这里是轻数据模型,不是不要),重计算模型。
DTBoost新一代企业数据应用模式
DTBoost是什么?DTBoost是阿里云结合阿里巴巴自身大数据应用场景,经过多年总结抽象出的企业级大数据应用平台,其目标,是让业务人员可以快速的理解数据,应用数据;轻数据模型设计,重计算模型设计;结构开放,快速支撑数据应用开发;企业内部共建共享,协同开发。
DTBoost对标的产品是什么?
我周边经常有人问我这个问题,我可以直接告大家,DTBoost目前没有对标的产品。在我理解,DTBoost是一种全新的企业级数据应用开发的模式,我们通过DT技术的手段,将这种模式实现成一套公共云计算平台上数据应用的PaaS,同时也可以部署在专有云。通过DTBoost可以帮助企业快速实现数据业务解决方案,同时使得业务人员直接使用数据变成现实。
DTBoost架构
DTBoost核心是三层架构体系:
数据模型
通过前面的分析,DT时代需要一个全新的数据模型,这个也将是整个DTBoost的基础。我们要站在业务的视角来设计。同时要提供一套数据模型的管理系统,来方便模型的设计和构建。为此在数据模型这部分将包含以下几个核心模块。
上图中,最下面三个标签工厂、领域OLT模版、智能OL发现主要是为了加速业务OLT模型构建和标签生产。
- OLT(Object Link Tag)模型:所谓的实体,例如 消费者、商家、商品等都可以表示成一个实体,这些都是直接业务的同学可以理解的。关系例如 交易、收藏、点击、搜索等行为都是一个关系,由多个实体之间发生的某种行为。同时我们会在实体、关系上打上很多标签,来刻画实体和关系。听下来和OLP模型非常像,不错,在整体模型结构上一致,我们重点在tag(标签)这部分,标签是业务人员最容易理解的一种数据形态,标签可以是实体的某种属性,也可以是通过算法深度加工出来的某个评分,或者多个标签组合的一个计算逻辑。
- 共建共享:DTBoost可以在标签这个粒度实现权限控制,确保企业内形成共建共享的数据应用模式,标签可以有多个团队开发,可以发布、授权共享给其它部门查看使用。确保业务应用数据层公开透明。
- 市场机制:在这一层也可以通过市场机制的模式确保数据质量,严格意义上讲是标签数据质量,DTBoost可以通过标签元信息的公开透明,确保业务同学能快速的理解标签业务含义;通过讲标签的数据分布可视化,确保数据产出的稳定性;通过业务线使用标签的情况,来确保标签是否要被淘汰,如果一个标签长时间没人用,系统就可以考虑将其停用下线,释放底层计算资源;再进一步可以通过上层应用的情况,来自动优化物理层数据的组织方式。这里举个例子,如果A、B、C三个标签经常性被业务方组合使用,原先这三个标签在物理层分布在三张表中,那这种情况下,DTBoost会自动检测,自动构建新的底层物理表,将三个标签合并到同一张表中,优化存储的同时,优化了计算。
- 智能搬迁:这里在标签元信息中,DTBoost会详细记录标签对应物理的存储,当业务方在应用标签时,只用对计算模型进行选择,不用对数据物理存储关心,这个模块会根据计算模型的指令,完成底层物理数据的自动关联和搬迁(这里的搬迁指的是自动的将数据由一个存储搬迁到计算模型需要的存储中),不用数据开发的同学再去做物理数据的关联和数据传输任务的配置。
- API:下面的所有功能,DTBoost将其封装成标准的API,共合作伙伴或者开发者做二次开发。
- UI:DTBoost通过一个官方标准的交互界面,将底下的这些功能封装,给用户提供一套统一的操作体验。
- 标签工厂:为什么需要这个模块,DTBoost数据模型里面有非常重要的一块就是标签,但是标签怎么产生,哪些标签是有效的标签,这个就至关重要。而生成标签的方式有多种,可以让数据开发人员,根据业务同学的定义,通过SQL或着MR去一一实现,这个也是不可避免的。但是经过对业务需求的分析,你会发现有一部分计算逻辑是非常通用的,为此DTBoost里面可以为客户提供这部分功能,来解决企业内30-50%的标签加工需求,让业务人员自己就可以实现通用方法的标签加工。同时标签工厂能够对用户屏蔽底层之间的表联接逻辑,用户只需要知道所用的标签含义即可。当在某个时间段内同时有多个标签进行生成、处理、分析的时候,标签工厂可以自动找出这些处理的共同依赖、同一计算等,节省计算资源,避免某些热门物理表被多次全盘扫描。现阶段规划的功能如下:
当前支持的衍生方法:
时间序列上的衍生:
方法名称 方法描述
cnt 变量在一定周期内的发生次数
cntd 变量在一定周期内出现的不同值次数
totv 变量在一定周期内的总和
ttav 变量在一定周期内的均值
hmax 变量在一定周期内的最大值
hmin 变量在一定周期内的最小值
hmedian 变量在一定周期内的中位数
stddev 变量在一定周期内的标准差
variance 变量在一定周期内的方差
days 变量在一定周期内满足条件的天数
ftdays 变量在一定周期内满足条件的首次行为距今时长
ltdays 变量在一定周期内满足条件的末次行为距今时长
组合标签支持的表达式以及函数:
计算运算:+, -, *, /, %
数学函数:abs,acos,asin,atan,ceil,conv,cos,cosh,cot,exp,floor,ln,log,pow,round,sin,
sinh,sqrt,tanh,tanh
- 智能发现:这个模块的作用就是加速构建OLT模型的过程,如果说 标签工厂是加速T的过程,那么智能发现就是加速OL的过程。如何构建一个有效的OLT模型非常关键,也是这个新一代大数据应用模式里面可能花费时间最长的环节。为此我们通过技术的手段来辅助解决这个问题,实体在物理数据中大部分都是以Key的形式存在,关系一般都是以组合Key的形式存在,我们采用机器学习方式,通过对业务库log的挖掘,自动的发现出可能的实体和关系,并根据关系的强弱切割成不同的子图,来帮助建模师确认、发现关键的业务模型。
- 领域OLT模版:这点非常有意思,也是真正意义上的领域知识,通过DTBoost在不同行业的不断输出,可以总结沉淀出不同领域的实体关系模型,沉淀出不同领域标签模型以及标签分类体系,来形成DTBoost领域知识库。同时它不仅仅是模型层的一个领域模版,他会和上层计算模型联动,形成从模型层到应用层一整套模版。比如金融领域,首先会沉淀出一套金融领域的实体关系标签模型,基于这个之上,可以沉淀出一套多维交叉分析模版、风控预警模版、市场营销模版。在相同领域输出时,可以基于这个领域知识库做快速的客户化改造。
到这里,数据模型部分可以告一个段落,这块是新一代企业大数据应用模式的基础,非常重要,为此DTBoost在这部分花了大量的时间和资源进行设计开发。重要但确实是个基础,他并不能直接解决业务问题,真正作用到业务是基于这套数据模型之上的计算模型。敬请关注下一章节 :DTBoost计算模型之-计算模型。