数据仓库(DataWarehouse简称DW)创建的目的是用于决策支持,因此建立一个完善可靠的决策支持系统就取决于是否能建立一个好的数据仓库。尽管基于数据仓库的决策支持系统已被认为是一个很好的用于决策支持的方案,但由于这种体系结构将操作环境与分析环境完全分离开来,使得这一体系结构不适合于中层管理人员和即时分析处理的应用。为此提出了业务数据商店(OperaTIonal DATA Stores简记为ODS)的概念。它弥补了DB-DW两层体系结构的不足,而形成了一种基于DB-ODS-DW的三层体系结构。
业务数据商店是用于支持企业日常的全局应用的数据集合,将它视为业务处理的基础,它可向数据仓库馈送数据,又称其为操作数据存储。保存在ODS中的数据具有以下特点:面向主题的、集成的、可变的、数据是当前或接近当前的。与DW一样,ODS中的数据组织方式是面向主题的、集成的,因此ODS是建立在数据库之上的,进入ODS的数据也要进行抽取、转换和集成。不同于数据仓库的是,ODS中存放当前或接近当前的数据,可以进行联机修改,包括增、删、修改等操作,因此,它们两者的技术支持不尽相同,ODS要支持面向记录的联机更新,又要保证其数据与原数据库系统中数据的一致性,因而需要的支持技术与面向应用的分散数据库系统(DB)的支持技术一样复杂。ODS与传统的数据库(DB)不同之处还在于ODS提供了全局一致的联机事物处理(OLTP),而DB只适用于部门级的OLTP,数据库DB、业务数据商店ODS和数据仓库DW三者之间的比较。
表1 数据库DB、业务数据商店ODS和数据仓库DW三者之间的比较
ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需 求。常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一。
那么为什么需要有一个ODS系统呢?一般在带有ODS的系统体系结构中,ODS都具备如下几个作用:
ODS虽然是一个新的提法,但就其实质内容来说,它并不是一个新的事物,ODS是基于数据仓库的决策支持技术的另一方面或另一表现形式。因此可以用现成的数据仓库技术(DWT:Data Warehouse Technology)来建立ODS。DWT 是指一系列方法、技术和工具,充分利用这一切便可以产生一种能在集成平台上向终用户传递数据的载体。ODS应用主要由两方面:一类是作为一种独立的解决方案为需要集成操作环境的企业提供全局一致的应用;另一类是作为从DB向DW的一种过渡形式,建立一种基于DB-ODS-DW的三层体系结构的决策支持系统解决方案。
尽管创建ODS系统可以采用DWT技术,但由于通常ODS既要执行传统的事务处理环境的功能又要执行特别决策支持环境的功能,而这两种环境本身差异很大,充分发挥这两种环境性能的技术是直接冲突的,因此ODS的设计是复杂的。在考虑选取哪种类型的ODS应用、体系结构是采用集中式的还是采用分布式、开发方法是采用“自上而下”的方法,还是“自下而上”的方法,这些因素都与企业自身的性质及状况、企业规模的大小、所经营业务范围等具体情况紧密相联。
ODS主要为了优化报表速度,整合交互数据,扩展第三方集成为目标,形成企业数据仓库(EDW)的基础。ODS集成通用数据,作为输出和展示使用的数据来源,在系统中的作用是非常重要的,在MES2.0中,以保存关系型数据为主,不涉及类似PRM的静态数据,又或PHD的实时数据,而是以固定的业务结算单元进行数据的抽取和存储。
MES的ODS既拥有传统ODS的性能,也兼顾了部分DW的功能,可以说是介于两者之间的一个综合体,相应的为了满足地区公司对综合业务的需求,以及系统性能优化上,也牺牲了一些的相悖的功能。
适当控制数据粒度的同时,以DW的维度与事实存储数据,保持了数据的频度和稳定性,原则上作为只读库,同样也在系统性能上有了大幅度的提升,不仅满足了企业辅助决策,同时也支持了中层业务管理的需求。为了满足保留历史数据又兼顾系统性能,进行了数据表的拆分,可以通过配置修改ODS表中保留的数据期限,超出期限的数据归档到历史数据表中,后续根据实施进程还会进一步将共性问题添加到ODS当中去。
ODS在总体设计阶段,向MES包含范围的其他模块发送了收集ODS集成数据的邮件,经过总体组各方反馈,进行了ODS的设计与开发,目前ODS包含MES物料平衡、生产调度、公用工程、计量管理四个模块,共计42张维度与事实表,6个视图,1个存储过程,5个包头包体,26个计划任务,1个序列。
ODS数据来源于基础的业务数据库,经过ETL的抽取和加工,存储于ODS中,再经过进一步整合加工,提供给生产统计报表和相关展示模块。
目前MES的ODS表和业务数据表在同一个数据库中,后续会将ODS迁移至独立的表空间,ODS中的维度表是以全量的方式推送,先删后插,在推送数据前记录日志信息,数据推送完后修改日志的状态;ODS中的事实表是以增量的方式推送,在推送数据前记录日志信息,推送数据的开始时间为当前时间,业务数据增量获取方式是通过业务数据中的修改日期字段获取日期在推送的时间到本地推送时间段内的数据,数据推送完后修改日志的状态。数据推送以及修改日志状态必须写在同一个事务中,如果出现异常回滚,并修改日志状态。推送数据的存储过程创建完后,将每个模块推送数据的存储过程放在一个包中。
作业
创建JOB,定义数据的抽取频次;
根据实际情况定义JOB的执行时间,完成数据的自动抽取;
测试过程中可以人为手动执行。
归档
每个事实表都要对应的创建历史数据归档表;
创建归档配置表,并配置归档记录;
创建JOB调用归档存过程,完成定期自动归档。
优化
聚集索引:保证实体的完整性;加快数据库的操作速度。
非聚集索引:大大加快数据的检索速度;保证数据记录的性;加快表和表之间的连接,实现表与表之间的参照完整性;在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间。
视图:方便查询,简化数据操作,提高数据的安全性。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。