大数据-产品基础模型

一、大数据应用思维
【例1】
产品经理给大数据部门提了个需求:我想知道所有用户的标签,比如哪些用户喜欢时尚类型的微博、哪些用户是单身狗等,好给这些人针对性推阿里巴巴的广告,而且很急,下个月新版本就要上线。
大数据部门的程序员们收到需求之后,一分析,数据有好几百tb,一台机器跑要跑7个月(200多天),所以得用分布式计算。于是搞了100台服务器,并把这100台服务器分成两部分,一部分有90台,叫master,负责划分数据,分配数据处理任务;一部分有10台,叫worker,负责归并数据块,计算出最终结果。
服务器搭建好了,架构弄好以后,程序员开始分头写程序,一部分负责写数据文件的划分,把文件分成一小块一小块来处理;一部分负责写计算任务调度,就是把划分好的数据文件分配到90台master服务器中;一部分负责写归并处理程序,部署到剩下的10台worker服务器,接收那90台服务器传过来的数据,并计算结果;一部分负责写出错检测,检查哪些机器挂了导致计算任务停止了,一旦发现出错了,把计算任务分配到其他正常的服务器上计算。
10台worker服务器根据1,2,3...10,进行了编号,假设每个人的都有一个微博id(是数字),按照微博id的个位数来进行划分,比如我id是 1001,那我的处理结果会在1号服务器,id是100213,那么处理结果就在3号服务器。
假设上面的流程都正常,因为机器多了,原本需要200多天的任务,有了100台机器,结果3天就跑完了!得到了这样的微博用户特征(@大师兄[单身概率 88%,科技工作者概率90%,性别男概率100%,本科毕业概率81%,收入水平5000元/月概率 10% ...])。
二、数据处理的流程
大数据的数据处理这件事用一种非技术的角度来看的话,可以按处理顺序分为三个部分,第一个部分是数据采集,第二个部分是数据存储,第三个部分是数据分析,这也是大数据搭建的基本产品模型。
1、数据采集
● 基本原则
全:多种源(客户端、服务端、数据库等),完善的数据源(零售、c端、电商、供应链等)全量而且非抽样
细:who、when、where、how、what
数据采集最重要的就是数据源,数据源好,后面的事情都很容易。但如果数据源就有问题或是太差不全之类的,后面有些问题用再复杂的算法可能都解决不了,可能都是很难得到正确的结论。所以数据采集处理流程有两个基本的原则,一个是全,一个是细。
● 全:就是说我们要拿多种数据源,不能说只拿一个客户端的数据源,服务端的数据源没有拿,数据库的数据源没有拿,做分析的时候没有这些数据你可能是搞歪了。大数据里面讲的是全量,而不是抽样,因为数据之间可能有很大差异。比如纵向里,做全国零售数据分析的时候,不能只把四川或者北京的拿来分析,因为它一定代表不了黑龙江、甘肃等地方,所以必须要全量分析全国数据。横向里,我们在分析某个商品的总的销售情况的时候,我们除了分析线下零售数据还有需要c端外送数据和电商数据,因为一个东西可能在公司的多个业务系统上销售。所以对于多个业务系统的公司,需要每个业务系统涉及的数据都要足够全,不能有任何一个系统有缺失。
● 细:其实就是强调多维度,在采集数据的时候尽量把每一个的维度、属性、字段都给它采集过来。比如:像 where、who、how 这些东西给它替补下来,后面分析的时候就跳不出这些能够所选的这个维度,而不是说开始的时候也围着需求。根据这个需求确定了产生某些数据,到了后面真正有一个新的需求来的时候,又要采集新的数据,这个时候整个迭代周期就会慢很多,效率就会差很多,尽量从源头抓的数据去做好采集。
● 数据清洗:在数据采集过程种需要对源数据做清洗处理。其实也是对数据做加工的过程,确保命名约定,编码结构,属性维度等一致性。因为本身的源数据会存在垃圾数据,本身也是杂乱的没有很好的逻辑,数据清洗的过程就是让数据更具逻辑性,更干净有序的存储。
2、数据存储
①、数据建模
数据建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。 将经过系统分析后抽象出来的概念模型转化为物理模型后,在visio或erwin等工具建立数据库实体以及各实体之间关系的过程(实体一般是表)。在软件工程中,数据建模是运用正式的数据建模技术,建立信息系统的数据模型的过程。(百度百科)
数据模型就是对现实世界的一个抽象化的数据的表示。大数据的数据建模则是基于大数据本身的数据量、数据特征、业务需求、还有自身分析重点和目标做的数据模型。我们可以针对分析的需求对数据重新进行解码,它内容可能是一致的,但是我们的组织方式改变了一下。就拿用户行为这块数据来说,就可以对它进行一个抽象,然后重新把它作为一个判断表。数据建模时常常考虑的有两个概念,一个是维度,一个是指标
通常各个业务系统,一般前端做一个请求,然后对请求经过处理,再更新到数据库里面去,数据库里面建了一系列的数据表,数据表之间都是很多的依赖关系。这些表一个业务项发展差不多一年以上它可能就牵扯到几十张甚至上百张数据表,然后把这个表直接提供给业务分析人员去使用,理解起来难度是非常大的。数据建模则可以把这些关系重构,让业务人员更容易理解。
②、数据仓库
● 面向主题:数据仓库是围绕着一些主题,如顾客,供应商,产品,销售等创建的。数据仓库关注决策者的数据建模与分析,排除对决策无用的数据,提供特定简单明确的数据视图。
● 集成:构造数据仓库时,数据来源是多种异构的数据源,使用数据清洗和数据集成技术,确保命名约定,编码结构,属性维度等一致性。
● 伴随时间变化:数据仓库存储从时间维度提供信息,所以每一条数据必须包含时间维度,同时也就需要各个业务系统在建表时加入“创建时间、修改时间、创建人、修改人、是否删除”五个字段
● 非易失:数据仓库不同于普通的业务应用数据,它跟操作环境下的应用数据是分离的,所以它不需要参与事务处理和并发控制。通常它只需要两种数据访问:数据的装入(抽取)和数据访问,不存在数据更新或者数据删除,所以数据修改时需要加入数据修改时间、修改人,数据删除时在数仓标记数据已经删除。
数据仓库在创建的时候需要分库和分表:创建表时根据数据清洗阶段进行分库,根据主题域进行分表。
③、数据集市
数据集市(data mart) ,也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。数据中心的重点就在于它迎合了专业用户群体的特殊需求,在分析、内容、表现,以及易用方面。数据中心的用户希望数据是由他们熟悉的术语表现的。
用通俗的话说数据仓库是为数据集市提供服务,在数据仓库里,每个数据单元都与特定的时间相关。数据仓库包括原子级别的数据和轻度汇总的数据,是面向主题的、集成的、不可更新的(稳定性)、随时间不断变化(不同时间)的数据集合,用以支持经营管理中的决策。而数据集市就是数据仓库的一个子集,他主要面向部门级业务,并且只面向某个特定的主题。为了解决灵活性与性能之间的矛盾,数据集市就是数据仓库体系结构中增加的一种小型的部门或工作组级别的数据仓库。数据集市存储为特定用户预先计算好的数据,从而满足用户对性能的需求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
在数据结构上,数据仓库是面向主题的、集成的数据的集合。而数据集市通常被定义为星型结构或者雪花型数据结构,数据集市一般是由一张事实表和几张维表组成的。
数据集市特点:
● 数据集市的特征包括规模小。
● 有特定的应用。
● 面向部门。
● 由业务部门定义、设计和开发。
● 业务部门管理和维护。
● 能快速实现。
● 购买较便宜。
● 投资快速回收。
● 工具集的紧密集成。
● 提供更详细的、预先存在的、数据仓库的摘要子集。
● 可升级到完整的数据仓库。
3、数据分析
当数据采集回来并存储好以后就可以在这基础上运用这些数据来做数据分析了,对于互联网产品常用的分析方式有四种:
①、多维度分析: 多维事件的分析,对不同维度之间的组合、关系进行分析。
②、漏斗分析:对于电商、订单相关的这种行为的产品来说非常重要,要看不同的渠道转化这些东西,一个用户从做第一步操作到后面每一步操作,可能是一个杂的过程。
③、留存分析:用户来了之后我们希望他不断的来,不断的进行购买,这就是留存。
④、回访分析:回访是留存的一种特别的形式,可以看他一段时间内访问的频次,或者访问的时间段的情况
上面说的四种分析结合起来去使用,对一个产品的数据支撑、数据驱动的这种深度就要比只是看一个宏观的访问量或者活跃用户数就要深入很多。