我在公司的数据部门工作,每天的订单类数据处理流程大致如下:

  1. 删除分析数据库的历史订单数据
  2. 全量更新订单数据到分析数据库。(由于订单核心数据不大,所以经受得起这么折腾)
  3. 将数据简单清洗,并生成数据集市层
  4. 分析处理,产出报表。当然还有其他的数据也是这么处理的(比如产品的数据、景区的数据、票种的数据、供应商的数据等等)

还有日志类的数据,这里不是重点,就不介绍了!这么干了一年,发现有如下问题:

  • 业务变化很快,比如业务数据表经常变化字段含义、增加各种逻辑数据等
  • 业务数据源越来越多,随着品类越来越多,新部门逐步成立,数据源也就越来越多样化
  • 需求越来越多,越来越复杂,以前只有大佬想我们要战略数据,可是现在所有的产品和运营都向我们要各种各样的用户行为数据、订单分析数据和竞对优势数据
  • 数据的实时行要求越来越高,这到不是说秒级别就看见结果,而是早晨提出个新业务数据需求,晚上就要!

数据毕竟是为了市场服务的,所以需求我们要跟上它的节奏,这就对数据系统提出了很大的挑战,导致数据质量下降、生产效率下降!该怎么解决哪?在解决这个问题的过程中,逐步发现了一点苗头:发现我们建立的数据仓库与它的定义不太符合。下面是数据仓库的定义:

数据仓库(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和数据仓库各做各的,形成优势互补!可以解决现在互联网公司遇到的快速变化、快速开发等特点!特别是对于那些刚刚创建数据团队,数据开发人员紧缺的公司,可以尝试使用这个数据架构解决问题!

参考资料:

http://wenku.baidu.com/view/c620146c7e21af45b307a86e?fr=prin

http://blog.csdn.net/hero_hegang/article/details/8691912

数据仓库与ODS的区别的更多相关文章

  1. DW数据仓库与ODS的区别

    这两天接触到ODS,开始很纳闷,有了DW(Data Warehouse)干嘛还要ODS(Operational Data Store),于是不查不知道,一查吓一跳,这里面还有这么多道道,这里总结一下, ...

  2. DW,DM,ODS的区别

    数据仓库的重要应用是将不同来源的数据和异构数据通过ETL整合在一起,为决策分析提供支撑,若在同一个数据库中分不同用户,此意义不大:假设所有有用户都在一个数据库里,如果因为某个原因数据库重启,那么会影响 ...

  3. 数据仓库分层ODS DW DM 主题 标签

    数据仓库知识之ODS/DW/DM - xingchaojun的专栏 - CSDN博客 数据仓库为什么要分层 - 晨柳溪 - 博客园 数据仓库的架构与设计 - Trigl的博客 - CSDN博客 数据仓 ...

  4. 数据仓库与ODS

    1. 引言 本篇主要讲述操作数据存储(ODS)系统产生的背景.定义.特点,以及它与数据仓库的区别.在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者心 ...

  5. 数据仓库原理<3>:数据仓库与ODS

    1. 引言 本篇主要讲述操作数据存储(ODS)系统产生的背景.定义.特点,以及它与数据仓库的区别. 在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者 ...

  6. 浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系

    文章背景: 相信大部分刚接触上面三个概念的同学,都多多少少会有些迷惑,现在我就给大家简单分析下这三者的关系,希望大家对这三者的概念理解有所帮助吧. 本文主要从下面两类关系来叙述上面三者的关系: 数据库 ...

  7. 数据仓库DW、ODS、DM概念及其区别

    整体结构 在具体分析数据仓库之前先看下一下数据中心的整体架构以及数据流向   数据中心整体架构.png DB 是现有的数据来源,可以为mysql.SQLserver.文件日志等,为数据仓库提供数据来源 ...

  8. 【转】数据仓库ODS、DW和DM概念区分

    今天看了一些专业的解释,还是对ODS.DW和DM认识不深刻,下班后花时间分别查了查它们的概念. ODS——操作性数据 DW——数据仓库 DM——数据集市 1.数据中心整体架构   数据中心整体架构 数 ...

  9. 对数据仓库ODS DW DM的理解

    原文链接:https://www.jianshu.com/p/72e395d8cb33 今天看了一些专业的解释,还是对ODS.DW和DM认识不深刻,下班后花时间分别查了查它们的概念. ODS——操作性 ...

随机推荐

  1. 优秀的UI插件

    妹子UI: http://amazeui.org/getting-started 百度图表: http://echarts.baidu.com/ 手机UI库:https://github.com/ac ...

  2. MongoDB 基础命令使用学习记录

    1. 启动 mongod 几个常用命令说明:--dbpath : 指定数据库相关文件的存储目录 --logpath: 指定日志文件的存储目录 --port: 指定数据库的端口,默认是 27017 -- ...

  3. [stm32][ucos][ucgui] 2、LED闪烁、串口、滑块、文本编辑框简单例程

    上一篇:[stm32][ucos] 1.基于ucos操作系统的LED闪烁.串口通信简单例程 * 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了7个任务            任务名   ...

  4. AngularJs 基础(60分钟入门)

    AngularJS 是一个创建富客户端应用的JavaScript MVC框架.你仍然需要具有服务端后台,但大多数的用户交互逻辑将放到客户端上处理.它可以创建单页的应用程序,一个页面的应用仅仅需要HTM ...

  5. 更新日志 - fir.im 新版管理后台邀请内测

    上周,我们对fir.im 新版管理后台的页面结构和样式进行了优化,现在新版的管理后台开始邀请内测,感兴趣的伙伴可以发邮件到 **beta@fir.im** 申请.为了保证服务质量和对问题进行有效追踪, ...

  6. pip 豆瓣镜像使用

    pip install -i https://pypi.douban.com/simple/ flask 要用https的 https://pip.pypa.io/en/latest/user_gui ...

  7. Task中的异常处理

    最简单的方式 var t = new Task(() => { throw new Exception("unknow excption"); }); t.Start(); ...

  8. 解决.Net 4.0 A potentially dangerous Request.Form value was detected from the client 异常

    在web.config中加入 <httpRuntime maxRequestLength="22000" executionTimeout="43200" ...

  9. Android SDK Tools Platform-tools Build-tools

    (1)Android SDK (Android SDK主安装包,包含SDK Manager.AVD Manager.工具包tools,释放后的根文件夹为android-sdk-windows): re ...

  10. 关于 MySQL 的 boolean 和 tinyint(1)

    boolean类型MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),MySQL里有四个常量:true,false,TRUE, ...