一种业务数据同步方法及设备与流程

文档序号:11155059阅读:582来源:国知局
一种业务数据同步方法及设备与制造工艺
本发明涉及通信
技术领域
,特别涉及一种业务数据同步方法。本发明同时还涉及一种数据同步设备。
背景技术
:随着网络技术的不断发展,数据库已经在信息
技术领域
有了广泛的应用。在社会生活的各个部门几乎都有各种各样的数据库保存着与人们的生活息息相关的各种数据。为了对数据库进行统一的管理以提供更好的服务,数据仓库应运而生。数据仓库是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策(DecisionMakingSupport),出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,在使用数据仓库的过程中必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。在目前的工作中,数据仓库经常需要同步一些系统的日切数据,即将源系统日切之后到数据同步到数据仓库。现有技术中的数据仓库数据同步工作一般事先由数据仓库的接口人员与业务系统的接口人员口头约定好,日切大约什么时间完成,仓库在这个约定的完成时间之后的某一时间去同步日切数据,即数据仓库定时同步日切数据。然而,本申请发明人在实现本发明的过程中发现,从源系统同步的日切数据是否正确,取决于数据仓库同步日切数据之前,源系统日切是否已经结 束。例如,当由于一些特殊的原因(例如业务促销等)而导致某一天需要同步的数据量特别大时,由于源系统日切这一动作耗费的时间会大大增加,导致系统可能无法及时地完成数据同步。这样日切的完成时间与往常相比将会大幅度延时;或者日切程序出现异常发生错误或是崩溃时,将会导致日切延迟或者失败。当出现这些列举的特定情况时,同步到数据仓库的日切数据将会产生异常,从而影响数据仓库的数据使用。由此可见,如何针对数据仓库检测源系统日切数据是否就绪,从而确认所同步到仓库的日切数据是否可用,成为本领域技术人员亟待解决的技术问题。技术实现要素:本发明提供了一种业务数据同步方法,旨在解决现有技术中由于业务系统的数据处理任务失败而导致所同步至数据仓库中的数据不准确的问题,保证数据仓库中同步的数据准确可用。该方法应用于包括业务系统以及数据仓库的同步系统中,包括:当到达预设的同步周期时,获取所述业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息;根据所述状态信息判断所述数据处理任务是否完成;当根据所述状态信息确认所述数据处理任务已完成时,将所述业务系统在完成所述数据处理任务后生成的数据同步至所述数据仓库。优选地,当根据所述状态信息判断所述数据同步任务未完成时,在预设的时间间隔后重新获取所述业务系统中的所述数据处理任务的状态信息,并根据重新获取的状态信息判断所述数据处理任务是否完成。优选地,所述同步系统中预设数据处理任务状态表,所述数据处理任务状态表包含所述业务系统当前所有数据处理任务的状态信息与所述业务系统 的标识之间的对应关系,获取所述业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息,具体为:在所述数据处理任务状态表中查询当前与所述业务系统的标识对应的所有数据处理任务的状态信息,所述状态信息包括所述数据处理任务的完成时间;根据各所述数据处理任务的状态信息中的完成时间确定距离当前时刻在预设时间范围内的数据处理任务,并获取与所述数据处理任务对应的状态信息。优选地,所述状态信息还包括与所述数据处理任务的完成时间对应的完成标识;根据所述状态信息判断所述数据处理任务是否完成,具体为:读取所述状态信息中完成标识的状态;若所述完成标识的状态为是,则确认所述数据处理任务完成;若所述完成标识的状态为否,则确认所述数据处理任务未完成。优选地,在获取所述业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息之前,还包括:获取所述业务系统处理结束的数据处理任务的完成时间,以及判断所述数据处理任务是否完成;若所述数据处理任务未完成,生成状态为否的完成标识,并将所述完成标识与所述完成时间作为所述状态信息;若所述数据处理任务完成,生成状态为是的完成标识,并将所述完成标识与所述完成时间作为所述状态信息。优选地,在获取所述业务系统处理结束的数据处理任务的完成时间以及判断所述数据处理任务是否完成之前,还包括:创建与所述业务系统对应的数据处理任务状态表,所述同步任务状态表 包括所述业务系统的标识与所述状态信息之间的对应关系。相应地,本发明还提出了一种业务数据同步设备,应用于包括业务系统以及数据仓库的同步系统中,包括:获取模块,在当到达预设的同步周期时,获取所述业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息;判断模块,根据所述状态信息判断所述数据处理任务是否完成;同步模块,在所述判断模块根据所述状态信息确认所述数据处理任务已完成时将所述业务系统在完成所述数据处理任务后生成的数据同步至所述数据仓库。优选地,还包括重获取模块,在所述判断模块根据所述状态信息判断所述数据同步任务未完成时,在预设的时间间隔后重新获取所述业务系统中的所述数据处理任务的状态信息,并根据重新获取的状态信息判断所述数据处理任务是否完成。优选地,所述同步系统中预设数据处理任务状态表,所述数据处理任务状态表包含所述业务系统当前所有数据处理任务的状态信息与所述业务系统的标识之间的对应关系,所述获取模块具体用于:在所述数据处理任务状态表中查询当前与所述业务系统的标识对应的所有数据处理任务的状态信息;根据各所述数据处理任务的状态信息中的完成时间确定距离当前时刻在预设时间范围内的数据处理任务,并获取与所述数据处理任务对应的状态信息;所述状态信息包括所述数据处理任务的完成时间。优选地,所述状态信息还包括与所述数据处理任务的完成时间对应的完成标识;所述判断模块具体用于读取所述状态信息中完成标识的状态;若所述完成标识的状态为是,所述判断模块确认所述数据处理任务完成;若所述完成标识的状态为否,所述判断模块确认所述数据处理任务未完成。优选地,还包括:生成模块,获取所述业务系统处理结束的数据处理任务的完成时间,以及判断所述数据处理任务是否完成;若所述数据处理任务未完成,所述生成模块生成状态为否的完成标识,并将所述完成标识与所述完成时间作为所述状态信息;若所述数据处理任务完成,所述生成模块生成状态为是的完成标识,并将所述完成标识与所述完成时间作为所述状态信息。优选地,还包括:创建模块,创建与所述业务系统对应的数据处理任务状态表,所述同步任务状态表包括所述业务系统的标识与所述状态信息之间的对应关系。由此可见,通过应用本发明的技术方案,通过在到达预设的同步周期时获取业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息,并根据状态信息判断数据处理任务是否完成,在确认数据处理任务已完成后才将业务系统在完成数据处理任务后生成的数据同步至数据仓库。从而保证数据仓库中所同步的由业务系统处理的数据准确可用,保障了数据同步的及时性。附图说明图1为本发明提出的一种业务数据同步方法的流程示意图。图2为本发明提出的一种数据同步设备的结构示意图具体实施方式目前,数据仓库所同步的业务系统数据以及业务系统的数据主要为交易数据所衍生的其他数据。交易数据随着交易产生而生成,而这部分其他数据则是在产生交易数据之后额外加工得到的。举例来说,交易系统会记录每一笔交易,账户系统会记录每一笔账,当一个账户一天发生多笔账务,这个账户当天结束时的账户余额即为该账户的交易数据所衍生出的其他数据。账户发生时间发生金额A2015-01-2309:00:004A2015-01-2311:40:0015.5A2015-01-2312:10:00150A2015-01-2323:59:00-130表1某一账户于2015年01月23日发生的金额变动汇总如上表1所示,为某一账户于2015年01月23日发生的金额变动汇总,当需要知道该账户这一天的“流入金额、流出金额、流入笔数、流出笔数、当日末余额”这些指标时,就需要对上面的数据进行一些加工,而基于一些时效性要求,这部分计算没有放到数据仓库来处理,而是在业务数据产生后由业务系统处理。业务系统对上述产生的数据进行加工的这个过程称之为“日切”,把依赖于日切动作产生的数据表称之为“日切表”。现有的日切表与数据仓库之间进行同步时存在时间上的特殊性,数据仓库同步数据一般都是定时任务,如过了凌晨0点就可以同步上一天及以前的数据,这是因为这些数据都是系统产生的,而非计算的,过了0点数据就无法再进行处理了。举例来说,假设当前有一笔交易在23:59:00创建的,业务系统的数据库里就有了这笔交易数据,而该笔交易对应的日切数据则是基于业务系统产生的数据计算所得,也就是说有一个计算的过程。这个计算过程的保障没有核心系统那么高,而且计算所耗费的时间可能受一些因素的影响,不一定能在短时间内即刻生成,且生成的延后时间有时难以确定,这样即会 导致数据仓库中的数据发生偏差或是错误。有鉴于上述技术问题,本发明提出了一种业务数据同步方法,用以保证数据仓库中从业务系统所同步过来的数据处理任务的相关数据准确可用。如图1所示,该方法应用于包括业务系统以及数据仓库的同步系统中,包括以下步骤:S101,当到达预设的同步周期时,获取所述业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息。由于本申请的主要目的在于保证数据仓库中由业务系统所同步过来的数据准确可靠,而这些同步数据都是由业务系统在运行数据处理任务后所生产的,因此数据处理任务的正确执行与否成为了判断数据是否准确可靠的重要依据。而为了准确记录业务系统各个数据处理任务的状态信息,本申请在同步系统中预设了与数据处理任务对应的状态表,该数据处理任务状态表包含了业务系统当前所有数据处理任务的状态信息与业务系统的标识之间的对应关系。需要说明的是,该数据处理任务状态表进行本申请为记录业务系统中各个数据处理任务执行状态的具体化表现之一,在此基础上本领域技术人员可以通过其他的形式或方法记录数据处理任务的执行状态。在本申请的一个优选实施例中,当进行初始化处理时预先创建与业务系统对应的数据处理任务状态表,该同步任务状态表包括所述业务系统的标识与所述状态信息之间的对应关系。相应地,当需要通过该表获取业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息时,可在所述数据处理任务状态表中查询当前与所述业务系统的标识对应的所有数据处理任务的状态信息,随后根据各所述数据处理任务的状态信息中的完成时间确定距离当前时刻在预设时间范围内的数据处理任务,并获取与所述数据处理任务对应的状态信息。由于状态信息包括数据处理任务的完成时间,因此通过上述步骤可以准确地确 定最近一次的数据处理任务是否顺利完成。其中,业务系统中距离当前时刻在预设时间范围内的数据处理任务,包括:距离当前时刻最近的数据处理任务,或者,距离当前时刻在一定时间范围内的数据处理任务。举个例子,如果业务系统的同步周期是每天的00:30,那么,可以设置预设时间范围是30分钟内,即距离00:30在30分钟内的数据处理任务,包括每天00:00到00:30的数据处理任务。预设时间范围可以根据实际的应用需求进行调整。结合日切表的实际技术问题,本申请的具体实施例在源数据系统(即业务系统)增加一张预设的日切情况表作为数据处理任务状态表(为便于阐述,后续统称为cutoff_status表),相应地,该日切情况表中的日切任务实际上就是上文所提及的数据处理任务。为以减少对业务系统的影响,该cutoff_status表的记录数以及字段被设置的尽可能少,同时也能够在最短(一般是毫秒级别)最不耗资源的情况下将该表同步到数据仓库。无论是日切任务成功或者日切任务失败,都会根据实际的完成时间插入一条记录至cutoff_status表。如下表2所示:日切完成时间系统名完成标志2015-03-0102:03:25AY2015-03-0104:23:56BY2015-03-0202:10:25AY2015-03-0204:25:26BY2015-03-0303:45:38AY2015-03-0305:03:12BN表2上表1中的记录2015-03-0303:45:38AY2015-03-0305:03:12BN表示A系统在2015-03-0303:45:38成功地完成了日切任务;表1中的这条记录2015-03-0303:45:38AY2015-03-0305:03:12BN表示B系统在2015-03-0305:03:12日切任务失败而未完成。此外,需要说明的是,由于现有技术中一个数据仓库可能会对应多个业务系统,因此该数据仓库在接收多个业务系统同步的数据的同时,也会针对多个业务系统的数据处理任务生成一个统一的数据处理任务状态表,或是针对各个业务系统单独生成与之对应的数据处理任务状态表,这些都属于本申请的保护范围。S102,根据所述状态信息判断所述数据处理任务是否完成。为了清楚记录业务系统的各个数据处理任务是否完成,本申请的优选实施例通过标识的形式针对各个数据处理任务进行标记,具体地,该优选实施例在状态信息中设置与所述数据处理任务的完成时间对应的完成标识,在判断数据处理任务是否完成时,读取所述状态信息中完成标识的状态;若所述完成标识的状态为是,则确认所述数据处理任务完成;若所述完成标识的状态为否,则确认所述数据处理任务未完成。以S101的具体实施例继续进行说明,本申请具体实施例通过ETL(Extract-Transform-Load,抽取转换加载)的方式完成上述流程。ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。该具体实施例通过在数据仓库定义一个ETL任务,该ETL任务用于同步业务系统的日切情况表cutoff_status,存储在odps下并命名为ods_cutoff_status。同时在数据仓库定义一个ETL任务,该ETL任务用于在同步完毕后读取表ods_cutoff_status内容,判断当日的日切是否完成。若未完成则等待3分钟(此时间可调整)后重新从第2步重复,若完成,则进入下一步,即启动数据仓 库同步日切数据的ETL任务。S103,当根据所述状态信息确认所述数据处理任务已完成时,将所述业务系统在完成所述数据处理任务后生成的数据同步至所述数据仓库。在当根据所述状态信息判断所述数据同步任务未完成时,在预设的时间间隔后重新获取所述数据处理任务的状态信息,并根据重新获取的状态信息判断所述数据处理任务是否完成。以上方案阐述了如何基于数据处理任务状态表获取状态信息,而在业务系统的每个数据处理任务完成时,也同样需要将其记录至数据处理任务状态表中,在本申请优选的实施例中,该步骤获取所述业务系统处理结束的数据处理任务的完成时间,以及判断所述数据处理任务是否完成;若所述数据处理任务未完成,生成状态为否的完成标识,并将所述完成标识与所述完成时间作为所述状态信息;若所述数据处理任务完成,生成状态为是的完成标识,并将所述完成标识与所述完成时间作为所述状态信息。本申请通过在到达预设的同步周期时获取业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息,并根据状态信息判断数据处理任务是否完成,在确认数据处理任务已完成后才将业务系统在完成数据处理任务后生成的数据同步至数据仓库。从而保证数据仓库中所同步的由业务系统处理的数据准确可用,保障了数据同步的及时性。相应地,本发明还提出了一种业务数据同步设备,应用于包括业务系统以及数据仓库的同步系统中,如图2所示,包括:获取模块210,在当到达预设的同步周期时,获取业务系统中距离当前时刻在预设时间范围内的数据处理任务的状态信息;判断模块220,根据所述状态信息判断所述数据处理任务是否完成;同步模块230,在所述判断模块根据所述状态信息确认所述数据处理任务已完成时将所述业务系统在完成所述数据处理任务后生成的数据同步至所述数据仓库。在具体应用场景下,还包括重获取模块,在所述判断模块根据所述状态信息判断所述数据同步任务未完成时,在预设的时间间隔后重新获取所述业务系统中的所述数据处理任务的状态信息,并根据重新获取的状态信息判断所述数据处理任务是否完成。在具体应用场景下,所述同步系统中预设数据处理任务状态表,所述数据处理任务状态表包含所述业务系统当前所有数据处理任务的状态信息与所述业务系统的标识之间的对应关系,所述获取模块具体用于:在所述数据处理任务状态表中查询当前与所述业务系统的标识对应的所有数据处理任务的状态信息;根据各所述数据处理任务的状态信息中的完成时间确定距离当前时刻在预设时间范围内的数据处理任务,并获取与所述数据处理任务对应的状态信息;所述状态信息包括所述数据处理任务的完成时间。在具体应用场景下,所述状态信息还包括与所述数据处理任务的完成时间对应的完成标识;所述判断模块具体用于读取所述状态信息中完成标识的状态;若所述完成标识的状态为是,所述判断模块确认所述数据处理任务完成;若所述完成标识的状态为否,所述判断模块确认所述数据处理任务未完成。在具体应用场景下,还包括:生成模块,获取所述业务系统处理结束的数据处理任务的完成时间,以及判断所述数据处理任务是否完成;若所述数据处理任务未完成,所述生成模块生成状态为否的完成标识,并将所述完成标识与所述完成时间作为所述状态信息;若所述数据处理任务完成,所述生成模块生成状态为是的完成标识,并将所述完成标识与所述完成时间作为所述状态信息。在具体应用场景下,还包括:创建模块,创建与所述业务系统对应的数据处理任务状态表,所述同步任务状态表包括所述业务系统的标识与所述状态信息之间的对应关系。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1