大数据时代如何建设ODS?

1
传统数据仓库架构:贴源层~ods层~er层-edw层~dm层
ods层一般是保存历史数据,拉链数据,表结构基本与源系统一致?
在大数据时代,建设新的ODS有没有新的技术与方法??包括数据库选型,硬件选型实施方法论等?
已邀请:
2

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-10-15 回答

说真的,3层我都嫌多,你弄了5层。。。

---分割线, 真是没有心情再写了,刚才不知道什么原因,敲的几百字都消失了....-----
 
关于ODS多说几句:
一般来说,我们实现DW的时候的所谓ODS层都是扯淡的,这就是我说3层我都嫌多的原因。

因为ODS层的实际是这样的:
1. 多系统原子级别的数据集成
2. 实时或者准实时,一般分钟级,现在有的要求秒级别
3. 有些operation层解决不了的查询和分析,需要拿到ODS层解决
4. 数据会挥发(挥发到DW层去了),不保留历史。所以拉链表是纯粹的DW的产物,ODS的data archiving都会流向DW的历史表,ODS层没有拉链表。
 
这种需求其实很早都有,但放到DW层提就有些别扭,因为传统DW的本质还是BATCH模式的ETL,它处理实时数据能力没那么强,所以对应于实时性的需求,一般就是用CDC,Replication来解决,这东西不是新玩意,N年前就非常成熟,但这东西有个问题就是一般都是source to target单表对单表的复制,你要是还有向上聚合,多系统整合的需求,实时性以及各方面性能就难以满足了。因此有很多这种需求,都放到业务应用层去解决了,一般都是对应于单一的需求去解决的(而不是为了解决纯粹的企业级信息整合,通常ODS都是有鲜明的需求的,在compliance里面应用最多,满足operational以及战术层的辅助决策需求),MDM算沾边的,还有就是信用稽核这种东西,都是需要分钟级别或者15分钟之类的这种频率去刷新。再有就是用消息队列等办法去实现的。
 
大数据时代各种神奇的计算能力让ODS含义更丰富了,big data能够处理更大规模的数据,能够更快速的处理,而且,还能做更多更高级的运算(不仅仅是data integration,还有各种复杂的数据挖掘应用)。
 
首先是实时性更强了,尤其针对数据集成以及数据向上汇总。用列存、MPP、Knowledge Grid之类的东西,从前几个小时才能算出来的现在几分钟就能计算出来了。用于库存等计算、用于各个门店搜集数据向上汇总等计算。
 
其次是更多高级应用可以在这一层实现,比如实时智能推荐等等。
 
但这些在大数据时代是不是还叫ODS,我就搞不清楚了,大数据已经在重新定义DW了,ODS这种东西更是如此,以后可能又有了新名词。 

 
2

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2015-10-20 回答

可能微软BI有点另类,没有特别提到 ODS 的概念,我们统称为 Staging 层零时数据集结区。这一层我们可以每次加载数据的时候先清空掉然后重新加载,也可以每次只做增量加载;也可以不删除旧的历史数据,保留所有数据,结构和源系统几乎一致。不知道这个概念是不是和你们提到的 ODS 概念是一样的?

Staging 层往上可以直接通向 DW 层,DW 层直接面向报表层或者 SSAS 分析服务 CUBE 层,这是一般通常的做法。

业务逻辑复杂一点的,数据清洗规则复杂一点的通常会增加 Transformation 层,变为:
Staging -> Transformation -> DW

前端聚合汇总嫌查询效率低的,可以在 DW 层上增加一个 Aggregation 层,即把一部分事实表数据按照常用的分析维度组合成一个星型模型,聚合后的数据量也不大适合快速访问和分析。
Staging -> Transformation -> DW -> Aggregation, 这里的 Aggragation 可能是跨事实表数据的,不知道和大家经常谈的 DataMart 是否一致。

不管大数据还是小数据,我觉得终端用户看到的应该就是这种维度+事实或者被打平了的二维数据来做分析。
1

老头子 - 专注是唯一的捷径 2015-10-20 回答

传统数据仓库架构:贴源层~ods层~er层-edw层~dm层
ods层一般是保存历史数据,拉链数据,表结构基本与源系统一致?
在大数据时代,建设新的ODS有没有新的技术与方法??包括数据库选型,硬件选型实施方法论等?


一般来说,大的方向:
DW-DM
继续细分:
DW:DW(ODS、MDM)-DW(ODS的实体集成、主数据)
DM:DM(主题层) - Report(报表层)
 
ODS一般采用CDC、OGG等实时数据同步的工具进行增量、全量同步。
数据库Oracle 12c有个in-memory option的新特性非常强大,适用ODS这种大数据量存储的数据库。
硬件如果负担的起当然是配套的exadata, 非常强大。
 
如果无法负担,ODS可以采用DB2试试他的列存储,也许有奇效。
主题和报表可以采用优化器、分区等优化机制较为nb的Oracle。
 
本人是Oracle党,其他数据库可以参考微软BI的几位大牛。
0

Devin - 数据仓库从业者 2015-10-18 回答

这种东西,就像BAO胖子说的,层数合理就ok,越多就越增加ETL的时间。
0

郑大鹏 2015-10-22 回答

这个你了解了解。
你知道数据湖泊(DATA LAKE)吗?
说数据湖泊和数据仓库的区别,主要就是数据仓库的数据进入这个池之前是预先分类的,这可以指导其后面如何进行数据的分析。但在大数据时代,这些都是素材而已,你根本不知道以后如何用它。也就是数据湖泊给后面的数据分析带来了更大的弹性。因此,这个放大数据的仓库,专家建议叫数据湖泊,以区别于数据仓库。。。。。。
http://chuansong.me/n/502952
0

476100367 2015-10-27 回答

看到大家分层,各有千秋。
这个是我的分层,也和大家交流下
微软BI的
Staging层 ---> ODS层 --->DW层 ---> ssas 或者 展现用了
              --->History层
 
Staging层:做缓冲用
ODS 层:大家都懂
History层:见名知意了,保存ODS 层的变更数据,你也可以理解为拉链吧
DW层:你懂的
 
这样设计的意义,自己思考吧!
0

taskctl - 最佳的批量调度平台 2015-10-27 回答

我来补充一哈,建设数仓也不要忽略了底层批量调度哦,可靠的批量调度系统也是数仓系统良好运行的必要条件呢

要回复问题请先登录注册