京东库房数据接入方法

本文转自,仅供学习记录使用

转自:http://sanwen.net/a/irkrtbo.html

背景

数据仓库作为数据采集、数据加工和数据输出工厂,支撑了数据分析、报表、挖掘等多种数据需求,发挥了数据驱动价值的作用。其中从分布式数据库服务器采集数据是数据进入数据仓库的关键步骤,接入数据的质量和时效,将直接影响到数据在数据仓库的加工和输出质量。

目前数据仓库的数据采集具有时间滞后性,为了采集前一天的所有数据,一般是在当天的24点以后,设置一个时间阀值,通过任务调度程序绑定一个数据抽取任务,每天从时间阀值开始执行数据抽取任务,从而从同一时刻开始抽取每个数据库服务器中的数据。

现有的数据仓库的数据采集方法具有时间滞后性,而且为了保障时效性,一般会并发抽取每个数据库服务器中的相同表格,这样能保证相同的表格在相差不多的时间点被抽取到数据仓库,进而为后续相同表格的合并,缩短等待的时间,但这样数据仓库的抽取任务比较集中,导致数据仓库的服务器资源的使用相对集中,会出现数据仓库的服务器性能变差的情况。其中,用于存储商品的库房分布在全国各地,每个库房都独立部署着相同的WMS (Warehouse Management System,库房管理系统),有着相同的数据库服务器,而且每个数据库服务器中的表格结构也是相同的,因此库房数据的抽取更具特殊性。解决思路

为提高数据采集的效率,并避免由于数据抽取任务集中导致的数据仓库的服务器性能变差。提供以下解决方案:

一、定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。在检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。

二、数据抽取检测单元,用于定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。数据抽取存储单元,用于在检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。

三、通过在数据仓库检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据,以分别确定从每个数据库服务器抽取数据的触发时间,分散了执行数据抽取任务的时间,避免了由于数据抽取任务集中导致的数据仓库的服务器性能变差,还提高了数据采集的效率。

实施方法及流程下面结合附图及具体实施对本方法进行更加详细与完整的说明。 图1

图1是库房数据采集方法的实现流程图。该实现流程包括:

步骤11:定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发。

用于存储商品的库房分布在全国各地,每个库房都独立部署着相同的WMS 。同一企业的所有库房的数据库服务器均与该企业的数据仓库连接。分散的WMS将库房生产作业过程中产生的数据存储于各自的数据库服务器中,数据仓库通过数据抽取事件将每个数据库服务器中的数据抽取到数据仓库中。

所述定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发,包括:

A、定时检测每个所述数据库服务器中的打卡事件是否被触发。包括:定时检测每个所述数据库服务器中的打卡标识的取值是否为已打卡,若是,确定该数据库服务器的打卡事件被触发。对于每个库房,库房作业人员确定该库房的数据库服务器完成当天的数据更新时,并执行打卡操作,该库房的数据库服务器依据打卡操作将打卡标识的取值设置为已打卡,即通过打卡操作能够确定库房的生产作业的结束时间,从而确定数据库服务器对应的数据抽取事件的触发时间。

B、在当前时间晚于预设的时间阈值时,确定该数据库服务器中的数据抽取事件被触发。例如,所述时间阀值晚于当天的24点。

步骤12:在检测到任一数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。其中,每个数据库服务器包括至少一张表格,以存储数据库服务器所属库房的生产数据。在数据仓库检测到任一数据库服务器中的数据抽取事件被触发时,抽取该数据库服务器中每张表格的数据。在检测到抽取并存储每个所述数据库服务器中的数据时,将每个数据库服务器中的相同表格的数据合并到一个表格中。数据仓库可以通过检测数据仓库缓冲层抽取到的表格的数量,来确定是否完成对每个数据库服务器的数据抽取。以M个数据库服务器,每个数据库服务器中有N张表格为例,在数据仓库抽取到的表格数量是M*N时,确定完成了对每个数据库服务器的数据抽取。

图2 图3图2和图3均是实现流程图。结合图2和图3,所述数据仓库的数据采集方法包括: 步骤21:数据仓库中的任务调度单元创建数据抽取任务。仍然以数据仓库与M个库房对应的数据库服务器连接为例,任务调度单元创建M个任务,每个任务用于抽取一个数据库服务器中的N张表格的数据。 步骤22:设置时间阀值。在任务调度单元创建的任务,设置时间阀值(即最晚抽取时间),截止到时间阀值还没有被抽取的数据库服务器,会在时间阀值开始执行对该数据库服务器的数据抽取任务。 步骤23:对于任一库房,在该库房的作业人员执行打卡操作时,该库房对应的数据库服务器将打卡标识的取值设置为已打卡。 步骤24:数据仓库中的打卡检查单元定时检测每个所述数据库服务器中的打卡标识的取值是否为已打卡。打卡检查单元定时检查每个数据库服务器中打卡标识的取值,在任一数据库服务器的打卡标识的取值为已打卡时,确定当天该数据库服务器对应的库房已打卡。 步骤25:任务调度单元根据打卡检查单元的打卡检查结果,触发预设的数据抽取任务。在打卡检查单元检查到任一库房已打卡时,打卡检测单元实时通知任务调度单元,触发对该库房对应的数据库服务器的数据抽取任务;如果检测到任一库房未打卡,则不触发对该库房对应的数据库服务器的数据抽取任务。 步骤26:在当前时间晚于预设的时间阈值时,触发对所有未打卡库房对应的数据库服务器的数据抽取任务。任务调度单元中的数据抽取任务,判断当前时间是否到达预先设置的时间阀值,如果已达到时间阀值并且任一任务当天未执行过,则执行该数据抽取任务,确保所有数据抽取任务在当天都执行成功,保证数据抽取的完整性。 步骤27:在检测到抽取并存储每个所述数据库服务器中的数据时,将每个所述数据库服务器中的相同表格的数据合并到一个表格中。

在各地库房的数据被任务调度单元抽取到数据仓库的缓冲层之后,库房数据完整性检查与合并单元检查抽取到的数据仓库缓冲层中的库房数量是否等于创建的任务个数M,若是则执行不同库房相同表格的合并,最终只保留N张表;若缓冲层中库房数量小于创建的任务个数M,则表示有库房未抽取到数据仓库,那么重复步骤24-步骤27,直至所有库房的数据都被抽取、合并为止。


这种数据采集方法,可获取每个库房生产结束的时间,即将库房的打卡时间作为库房对应的数据库服务器中的数据停止更新时间,以库房为单位的数据抽取,有效解决了数据抽取的时效性和数据仓库服务器资源均衡问题,还具有高容灾能力,避免了断网断电等意外情况导致的24点之后库房数据采集失败的情况。 图4图4是数据采集装置的结构示意图,该装置可以内置在数据仓库内部。如图4所示,所述数据仓库的数据采集装置包括数据抽取检测单元31和数据抽取存储单元32。其中,数据抽取检测单元31用于定时检测与数据仓库连接的至少一个数据库服务器中预设的数据抽取事件是否被触发;数据抽取存储单元32用于在检测到任一所述数据库服务器中的数据抽取事件被触发时,抽取并存储该数据库服务器中的数据。
本方法通过数据抽取检测单元定时检测数据抽取事件被触发的数据库服务器,并通过数据抽取存储单元抽取上述数据库服务器中的数据,避免了由于数据抽取任务集中导致的数据仓库的服务器性能变差,还提高了数据采集的效率。
图5

如图5所示,该系统可以包括库房打卡单元、数据库服务器、打卡检查单、任务调度单元、数据仓库和库房数据完整性检查与表合并单元。其中库房打卡单元可以配置在数据库服务器中,打卡检查单元,任务调度单元和库房数据完整性检查与表合并单元可以配置在数据仓库中。

库房每天的生产作业结束之后,库房工作人员通过库房打卡单元执行打卡操作,意味着该库房的工作已经完成,库房数据不会再发生变化,同时该库房对应的数据库服务器会记录下来当天是否打卡的标识。打卡检查单元用于检查库房数据库中,当天是否记录已打卡的标识,并实时通知任务调度系统,来触发调度任务系统执行打卡库房数据库的抽取操作。任务调度单元用于执行数据的抽取,把库房数据库中的数据采集到数据仓库中。如果任一库房接收到已打卡的信号后,会触发任务调度单元执行对该库房的数据抽取任务,以把该库房对应的数据库服务器中所有表格的数据抽取到数据仓库;如果任一库房未打卡,则该库房对应的数据库服务器不会记录打卡标识,则不触发对该库房数据的抽取。同时抽取任务会设置一个最晚抽取时间(在24点之后),到达最晚时间依然没有获取到对应库房的打卡标识,则会触发抽取任务,通过任务调度单元触发未打卡库房对应的数据抽取任务。

库房数据完整性检查与表合并单元用于检查是否所有的库房数据库中的数据,都成功抽取到数据仓库中;若是,则把不同库房相同表结构的数据合并到一张表格里;若否,则重复数据抽取过程,直到所有数据库服务器的数据均被采集为止。


在分布式数据库服务器的数据采集方案中,以库房打卡作业机制触发数据抽取;触发抽取与定时抽取的结合,保障了分布式数据采集的完整性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值