一、ODS是什么
ODS是什么?我根据自己的理解,ODS是一个将面向主题的,动态增长的,非实时的,消除了原始数据库差异的,对原始库最大限度进行冗余处理后得到的数据集,通过ODS消除了数据间的关联细节,实现了对某一领域数据进行统一处理(比如查询、统计)的快捷方法。
ODS的核心是对业务粒度进行划分,进而设计出合理的ODS表。
ODS数据的来源一般是从原有数据库中通过一定的方法抽取的,抽取的方法可以是程序实现,也可以通过存储过程来实现。
ODS对数据的抽取是可以是多维度的。从原始数据库抽取到基本的ODS表是一级抽取,从一级ODS表向更高维度的ODS表抽取数据是二级抽取,以此类推。
进行多少级的抽取是根据业务的需求来确定的。比如要做一个某一主题的万能查询,通过原始库表之间的关联几乎是无法实现的。但是通过对原始库该主题的表数据进行冗余处理形成新的ODS数据表可以方便实现。但是要是对这些数据库进行处理以生成月报表、年报表,则需要多级抽取,比如对ODS表进行分月统计后,将结果保存在新的ODS表中,在这个新的月报ODS表中,再进行年一级别的统计处理,就形成了年报ODS表。往往ODS表中的列数非常的多,远远超出某一业务的需要。
二、ODS实现
1、划分主题(业务域),结合需求,对本业务域中的表进行分析冗余形成一个或多个大表--ODS表。
2、结合需求,对ODS数据抽取的粒度进行分析,这里面也许会做多级数据抽取。
3、通过具体的实现方法,给ODS表中抽取数据,抽取过程一般在停止业务或者服务器空闲的情况下进行,比如每天晚上抽取当天数据到ODS中。
4、对数据进行管理,数据库中的数据分为当前、历史、归档。