//
我所经历的大数据平台发展史(三):互联网时代 • 上篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第二篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统与非传统两个行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
前言,本篇幅将进入大家熟知的互联网时代,数据平台发展史仅是自己经历过由传统数据平台到互联网数据平台发展一些简单回忆,在这一篇章中将引用部分互联网数据平台架构,在这里仅作案例。
我相信很多从传统行业转到互联网时是各种不适应,适应短则几个月,长则一年以上。进入到互联网有种感觉,它是一个擅长制造流行新概念的行业,“数据平台“,”数据产品“也不幸免。数据平台这词Data PlatForm 也无从考究是从什么时间点被提出的,仅知道自己刚进互联网时”数据平台“ 这个词狭义代指数据仓库了。
08年左右的Data Platform还泛指数据仓库,那时互联网企业的数据仓库刚兴起没几年,在建设思路上还是以传统数据平台的第二、三代架构为参照物实施建设的。自己猜测那时很多互联网企业也是使用Oracle、IBM、EMC 的软硬件区做的各类系统的实施,自然数据平台建设者都是来给电信、移动、制造业等各大数据仓库实施的甲方、乙方各类牛人。
行业的差异性导致业务不同,影响到数据平台源(数据源)的差异性、随着信息化共享与服务的这个“神奇”互联网行业快速发展,互联网业务逐渐的重视数据,所以互联网的从业者在看数据、使用数据的方式每一年也不同、大数据的各种技术也在快速更新中,各方面因素导致了互联网数据平台的建设、服务用户特点、数据模型与非互联网数据平台有较为显著差异。
数据源
做数据的人,从非互联网进入到互联网最显著的特点是面对的数据源类型忽然多了起来,在传统企业数据人员面对的是结构化存储数据,基本来自excel、表格、DB系统等,在数据的处理技术上与架构上是非常容易总结的,但是在互联网因为业务独特性导致了所接触到的数据源特性多样化,网站点击日志、视频、音频、图片数据等很多非结构化快速产生与保存,在这样的数据源的多样化与容量下采用传统数据平台技术来处理当然是有些力不从心了(备注:IBM的科学家分析员道格.莱尼的一份数据增长报告基础上提出了大数据的4V特性 大数据4v特性网上概念很多大家可以问度娘)。
目前最火热的移动互联网,大家都在通过自己的手机、平板去访问网站、购物等所以每个人都是数据的生产者,移动用户在使用习惯上呈现移动化、碎片化,以至于业务特性、商业模式比传统互联网又有显著差别, 用户在不同位置需求是不同的、使用APP 也是不同的、手机终端类型也是多样化。这些差异性比较导致移动互联网的数据与传统的互联网时代又产生显著差异性。
例如买家通过Pc购物从浏览物品到支付可能在很短时间内完成,但是通过手购物碎片化就显得多一些,可能在某个空余时间浏览物品,保存或放入购物车,等有时间在去做支付。大约在2009年到2012年之间做用户行为分析感觉很多原有网页端拍下物品去支付,逐渐转为PC端下单通过移动端支付。
我在这里整理一个表格不同时代数据源的差异性(备注可能整理的有点不全):
行业域
非互联网
互联网
移动互联网
数据来源(相对于数据平台来讲)
结构化各类数据库(DB系统)、结构化文本、Excel表格等,少量word
Web、自定义、系统的日志,各类结构化DB数据、长文本、视频 主要是来自网页
除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等
数据包含信息
CRM客户信息、事务性 ERP/MRPII 数据、资金账务数据 等。
除了传统企业数据信息外,还含有用户各类点击日志、社交数据、多媒体、搜索、电邮数据等等
除了传统互联网的数据外,还含有Gps、穿戴设备、传感器各类采集数据、自动化传感器采集数据等等
数据结构特性
几乎都是结构化数据
非结构化数据居多
非结构化数据居多
数据存储/数据量
主要以DB结构化存储为主,从几百兆到 百G级别
文件形式、DB形式,流方式、 从TB 到PB
文件形式、流方式、DB范式,非结构化 从TB 到PB
产生周期
慢,几天甚至周为单位
秒或更小为单位
秒或更小为单位
对消费者行为采集与还原
粒度粗
粒度较细
粒度非常细
数据价值
长期有效
随着时间衰减
随着时间快速衰减
单位时间内数据聚合度
高度聚合
聚合度低
聚合度很低
该图引用2013年“中国数据库大会大数据的实践与应用”
数据平台的用户
总结下来互联网的数据平台“服务”方式迭代演进大约可以分为三个阶段。
阶段一 :
约在2008年-2011年初的互联网数据平台,那时建设与使用上与非互联网数据平台有这蛮大的相似性,主要相似点在数据平台的建设角色、与使用到的技术上。
老板们、运营的需求主要是依赖于报表、分析报告、临时需求、商业智能团队的数据分析师去各种分析、临时需求、挖掘,这些角色是数据平台的适用方。
ETL开发工程师、数据模型建模、数据架构师、报表设计人员 ,同时这些角色又是数据平台数据建设与使用方。
数据平台的技术框架与工具实现主要有技术架构师、JAVA 开发等。
用户面对是结构化的生产数据、PC端非结构化log等 数据。
ELT的数据处理方式(备注在数据处理的方式上,由传统企业的ETL 基本进化为ELT)。
现在的淘宝是从2004年开始构建自己的数据仓库,2004年是采用DELL 的6650单节点、到2005年更换为 IBM 的P550 再到2008年的12节点 Rac 环境。在这段时间的在IBM、EMC、Oracle 身上的投入巨大(备注:对这段历史有兴趣可以去度娘:“【深度】解密阿里巴巴的技术发展路径“),同时淘宝的数据集群也变为国内最大的数据仓库集群。
我当时用Oracle 搭建的数据仓库做临时需求时,一个经过反复优化的SQL语句在晚上9点放入能够Running 凌晨4点多而被电话中狂吼的DBA给kill掉,痛不欲生。
因为快速膨胀的数据量,在2010年开始考虑引进Greenplum 最为主平台提供强大的计算能力,但没想到快速爆炸的数据量让我们在POC测试阶段就把Greenplum的适合业务场景定位清楚了。
随着2010年引入了hadoop&hive平台进行新一代的数据平台的构建,此时的Greenplum 因为优秀的IO吞吐量以及有限的任务并发安排到了网站日志的处理以及给分析师提供的数据分析服务。
该阶段的数据模型是根据业务的特性采用退化、扁平化的模型设计方式去构建的(备注:将会在模型篇章详细讲解)。
阶段二:
互联网的数据平台除了受到技术、数据量的驱动外,同时还来自数据产品经理梳理用户的需求按照产品的思维去构建并部署在了数据的平台上。互联网是一个擅长制造流程新概念的行业。约在2011年到2014 年左右,随着数据平台的建设逐渐的进入快速迭代期,数据产品、数据产品经理这两个词逐渐的升温以及被广泛得到认可(备注:数据产品相关内容个人会在数据产品系列中做深入分享),同时数据产品也随着需求、平台特性分为面向用户级数据产品、面向平台工具型产品两个维度分别去建设数据平台。
企业各个主要角色都是数据平台用户。
各类数据产品经理(偏业务数据产品、偏工具平台数据产品)推进数据平台的建设。
分析师参与数据平台直接建设比重增加。
数据开发、数据模型角色都是数据平台的建设者与使用者(备注:相对与传统数据平台的数据开发来说,逐渐忽略了数据质量的关注度,数据模型设计角色逐渐被弱化)。
用户面对是数据源多样化,比如日志、生产数据库的数据、视频、音频等非结构化数据。
原有ETL中部分数据转换功能逐渐前置化,放到业务系统端进行(备注:部分原有在ETL阶段需要数据标准化一些过程前置在业务系统数据产生阶段进行,比如Log 日志。 移动互联网的日志标准化。
互联网企业随着数据更加逐渐被重视,分析师、数据开发在面对大量的数据需求、海量的临时需求疲惫不堪,变成了资源的瓶颈,在当时的状态传统的各类的Report、Olap 工具都无法满足互联网行业个性化的数据需求。开始考虑把需求固定化变为一个面向最终用户自助式、半自助的产品来满足快速获取数据&分析的结果,当总结出的指标、分析方法(模型)、使用流程与工具有机的结合在一起时数据产品就诞生了(备注:当时为了设计一个数据产品曾经阅读了某个部门的2000多个临时需求与相关SQL)。
数据产品按照面向的功能与业务可以划分为面向平台级别的工具型产品、面向用户端的业务级数据产品。按照用户分类可以分为面向内部用户数据产品,面向外部用户个人数据产品、商户(企业)数据产品。
面向平台级别有数据质量、元数据、调度、资管配置、数据同步分发等等。(备注:关于数据产品的发展与数据产品体系更多内容,请关注个人写作“数据产品系列”)。
约2010-2012年的平台结构
约2012-2013年的平台结构
//
我所经历的大数据平台发展史(二):非互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platfor2-part01
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第二篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统与非传统两个行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
前言,”数据模型“ 这个词只要是跟数据沾边就会出现的一个词,在数据库设计、数据仓库、数据挖掘上、业务里都存在,聚焦一下,这里提到的是数据平台中的”数据模型“。 这是一个非常的抽象词,个人也很难用简单语言把他描述出来,这一章也是整个系列中较为抽象的一章节,同时这个章节将会回答非互联网数据平台数据模型是什么?如何需要数据模型?如何简单的建设?
在“我所经历的大数据平台发展史 上篇 非互联网时代”曾经提到Bill inmon与 Ralph kilmball两位大师的设计理念,对业务的数据按照某种规则进行有效组织并满足业务需求。
相关厂商内容
关于红包、SSD云盘等核心技术集锦!
Cloudant DBaaS技术概述
下一代 DB2更加突出 BLU Acceleration
小邪:阿里8届双11容量规划这样设计
在构建过程中,有一个角色理解业务并探索分散在各系统间的数据,并通过某条业务主线把这些分散在各角落的数据串联并存储同时让业务使用,在设计时苦逼的地方除了考虑业务数据结构要素外,还得考虑可操作性、约束性(备注 约束性是完成数据质量提升的一个关键要素,未来新话题主题会讨论这些),这个既要顾业务、数据源、合理的整合的角色是数据模型设计师,又叫数据模型师。
非互联网时代的数据模型是一个高度智慧业务抽象结晶,数据模型是整个系统建设过程的导航图。
(点击放大图像)
[图片上传中。。。(2)]
平台中模型设计所关注的是企业分散在各角落数据、未知的商业模式与未知的分析报表,通过模型的步骤,理解业务并结合数据整合分析,建立数据模型为Data cleaning 指定清洗规则、为源数据与目标提供ETL mapping (备注:ETL 代指数据从不同源到数据平台的整个过程,ETL Mapping 可理解为 数据加工算法,给数码看的,互联网与非互联网此处差异性也较为明显,非互联网数据平台对ETL定义与架构较为复杂)支持、 理清数据与数据之间的关系。(备注:Data cleaning 是指的数据清洗 数据质量相关不管是在哪个行业,是最令人头痛的问题,分业务域、技术域的数据质量问题,需要通过事前盘点、事中监控、事后调养,有机会在阐述)。
大家来看一张较为严谨的数据模型关系图:
(点击放大图像)
[图片上传中。。。(3)]
数据模型是整个数据平台的数据建设过程的导航图。
有利于数据的整合。数据模型是整合各种数据源指导图,对现有业务与数据从逻辑层角度进行了全面描述,通过数据模型,可以建立业务系统与数据之间的映射与转换关系。排除数据描述的不一致性。如:同名异义、同物异名..。
减少多余冗余数据,因为了解数据之间的关系,以及数据的作用。在数据平台中根据需求采集那些用于分析的数据,而不需要那些纯粹用于操作的数据。
在面对企业复杂业务与成千上万的数据项进行设计时,没有哪个牛逼的人都记得住的,所以出现了按照某种层次规则去有组织并抽象与管理易用,由此诞生了概念模型、逻辑模型、物理模型 (备注 数据平台数据模型,而非数据挖掘的模型)。
数据模型在数据平台的数据仓库中是一个统称,严格上来讲分为概念模型、逻辑模型、物理模型。(备注:四类模型如何去详细构建文本不深讲,关于非互联网企业的数据模型网上非常多)
(点击放大图像)
[图片上传中。。。(4)]
在“我所经历的大数据平台发展史 上篇 非互联网时代“提到两位大师的架构与争论,进一步聚焦来说,争论点我的认为其实是在数据模型的支持上,Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构。
Bill Inmon对EDW 的定义是面向事物处理、面向数据管理,从数据的特征上需要坚持维护最细粒度的数据、维护最微观层次的数据关系、保存数据历史。所以在构建完毕的数据平台中可以从中映射并检查业务信息的完整性(同时也是养数据过程中的重要反馈点),这种方式还可以找出多个系统相关和重合的信息,减少多个系统之间数据的重复定义和不一致性,减小了应用集成的难度。
(点击放大图像)
[//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。](http://cdn4.infoqstatic.com/statics_s2_20170208-0257_3/resource/articles/the-development-history-of-big-data-platfor2-part01/zh/resources/0218033.png)
(点击放大图像)
[图片上传中。。。(6)]
该建设方式的要点是首先建立各个数据源业务的实体关系、然后再根据保存的主子实体关系、存储性能做优化。
Ralph kilmball 对DM(备注:数据集市,非挖掘模型)的定义是面向分析过程的(Analytical Process oriented),因为这个模型对业务用户非常容易理解,同时为了查询也是做了专门的性能优化。所以星型、雪花模型很直观比较高性能为用户提供查询分析。
(点击放大图像)
[图片上传中。。。(7)]
该方式的建模首先确定用户需求问题与业务需求数据粒度,构建分析所需要的维度、与度量值形成星型模型;(备注 涉及的复杂维度、退化维度等不在这个讨论范围)。
数据模型的业务建模阶段、领域概念模型阶段、逻辑模型阶段、物理模型阶段是超级学术与复杂的话题,而且在模型领域根据特点又分主数据(MDM)、CIF(企业级统一视图) 、通用模型(IBM 的金融、保险行业通用模型、 Teradata的 金融通用模型、 电信移动通用模型等),锁涉及到术语”扩展“、”扁平化“、”裁剪“等眼花缭乱的建模手法,数据模型不同层次ODS、DWDDWD、DW、ST的分层目的不同导致模型设计方法又不同。相信业界有很多大牛能讲的清楚的,以后有机会再交流。
(点击放大图像)
[图片上传中。。。(8)]
(点击放大图像)
[图片上传中。。。(9)]
(点击放大图像)
[图片上传中。。。(10)]
(点击放大图像)
[图片上传中。。。(11)]
本文带大家回忆了历史非互联网的数据平台发展与核心模型特点,当然数据平台的发展不是一步到位的,是经过无数人的智慧、努力反复迭代而逐渐演进的。
非互联网企业的数据平台发展,每一代的平台架构中的结构都是及其复杂的,比如ETL架构、数据模型架构、BD的架构、前端展现、元数据、数据质量等各方面,每一部分展开都是一个很深的话题,有机会再分享给大家。
下篇章将分享给大家互联网时代的数据平台,互联网的数据平台也就是在07年-08年左右开始迅猛发展的,在发展的初期也是从传统数据平台的第三代架构开始演进的,互联网产品发展特点是“糙、快、猛”,同时数据量的超快速膨胀所带来的技术变革,从数据仓库->海量数据->大数据膨胀必然原有的技术无法支撑高IO吞吐、密集型计算,从而发展了合适互联网大数据平台。
关于作者
松子(李博源),自由撰稿人,数据产品&数据分析总监。2000年开始数据领域,从业传统制造业、银行、保险、第三方支付&互联网金融、在线旅行、移动互联网行业 ; 个人沉淀在大数据产品、大数据分析、数据模型领域;欢迎关注个人微信订阅号:songzi2016。
阶段三:
互联网业务的快速发展、大家已经从经营、分析的诉求重点转为数据化的精细运营上,随之而来的面临创新压力、如何做好精细化运营,数据平台的用户其聚焦在无法快速的响应日常需求其表现为做数据的已经无法满足当前业务日益增长的数据需求、运营上精细化已经对数据的粒度要求由高汇总逐渐转为过程化细粒度明细数据。
随着数据应用的深入,用数据往往不知道数据的口径与来源,加工数据的不知道业务含义,不同部门口径又是不一样,有的从交易来、有的从账务来。这里数据使用与数据加工上就出现了”断层”。有时在层级与功能部门前边也可能存在一个断层,对数据价值的内在衡量是不一样的,角色不一样,对于数据价值的的看法也就不同。
由于以上的种种问题,用数据的一些角色(分析师、运营或产品)会自己参与到从数据整理、加工、分析阶段。当数据平台变为自由全开放,使用数据的人也参与到数据的体系建设时,基本会因为不专业型,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化等等原因。此时原有建设数据平台的多个角色可能转为对其它非专业做数据人员的培训、咨询与落地写更加适合当前企业数据应用的一些方案等。例如原有的数据产品会加入更多的在原有的数据建设中才有的一些流程让用户来遵守(统一的数据搜集、数据标准化的前置)。举例Log 埋点产品化、自动Report 的过程规范化(举例说明:原有一些运营自己建立的一些报表可能sql有问题就直接放入报表生成器中了。更改流程第一步现在MQ中验证完毕口径后,通过元数据解析进入到报表生成器中)、基于元数据驱动的ETL流程化等等,因为偏自助式、服务化的一些数据产品建立也将会导致数据平台迭代的演进。
给用户提供的各类丰富的分析、取数的产品,简单上手的可以使用。
原有ETL、数据模型角色转为给用户提供平台、产品、数据培训与使用咨询。
数据分析师直接参与到数据平台过程、数据产品的建设中去。
用户面对是数据源多样化,比如日志、生产数据库的数据、视频、音频等非结构化数据。
在互联网这个大数据浪潮下,2016年以后数据平台是如何去建设?如何服务业务?
企业的不同发展阶段数据平台该如何去建设的?这个大家是可以思考的。但是我相信互联网企业是非常务实的,基本不会采用传统企业的自上而下的建设方式,互联网企业的业务快速变与迭代要求快速分析到数据,必须新业务数据迭代,老业务数据快速去杂。敏捷数据平台或许是种不错的选择方法之一吧!
下一篇将是本系列的最后一篇,互联网数据平台下的数据建模(备注:是数据仓库模型)。
关于作者
松子(李博源) ,自由撰稿人,数据产品&数据分析总监。2000年开始数据领域,从业传统制造业、银行、保险、第三方支付&互联网金融、在线旅行、移动互联网行业 ; 个人沉淀在大数据产品、大数据分析、数据模型领域;欢迎关注个人微信订阅号:songzi2016。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
[图片上传中。。。(30)]
(点击放大图像)
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。//
我所经历的大数据平台发展史(四):互联网时代 • 下篇
http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-internet-age
编者按:本文是松子(李博源)的大数据平台发展史系列文章的第四篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统行业与非传统行业。是对数据平台发展的一个回忆,对非互联网、互联网,从数据平台的用户角度、数据架构演进、模型等进行了阐述。
在互联网时代被弱化的数据模型
谈起数据模型就不得不提传统数据平台架构发展,我相信很多朋友都晓得传统数据平台的知识,其架构演进简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与数据源类型多样化特点,从高阶架构上来看大约从传统数据平台第三代架构开始延续的,但是往后的发展从我自己的这一点知识上很难对互联网的数据平台做架构归类。
但是从数据平台建设与服务角色上还是有章可循的。就像上篇分享到那样,类比两个行业,互联网企业中员工年龄比非互联网企业的要年轻、受教育程度、对计算机的焦虑程度明显比传统企业要低、还偶遇其它各方面的缘故,导致了数据平台所面对用户群体与非互联网数据平台有所差异化。
传统行业与互联网行业数据平台用户特性我只选择前文章的两张图来表示
(点击放大图像)
(点击放大图像)
在传统数据平台要背后有一个完整数据仓库团队去服务业务方,业务方嗷嗷待哺的等待被动方式去满足。中低层数据基本不会对业务方开放,所以不管数据模型采用何种建模方式,主要满足当时数据架构规划即可。
互联网业务的快速发展使得大家已经从经营、分析的诉求重点转为数据化的精细运营上,如何做好精细化运营问题上来,当资源不够时用户就叫喊,甚至有的业务方会挽起袖子来自己参与到从数据整理、加工、分析阶段。
此时呢,原有建设数据平台的多个角色(数据开发、模型设计)可能转为对其它非专业使用数据方,做培训、咨询与落地,写更加适合当前企业数据应用的一些方案与开发些数据产品等。
在互联网数据平台由于数据平台变为自由开放,大家使用数据的人也参与到数据的体系建设时,基本会因为不专业性,导致数据质量问题、重复对分数据浪费存储与资源、口径多样化、编码不统一、命名问题等等原因。数据质量逐渐变成一个特别突出的问题。
传统企业的数据源基本来自excel、表格、DB系统等,但在互联网有网站点击流日志、视频、音频、图片数据等很多非结构化快速产生与保存。移动互联网除了互联网那些外还含有大量定位数据、自动化传感器、嵌入式设备、自动化设备等,传统行业原有的数据平台技术对处理如此复杂而多样化的数据有些力不从心。
当数据模型逐渐被弱化后,数据架构导航图少了、难以建立业务系统与数据之间的映射与转换关系。数据描述经常不一致性。如:同名异义、同物异名。大量冗余的存在。数据模型被弱化(数据仓库模型)是传统企业与互联网企业一个蛮大的差异。但是呢,互联网企业也有自己特点,传统行业所涉及数据模型这个领域涉及的很多内容在互联网变成以其他的曲线救国的方式存在了。
在互联网曲线救国新解决
回顾在传统行业数据平台中,不管两位大师争论点数据模型的设计采用那种范式(Bill Inmon的EDW的原则是准三范式的设计、Ralph kilmbal是星型结构)但是都要非常重视数据源的质量问题。所以传统行业的数据模型会全盘考虑数据质量问题,并通过数据抽样分析给出合适的清洗口径。
(点击放大图像)
上图来自我2009年搞数据质量平台工具数据产品内容之一。
但是在互联网呢,数据质量在互联网数据平台变成了一种心病。(ps:我了解过一个公司,能让数据平台+数据分析师+业务多人“对数”对一年的还是不准的)。在应对数据的质量问题,目前互联网有些做法是把数据标准化前置到业务数据产生就做,从根源上去杜绝数据质量,但是这种场景比较实用在Log 日志的数据源中,比如移动互联网最近流行的基于事件模型“Event”模型,在日志产生时就规定好存储格式(备注:大家度娘搜索,“学习笔记:The Log(我所读过的最好的一篇分布式技术文章)” 对这个讲解很详细)。
在传统行业,目前还是以混合模型设计方式为主。在互联网的我所接触的一些业务,在参照传统数据模型方法论基础上逐步演进适合互联网数据的数据模型方法。
比如互联网金融等一些业务会参考传统金融行业对主题域的划分、OMG数据仓库元数据管理CWM模型、FSDM金融模型,再进一步考虑大数据处理特性去进行设计,所有从Hight Level 数据架构图看到主题层次划分与传统第三代数据仓库还是很多相似之处,当然模型架构也有分三层、四层、五层的。
不同的地方模型细节处理上已经完全不一样,比如数据的多样性、拉宽事实表、度量值单独存储、满足数据快速重生、维度的二次降维处理等、增加大量冗余列、增加大量派生列,结合自动化元数据来耦合、合并等相关管理。
(点击放大图像)
[图片上传中。。。(4)]
上图是支付宝非常早期数据模型
(点击放大图像)
上图是支付宝非常早期数据模型
我们常提到的多维模型在大数据处理下进行了退化维度处理。大家知道Olap多维模型,随着维度的增加事实表的数据量会成几何指数暴增,即使在现有的大数据技术、新的Olap 引擎对一个Cube的数据量要求也要在时间与数据量上需要做到用户使用容忍度的平衡。
类似Olap的应用在互联网这个奇特思维土壤中我经历过一个曲线救国方式(2011-2012年时设计多维挖掘分析数据产品背后的技术就是搜索引擎实现的),现在应该也有新技术出现了来解决类似的问题。
(点击放大图像)
上图为2012年产品UI之一。
(点击放大图像)
[图片上传中。。。(7)]
上图是2011-2012年该产品系列背后当时使用的技术
互联网业务特点业务垂直拆分非常细,比如一个用户注册、密码找回的流程有可能存在好几个产品负责同一个业务流程不同环节,相关的一个策略、产品feature快速迭代上线等等都要数据评估。数据从前端埋点到采集然后再由各个环节到数据平台,再有数据分析师或各业务部门去使用,基本拉长了时间周期。需求部门与实施部门能力和经验有千差万别的需求,造成了懂技术部门没有没有足够的精力完全理解业务部门奇形怪状需求,可能在各环节放缓与变的低效。
或许适合“敏捷”维度建模在当前是个不错的选择,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。互联网企业业务特点是变化非常迅速的,能稳定的业务达到65%算对数据平台是个福音了(根据对某宝宝的印象)剩余的业务变化迅速,必然导致数据模型快速上下线。
Kimball老人家提出的维度建模(备注,在本系列发展史得第一篇有介绍)围绕业务模型能够非常直观的表达出业务的数据关系,但是在互联网NOSQL牺牲掉了关系型数据库的一致性、完整性等等很多东西。维度数据模型又基于这些大数据技术的,所以进化的更加轻量级与基于细节数据的维度退化建模(原有的缓慢变化维、快速变化维、大维、迷你维、父子维、雪花维为了适应互联网的大数据Nosql处理技术进行反规范化、化&数据冗余设计。
退化维度的反规范化设计一方面可以把一条查询语句所需要的所有数据组合起来放到一个地方存储 Key values 的方式(比如说商品有不同类型,每一种类型商品又有自己的不同属性,可以采用一对多、多对多的方式存储,例如把一个多维映射为一个Key value)。
讲到互联网数据平台就要提数据模型,提了数据模型就要提Nosql技术,
(点击放大图像)
上图来自Nosql文档系列的一幅图
Nosql 是大数据处理的特征之一。互联网数据平台数据模型与NoSql技术还是蛮紧密的。这里有外文讲解Nosql Data modeling technigues 从技术角度讲解非常详(https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。
因为前边提到的大数据平台技术特性决定了传统edw模型、维度模型直接在互联网数据大数据平台部署或许还有“好些未知”障碍等待大家去克服。同时在传统数据建模用到的一些方法经过互联网熏陶或许演进成一种新的数据产品或方案吧。
到此为止“我所经历的大数据平台发展史”上下共四篇与大家分享完毕,这个写作前后经历刚好一个月左右,算是对自己数据从业经历回顾之一吧。在知识的整理中很多都是蜻蜓点水,每个知识域都是一个非常深的专业方向,自己涉足很肤浅,在文章中分享不足之处请各位读者见谅!!
个人邮箱是5592094@qq.com 欢迎电邮交流。
接下来我会进入数据产品这个领域的分享,当年车品觉老师自豪的作品之一“黄金策”,我是数据产品经理。(ps:自己躲在墙角拿车品觉老师往自己脸上贴金了)。
后记
有一次数据产品神策的创始人兼好友@桑文锋@SensorsData跟我说来做次分享吧,我当时出了几个题目,最后就选择了“我所经历的大数据平台“,就形成了大家看到的”我所经历的大数据平台“系列文章.
在整理期间得到了死党@周爱民、@神策-桑文峰、 InfoQ小编@Tina Du 、@betty zhou @Laurel大力协助,在这里感谢!!!
番外篇
这一篇是在24日举行的分享大家提到的一些问题,经过整理算是对正文的补充吧,从互联网敏捷数据模型等角度做了较深入的细节介绍。同时在数据产品方面的回答包含了一点未来写作篇“数据产品”系列的一点内容。
1****,传统我们做BI的,做数据展现会建模后以pivot展现cube数据,不知道现在互联网公司数据展示如何做的?第三方工具还是用API取数据平台里的数据?adhoc报表及灵活更换维度的时候web端一般是怎么做的?
松子老师:刚才文章中提到了比如传统行业的多维数据模型cube。在互联网采用的曲线救国方式解决的。 在分享中我给出了几个图。就是通过搜索引擎曲线救国方式实现类似Olap的模拟。
在这块的模型的处理上采用的是维度退化处理。通过反规范化,数据项、数据冗余去处理。在前端做特殊处理。
这个当时产品原型之一:
(点击放大图像)
这是一个2011年-2012年左右的数据产品,当时算是即时计算的一种。不过已经过去好几年了,当今新技术下Olap 引擎应该有很好的提升。
目前我知道的家互联网公司,在前端展现有使用第三方套件比如spagoBi、pentaho 等 有自己设计开发定制化数据前端展现。比如我刚开始分享的那两个之前在去哪儿网设计的数据平台内部界面之一,当然数据产品是另一个话题了,通过对数据分析抽象指标、分析模型、用户使用功能与流程、未来规划考虑用户体验去设计。
(点击放大图像)
(点击放大图像)
[图片上传中。。。(11)]
(点击放大图像)
2****,互联网财经类公司,业务包括财经网站、基金、股票、金融等,这类公司的数据仓库模型应该如何设计?特点和注意事项是什么?案例介绍?十分感谢。
松子老师:我自己经历过的是互联网金融以及移动互联网行。对这两块比较清楚。互联网金融起因为业务的特性是类金融类的,与银行有些地方是相似的。
比如大约在2012年前支付宝业务特点涉及类金融交易:充值、提现、账务管理类电子商务:购物交易过程变更、实际交易(对B机票、对C水电等) 非纯电子商务;纯金融;个人信用,理财类。系统之间依赖度较为复杂,垂直依赖(业务与核心)跨层依赖(跨过交易到账务)。
在设计方法上还是采用维度模型设计方式。底层是数据驱动为向导,结合业务需求驱动,通过简单、退化维度的方式拉宽表结构。
底层采用松耦合设计。主题之间是松耦合方式。至体内采用细粒度退化维度。
在主题域上的的设计基本参考了OMG的数据仓库元数据设计CWM模型、IBM 的fsdm金融模型、还有新巴塞尔资本协议(Basel II Capital Accord)需提供数据规范去的设计。所以数据模型是五层的结构。
在细节处理上,增量ODS层数据和前一天DWD相关表进行 merge处理。
在一些层次上,基本聚合、汇总增加派生事实表(简单一句话退化为度打宽)。然后按照业务主体合并信息等。
比如开始给大家分享的那张图:
(点击放大图像)
[图片上传中。。。(13)]
在维度模型退化处理时,要注意最细粒度数据保留、不同层次的数据支持数据重新生成。同时一定要注意互联网数据业务特性,数据质量是大心病。有可能一天某些表会重跑很多遍。在互联网的做法有可能一天会重跑好几次数据。
所以曲线救国的病态的产生出了一种通过元数据驱动的数据模型。
这种元数据驱动工具型数据产品我会在未来数据产品系列中做详细介绍的。
3****,互联网企业大数据平台的发展历程是怎样的?
松子老师:这个我相信应该是传统数据平台朋友提到的。传统行业数据平台架构演进我总结简单一句话说“基本上可以分为五个时代、四种架构”,但是到了互联网时代因为大数据快速膨胀与类型暴增的特点,从高阶架构上来看大约从第三代架构开始延续的,但是从我自己的知识上很难对互联网的数据平台做架构归类。所以我从互联网数据平台的建设、用户使用变化特征去做了总结。话说互联网数据平台基本是从传统数据平台的第三代开始的。那是我们总结下来用户特点:
(点击放大图像)
[图片上传中。。。(14)]
更加详细的每一代数据平台建设、服务角色特点您可以看我这个系列文章的第三篇,http://www.infoq.com/cn/articles/the-development-history-of-big-data-platform-paet02
4****,有没有好的元数据管理工具推荐?主要偏向数据字典与血统等。
松子老师:元数据以前目前没有太多的好管理工具。以前是在支付宝是我自己设计的一个数据产品。第一版自己用Delphi 开发的。
(图很多:)
(点击放大图像)
[图片上传中。。。(15)]
(点击放大图像)
[图片上传中。。。(16)]
(点击放大图像)
[图片上传中。。。(17)]
(点击放大图像)
[图片上传中。。。(18)]
(点击放大图像)
[图片上传中。。。(19)]
以前被逼的自己写了一个,通过解析,实现了字段级的血缘影响分析。这只是第二步,后来又把running 信息给搞了进来。还有分享时提到的模型信息、整个闭环的分类信息。
这是一个分支:
(点击放大图像)
[图片上传中。。。(20)]
但是我们实现了字段级解析准确率达到了94%左右。有细微的错误就人工revew一遍。
5. ****松子老师,数据管控的数据质量部分是怎么处理的呢?
松子老师: 数据管控, 这方面我不太懂的,但是数据质量,这玩意可大可小的。比如像在分享时说过的,在移动互联网的数据质量处理方式可以由原有的ETL(ELT)阶段前置到业务系统去解决,比如移动互联网的App log 日志,日志标准化后事件模型”存储来解决。那非app 日志类如何解决呢比如Payment、order等,数据质量比较考虑的可以只做到监控。
我来分享个图。刚好是我设计数据质量产品时搞的,理清数据质量的问题:
(点击放大图像)
[图片上传中。。。(21)]
(点击放大图像)
[图片上传中。。。(22)]
(点击放大图像)
[图片上传中。。。(23)]
只要数据进入仓库与应用体系,处理起来就比较困难了,所以在数据平台阶段最好是通过监控、前置去解决。目前数据质量确实难以100%由事后搞到事前去处理。我对数据平台与数据产品的建设就是实用为主。怎么实用怎么来。我是比较现实的实用主义者。
6. ****能否分享一些数据产品种类及实例:
松子老师:在前边五个问题、以及文章中又都涉及数据产品实力的一些分享。
提到数据产品的分类我就想把这个图发出来。
自己认为没有特别明确的划分线,但是数据产品从三个维度划分,面向业务、功能、用户可以划分出三个方向的数据产品来。
比如面向数据平台工具型数据产品:调度、数据质量、元数据、数据建模、ETL工具、资源管控等等。
面向用户功能有报表型、多维型数据产品、定制化数据产品、挖掘型数据产品。
面向内部用户、外部个人用户、外部企业用户又有不同的分类。
根据业务又可以划分很多,面向C类用户、面向B类商户、金融风险等等
从近几年的数据产品来看,是更好的辅助用户的做决策的一种产品形态,在用户的决策与行动中充当信息的分析者与价值使用者;数据产品有个自己的共性:由解决的一个实际的业务问题出发,分解出的分析指标,分析模型,分析流程组成,再考虑到功能易用性,未来功能扩展,考虑用户对数据易用性(比如数据的呈现层次,不可能一次把所有数据的呈现给用户)来组成的。
(点击放大图像)
[图片上传中。。。(24)]
7. ****银行业从传统的ods到edw再到大数据平台这块过渡,模型如何建设?平台优势如何发挥?
松子老师:这个问题还是有些难度的,自己回答的可能有些片面。首先我们清醒的清楚“大数据”是什么?再次不同的场景可以采用不同的技术去解决。
“大数据”,拆开来看大、数据,大可以是指的数据源结构简单(ps 如果了解过当代对大数据的定义就知道四个特性)但是量级够大,比如清算、结算、对公、对私、中间业务等等每一个拿出来都是几十T,但是这些业务数据都是保存传统的关系型数据库中如DB2、Oracle、MSsql中,因为在数据平台存储是通过准3范式等等结构去保存。
在存储时可能要比较复杂的SQL 多表关联的,感觉目前传统的数据平台技技术在处理数据很让人着急。想通过互联网的大数据平台hadoop、Hive 、Spark 等技术的去演进解决。(最早时我的是中信银行、光大银行在2011年左右开始考虑Hadoop技术,后来不知道如何了)。
但是互联网的数据平台技术大都是NOSQL模式,牺牲掉了传统数据库的数据一致性、完整性、唯一索引等等,只干性能的事情(当然除了性能、可扩展性也是的).
原有在传统数据平台模型设计上可以考虑的一些通过主外键、唯一索引做一些业务约束的方法,在nosql上统统的都没有了,这些约束必须放到数据加工阶段去想办法做检查。传统数据平台如果在Insert、update数据时违反了业务约束可以做报警或异常处理,但是在Nosql的平台上要求ETL 去手动遵守这些规则检查。但是有时ETL开发根本不遵守的,仅仅是两个表关联起来,也可能忘记按照某一个业务唯一索引做去重操作。简单说,原有靠关系型数据库本身机制去做检查一些规则变为人工,变为人工就会犯错。
从关系型数据平台往Nosql数据平台迁移时,尤其是对传统行业的业务来说,在模型设计阶段、以及给出的ETL口径要考虑更多的业务规则检查,其次要考虑更多的维度退化、多冗余、表打宽处理。简单说就是发挥数据平台的计算能力同时要更加的各方面确保数据准确安全可靠。
数据模型ODS 到EDW 这块的设计方法百度上留下的文档资料太多的了,请这位提问的老师百度吧。
**8****.大数据****仓库****中如何做快速****维处****理?互****联****网数****仓****数据****质****量不好如何****对****数,如何确立****标****准的****对****数口径?******
松子老师:快速变化维度可以转化为缓慢变化为来出来,我自己理解的快速维度是相对于缓慢维度参照的来说的。
举个例子,年龄-转化为天数可以是定义快速变化维度,因为每天都在变化。我们可以把年龄退化为区间维度来处理,还可以把年龄做成动态维度来处理,事实表中保存的就是实际的出生年月并打宽表,年龄(天)通过计算方式来处理。还有种方法通过对代理键的方式来处理。
我目前也不知道对数据的标准是什么。但是我自己用的方法,把一个指标的整个数据流向切出几个关键点通过SQL去实现对数,看波动振幅,波动曲线。同时还会比如发不通的版本的小流量测试的方式来做数据校对。
9****. 做为数据行业从业者,需要掌握哪些重要的基础知识?另:如果从零开始建立一个数据平台,需要哪些资源配置(人,财,物,技术)?大致总投资额度多少?如果同行产品间多种来源的数据,可有成熟的解决方案?谢谢…
松子老师:这个问题太宏观了。作为数据行业从业者,需要掌握哪些重要基础知识,这个是要看从事具体数据域的垂直行业。
比如说 数据开发、数据模型、数据产品、数据分析师、数据运营、数据架构师这些更加专业领域是需要不同的知识的。大家可以去itongji.cn、百度等去搜索数据架构等文章能得到更加专业的答案。
一家公司建设数据平台是跟公司目前数据量、未来数据增长、技术选型、解决业务问题有很直接的关系的。所以在解决业务目标不太明确下,难以确定方案,人员配置上选用不同技术方案去搭建的配置是不太一样的,比如说传统平台来讲,运维、DBA、数据开发、数据模型、报表人员。
从互联网数据平台基本配置上,数据架构师、运维、底层大数据技术、数据开发兼模型、数据分析师、数据产品等都有可能需要的。
同行产品间度多种数据来源,那就看数据源种类,文本的、日志类、视频影像、爬虫类的、结构化、非结构化的数据源有不同的解决技术。
10. Standalone****模式下,Model.save(Path)怎么一直提示错误,是不是配置Spark时需要将Hdfs的配置引进来啊~?表示初学Spark
松子老师:这个问题有点超出我的能力范围了,所以对不起回答不了。
我本身不是做技术的。仅知道一点技术名词。
11. ****传统银行业数据模型什么时候会走向互联网模式呢?目前在传统银行数据平台的产品是不是特别多?
松子老师:这个问题我自己就不知道了,或许是传统银行在数据平台的实施上全面用互联网的Nosql大数据处理技术吧。至于说传统银行数据模型用现有的互联网数据模型理念去设计是否完全可行,数据一致性、高准确性通过更多的方案去保证。
首先我需要确定一下这个产品是否指的“数据产品”。
如果是数据产品,那其实传统行业数据平台本身就有一些数据产品了,而且也都是存在的。数据产品自从数据仓库出现以来它其实一直都存在的,只不过是近几年因为互联网特别爱制造“流行词“把数据产品这个词给放大了。互联网是得数据产品从早期的重量级逐渐进化为轻量级、从大而全的解决方案逐渐演进为因小而美。
我来给出几组例子,大约从2004年到现在的几组数据产品的例子
(点击放大图像)
[图片上传中。。。(25)]
(点击放大图像)
[图片上传中。。。(26)]
(点击放大图像)
[图片上传中。。。(27)]
(点击放大图像)
[图片上传中。。。(28)]
(点击放大图像)
[图片上传中。。。(29)]
(点击放大图像)
(点击放大图像)
[图片上传中。。。(31)]
你可以分类一下,这些数据产品的特点是什么?满足了用户怎么样的痛点需求?满足了用户怎么样的使用流程。
12 ****。传统行业的数据仓库从业人员,如果转到互联网行业,应该学习哪些技能?
松子老师:这个问题你可以百度搜索“大数据职位所需要的数据技能” http://blog.jobbole.com/99039/ 这篇文章。自己觉得人家回答的比我专业。