本文转自,仅供学习记录使用
转自:http://sanwen.net/a/irkrtbo.html
背景
数据仓库作为数据采集、数据加工和数据输出工厂,支撑了数据分析、报表、挖掘等多种数据需求,发挥了数据驱动价值的作用。其中从分布式数据库服务器采集数据是数据进入数据仓库的关键步骤,接入数据的质量和时效,将直接影响到数据在数据仓库的加工和输出质量。
目前数据仓库的数据采集具有时间滞后性,为了采集前一天的所有数据,一般是在当天的24点以后,设置一个时间阀值,通过任务调度程序绑定一个数据抽取任务,每天从时间阀值开始执行数据抽取任务,从而从同一时刻开始抽取每个数据库服务器中的数据。
为提高数据采集的效率,并避免由于数据抽取任务集中导致的数据仓库的服务器性能变差。提供以下解决方案:
一、定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。在检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。
二、数据抽取检测单元,用于定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。数据抽取存储单元,用于在检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。
三、通过在数据仓库检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据,以分别确定从每个数据库服务器抽取数据的触发时间,分散了执行数据抽取任务的时间,避免了由于数据抽取任务集中导致的数据仓库的服务器性能变差,还提高了数据采集的效率。
实施方法及流程下面结合附图及具体实施对本方法进行更加详细与完整的说明。![](https://i-blog.csdnimg.cn/blog_migrate/53c3f74073798339d03a0eb4d45ca341.png)
图1是库房数据采集方法的实现流程图。该实现流程包括:
步骤11:定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。
用于存储商品的库房分布在全国各地,每个库房都独立部署着相同的WMS 。同一企业的所有库房的数据库服务器均与该企业的数据仓库连接。分散的WMS将库房生产作业过程中产生的数据存储于各自的数据库服务器中,数据仓库通过数据抽取事件将每个数据库服务器中的数据抽取到数据仓库中。
所述定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发,包括:A、定时检测每个所述数据库服务器中的打卡事件是否被触发。包括:定时检测每个所述数据库服务器中的打卡标识的取值是否为已打卡,若是,确定该数据库服务器的打卡事件被触发。对于每个库房,库房作业人员确定该库房的数据库服务器完成当天的数据更新时,并执行打卡操作,该库房的数据库服务器依据打卡操作将打卡标识的取值设置为已打卡,即通过打卡操作能够确定库房的生产作业的结束时间,从而确定数据库服务器对应的数据抽取事件的触发时间。
B、在当前时间晚于预设的时间阈值时,确定该数据库服务器中的数据抽取事件被触发。例如,所述时间阀值晚于当天的24点。
步骤12:在检测到任一数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。其中,每个数据库服务器包括至少一张表格,以存储数据库服务器所属库房的生产数据。在数据仓库检测到任一数据库服务器中的数据抽取事件被触发时,抽取该数据库服务器中每张表格的数据。在检测到抽取并存储每个所述数据库服务器中的数据时,将每个数据库服务器中的相同表格的数据合并到一个表格中。数据仓库可以通过检测数据仓库缓冲层抽取到的表格的数量,来确定是否完成对每个数据库服务器的数据抽取。以M个数据库服务器,每个数据库服务器中有N张表格为例,在数据仓库抽取到的表格数量是M*N时,确定完成了对每个数据库服务器的数据抽取。
![](https://i-blog.csdnimg.cn/blog_migrate/d4c64c2ec727470c42cc31c33ce0956a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb154e757237cd3a61b17ad387b1a123.jpeg)
在各地库房的数据被任务调度单元抽取到数据仓库的缓冲层之后,库房数据完整性检查与合并单元检查抽取到的数据仓库缓冲层中的库房数量是否等于创建的任务个数M,若是则执行不同库房相同表格的合并,最终只保留N张表;若缓冲层中库房数量小于创建的任务个数M,则表示有库房未抽取到数据仓库,那么重复步骤24-步骤27,直至所有库房的数据都被抽取、合并为止。
![](https://i-blog.csdnimg.cn/blog_migrate/a0d1cfbb2fc7b7584f7529ba2b4cb611.png)
本方法通过数据抽取检测单元定时检测数据抽取事件被触发的数据库服务器,并通过数据抽取存储单元抽取上述数据库服务器中的数据,避免了由于数据抽取任务集中导致的数据仓库的服务器性能变差,还提高了数据采集的效率。
![](https://i-blog.csdnimg.cn/blog_migrate/c81370754210b1ea3a6ce89cae72be48.png)
图5
如图5所示,该系统可以包括库房打卡单元、数据库服务器、打卡检查单、任务调度单元、数据仓库和库房数据完整性检查与表合并单元。其中库房打卡单元可以配置在数据库服务器中,打卡检查单元,任务调度单元和库房数据完整性检查与表合并单元可以配置在数据仓库中。
库房每天的生产作业结束之后,库房工作人员通过库房打卡单元执行打卡操作,意味着该库房的工作已经完成,库房数据不会再发生变化,同时该库房对应的数据库服务器会记录下来当天是否打卡的标识。打卡检查单元用于检查库房数据库中,当天是否记录已打卡的标识,并实时通知任务调度系统,来触发调度任务系统执行打卡库房数据库的抽取操作。任务调度单元用于执行数据的抽取,把库房数据库中的数据采集到数据仓库中。如果任一库房接收到已打卡的信号后,会触发任务调度单元执行对该库房的数据抽取任务,以把该库房对应的数据库服务器中所有表格的数据抽取到数据仓库;如果任一库房未打卡,则该库房对应的数据库服务器不会记录打卡标识,则不触发对该库房数据的抽取。同时抽取任务会设置一个最晚抽取时间(在24点之后),到达最晚时间依然没有获取到对应库房的打卡标识,则会触发抽取任务,通过任务调度单元触发未打卡库房对应的数据抽取任务。库房数据完整性检查与表合并单元用于检查是否所有的库房数据库中的数据,都成功抽取到数据仓库中;若是,则把不同库房相同表结构的数据合并到一张表格里;若否,则重复数据抽取过程,直到所有数据库服务器的数据均被采集为止。