这两天接触到ODS,开始很纳闷,有了DW(Data Warehouse)干嘛还要ODS(Operational Data Store),于是不查不知道,一查吓一跳,这里面还有这么多道道,这里总结一下,当作学习了。
简单说:ODS 操作型数据存储,存储的是当前的数据情况,给使用者提供当前的状态,提供即时性的、操作性的、集成的全体信息的需求。DW 数据仓库存储是一个面向主题的,反映历史变化数据,用于支撑管理决策。
参考一:http://www.cnblogs.com/liqiu/p/4947801.html
(本部分为转)我在公司的数据部门工作,每天的订单类数据处理流程大致如下:
- 删除分析数据库的历史订单数据
- 全量更新订单数据到分析数据库。(由于订单核心数据不大,所以经受得起这么折腾)
- 将数据简单清洗,并生成数据集市层
- 分析处理,产出报表。当然还有其他的数据也是这么处理的(比如产品的数据、景区的数据、票种的数据、供应商的数据等等)
还有日志类的数据,这里不是重点,就不介绍了!这么干了一年,发现有如下问题:
- 业务变化很快,比如业务数据表经常变化字段含义、增加各种逻辑数据等
- 业务数据源越来越多,随着品类越来越多,新部门逐步成立,数据源也就越来越多样化
- 需求越来越多,越来越复杂,以前只有大佬想我们要战略数据,可是现在所有的产品和运营都向我们要各种各样的用户行为数据、订单分析数据和竞对优势数据
- 数据的实时行要求越来越高,这到不是说秒级别就看见结果,而是早晨提出个新业务数据需求,晚上就要!
数据毕竟是为了市场服务的,所以需求我们要跟上它的节奏,这就对数据系统提出了很大的挑战,导致数据质量下降、生产效率下降!该怎么解决哪?在解决这个问题的过程中,逐步发现了一点苗头:发现我们建立的数据仓库与它的定义不太符合。下面是数据仓库的定义:
数据仓库(Data Warehouse):是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
很明显我们并不符合相对稳定的和反应历史变化的两个条件,因为类似订单类数据,每天全量更新(原因是同一个订单状态随着时间会变化,比如今天买了,明天退货了)。这就明显不符合想对稳定这一概念了,更别说反应历史变化了!经过最近的思考,发现自己搭建的系统更符合ODS的定义:
ODS:是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。
那么大家可能会问ods和数据仓库的区别是什么哪?答:ods是短期的实时的数据,供产品或者运营人员日常使用,而数据仓库是供战略决策使用的数据;ods是可以更新的数据,数据仓库是基本不更新的反应历史变化的数据,还有很多,这里就不一一列举了。
讲到这里问题就明晰了,如何能搭建一个体系,既能支持战略决策使用的数据仓库数据,又能兼容业务快速的变化和运营产品人员日常需求的ODS数据哪?
数据仓库和ODS并存方案
经过调研,发现大体上有三种解法:
1、业务数据 - ODS - 数据仓库
优点:这样做的好处是ODS的数据与数据仓库的数据高度统一;开发成本低,至少开发一次并应用到ODS即可;可见ODS是发挥承上启下的作用,调研阿里巴巴的数据部门也是这么实现的。
缺点:数据仓库需要的所有数据都需要走ODS,那么ODS的灵活性必然受到影响,甚至不利于扩展、系统的灵活性差
2、OB - ODS
优点:结构简单。一般的初创数据分析团队都是类似的结构,比如我们部门就应该归结到这一范畴
缺点:这样所有数据都归结到ODS,长期数据决策分析能力差,软硬件成本高,模块划分不清晰,通用性差
3、数据仓库和ODS并行
可见这个模型兼顾了上面提高的各自优点,且便于扩展,ODS和数据仓库各做各的,形成优势互补!可以解决现在互联网公司遇到的快速变化、快速开发等特点!特别是对于那些刚刚创建数据团队,数据开发人员紧缺的公司,可以尝试使用这个数据架构解决问题!
参考2:
http://blog.csdn.net/hero_hegang/article/details/8691912
背景知识:在当今这样一个信息技术发展迅速的时代,数据量也在不断的增长,面临这样的压力,总是会有大神提出一些解决方案。比如高层管理人员希望能查看整个公司的发展业绩,数据仓库(Data Warehouse, DW)正是解决该问题的主要方案,随之DW就这样产生了。可是时代在变,需求也会随着改变,比如保险公司的员工希望提高自己的业绩,拿更多的工资,那么他首先希望的就是能把更多的客户挖进来,其实这其中是有很多方法的。最基本的例子,比方说某保险公司的一个客服希望能够以最高的成功率向客户推荐相关的业务,一旦客户来电,客服可以立刻从数据库中调出该客户的相关的一连串信息,从而可以根据这些信息有针对性的向客户推荐相关的业务了,显然,这样的推荐方式明显可以提高成功率。那么问题就来了,怎么解决这样的问题呢?随之,操作型数据存储(Operational Data Store, ODS)的诞生给此类问题提供了良好的解决方案。从理论上讲,这两种解决方案到底有什么区别呢?现在进入正题。
ODS与DW的区别主要有以下几点:
1、数据的当前性
ODS包括的是当前或接近当前的数据,ODS反映的是当前业务条件的状态,ODS的设计与用户或业务的需要是有关联的,而DW则是更多的反映业务条件的历史数据。
2、数据的更新或加载
ODS中的数据是可以进行修改的,而DW中的数据一般是不进行更新的。ODS的更新是根据业务的需要进行操作的,而没有必要立即更新,因此它需要一种实时或近实时的更新机制。另外,DW中的数据是按照正常的或预先指定的时间进行数据的收集和加载的。
3、数据的汇总性
ODS主要是包括一些细节数据,但是由于性能的需要,可能还包括一些汇总数据,如果包括汇总数据,可能很难保证数据的当前性和准确性。ODS中的汇总数据生命周期比较短,所以可称作为动态汇总数据,如果细节数据经过了修改,则汇总数据同样需要修改。而DW中的数据可称为静态的汇总数据。
4、数据建模
ODS是站在记录层面访问的角度而设计的,DW或DM则是站在结果集层面访问的角度而设计的。ODS支持快速的数据更新,DW作为一个整体是面向查询的。
5、查询的事务
ODS中的事务操作比较多,可能一天中会不断的执行相同的事务,而DW中事务的到达是可以预测的。
6、用途
ODS用于每一天的操作型决策,是一种短期的;DW可以获取一种长期的合作广泛的决策。ODS是策略型的,DW是战略型的。
7、用户
ODS主要用于策略型的用户,比如保险公司每天与客户交流的客服;而DW主要用于战略型的用户,比如公司的高层管理人员。
8、数据量(主要区别之一)
ODS只是包括当前数据,而DW存储的是每一个主题的历史快照;