什么是 ODS

 

 ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。

 

根据Bill.Inmon的定义,“数据仓库是面向主题的、集成的、稳定的、随时间变化的,主要用于决策支持的数据库系统”    ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。     

 

在Kimball的<<数据仓库生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是这样定义的     

1. 是操作型系统中的集成,用于当前,历史以及其它细节查询(业务系统的一部分)     

2. 为决策支持提供当前细节数据(数据仓库的一部分)     因此操作数据存储(ODS) 是用于支持企业日常的全局应用的数据集合,ODS的数据具有面向主题、集成的、可变的和数据是当前的或是接近当前的4个基本特征。同样也可以看出ODS是介于DB和DW 之间的一种数据存储技术,和原来面向应用的分散的DB相比,ODS中的数据组织方式和数据仓库(DW)一样也是面向主题的和集成的,所以对进入ODS的数 据也象进入数据仓库的数据一样进行集成处理。另外ODS只是存放当前或接近当前的数据,如果需要的话还可以对ODS中的数据进行增、删和更新等操 作,虽然DW中的数据也是面向主题和集成的,但这些数据一般不进行修改,所以ODS和DW的区别主要体现数据的可变性、当前性、稳定性、汇总度上。     

由于ODS仍然存储在普通的关系数据库中,出于性能、存储和备份恢复等数据库的角度以及对源数据库的性能影响角度,个人不建议ODS保存相当长周期的数据,同样ODS中的数据也尽量不做转换,而是原封不动地与业务数据库保持一致。即ODS只是业务数据库的一个备份或者映像,目的是为了使数据仓库的处理和决策支持要求与OLTP系统相隔离,减少决策支持要求对OLTP系统的影响。     

为什么需要有一个ODS系统呢?一般在带有ODS的系统体系结构中,ODS都具备如下几个作用:     

1) 在业务系统和数据仓库之间形成一个隔离层。     一般的数据仓库应用系统都具有非常复杂的数据来源,这些数据存放在不同的地理位置、不同的数据库、不同的应用之中,从这些业务系统对数据进行抽取并不是一件 容易的事。因此,ODS用于存放从业务系统直接抽取出来的数据,这些数据从数据结构、数据之间的逻辑关系上都与业务系统基本保持一致,因此在抽取过程中极 大降低了数据转化的复杂性,而主要关注数据抽取的接口、数据量大小、抽取方式等方面的问题。     

2) 转移一部分业务系统细节查询的功能     在数据仓库建立之前,大量的报表、分析是由业务系统直接支持的,在一些比较复杂的报表生成过程中,对业务系统的运行产生相当大的压力。ODS的数据从粒度、 组织方式等各个方面都保持了与业务系统的一致,那么原来由业务系统产生的报表、细节数据的查询自然能够从ODS中进行,从而降低业务系统的查询压力。     

3) 完成数据仓库中不能完成的一些功能。     一般来说,带有ODS的数据仓库体系结构中,DW层所存储的数据都是进行汇总过的数据和运营指标,并不存储每笔交易产生的细节数据,但是在某些特殊的应用中,可能需要 对交易细节数据进行查询,这时就需要把细节数据查询的功能转移到ODS来完成,而且ODS的数据模型按照面向主题的方式进行存储,可以方便地支持多维分析 等查询功能。即数据仓库从宏观角度满足企业的决策支持要求,而ODS层则从微观角度反映细节交易数据或者低粒度的数据查询要求。     

在一个没有ODS层的数据仓库应用系统体系结构中,数据仓库中存储的数据粒度是根据需要而确定的,但一般来说,最为细节的业务数据也是需要保留的,实际上 也就相当于ODS,但与ODS所不同的是,这时的细节数据不是“当前、不断变化的”数据,而是“历史的,不再变化的”数据。这样的数据仓库的存储压力和性能压力都是比较大的,因此对数据仓库的物理设计和逻辑设计提出了更高的要求。 

### 数据仓库ODS层的定义 ODS(Operational Data Store),即操作型据存储,是一种介于原始据源和数据仓库之间的中间层。它是一个面向主题的、集成的、可变的、当前的细节据集合[^4]。ODS的主要目的是提供一种快速访问和处理实时或近实时据的能力。 在实际应用中,ODS通常被认为是数据仓库的一个过渡阶段,同时也是数据仓库项目中的一个重要组成部分。它可以看作是从源头获取据后的第一个加工环节,这些据经过简单的清洗和标准化后会被存入ODS层[^3]。 --- ### ODS层的功能 #### 1. **据集成** ODS负责从多个异构的据源中提取据并进行初步整合。通过ETL过程(Extract, Transform, Load),将来自不同系统的据统一到一个标准结构下,从而实现跨系统的信息共享[^3]。 #### 2. **支持准实时查询** 由于ODS保留了较为详细的原始记录,并且更新频率较高,因此能够满足一些需要及时响应的操作需求。例如,在金融交易监控或者库存管理等领域,可以通过ODS迅速定位异常情况并采取行动[^4]。 #### 3. **历史据保存** 尽管ODS强调的是“当前”的特性,但它也会适当保留部分历史版本以便追踪变化趋势。这种机制有助于理解业务流程的发展轨迹以及诊断潜在问题所在[^3]。 #### 4. **为后续建模做准备** 从ODS流向更高层次(如DWD/DWM/DWS)之前,已经完成了基本的质量控制和技术预处理工作。这使得下游可以专注于构建复杂的分析模型而无需过多关注底层复杂性[^1]。 --- ### ODS层的应用场景 #### 1. **运营决策支持** 当企业管理者希望基于最新状态做出判断时,可以直接利用ODS提供的高时效性信息来辅助短期规划与调整策略。 #### 2. **客户行为跟踪** 电子商务平台常用ODS记录用户的浏览路径、购买偏好等动态活动特征,进而优化推荐算法效果[^5]。 #### 3. **供应链协调** 制造业领域借助ODS同步供应商订单履行进度、物流运输状况等相关指标,提高整个链条运转效率的同时降低成本风险[^2]。 以下是关于如何创建一个典型的ODS架构的小例子: ```sql -- 创建ODS表结构 (假设我们正在处理销售据) CREATE TABLE ods_sales ( sale_id BIGINT, product_name VARCHAR(255), quantity INT, price DECIMAL(10, 2), transaction_date DATE, source_system VARCHAR(50), -- 记录据来源于哪个子系统 load_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 加载时间戳字段 ); -- 插入新一批销售据至ODS层 INSERT INTO ods_sales (sale_id, product_name, quantity, price, transaction_date, source_system) SELECT id, name, qty, cost, date_sold, 'POS_System' FROM staging_pos_data; ``` 上述SQL语句展示了如何设置一张用于接收POS机销售明细的ODS表格,并演示了一种常见的增量加载方法。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值