一种数据批量提交到数据库的方法和装置制造方法

文档序号:6515668阅读:182来源:国知局
一种数据批量提交到数据库的方法和装置制造方法
【专利摘要】本发明公开了一种数据批量提交到数据库的方法和装置,所述方法包括:数据提交器在检测到数据缓存队列中缓存的数据条数超过设定阈值后,将数据全部提取出来并为每条数据生成一条与之对应的SQL数据插入语句;之后,按各条数据的主键的大小顺序,将SQL数据插入语句依次写入到一个事务中向中间件提交;中间件将该事务中的每条SQL数据插入语句转换为相应的数据库命令发送至数据库,若接收到数据库返回的异常的执行结果向数据提交器上报;数据提交器根据上报的异常的执行结果,确定出错误数据的主键;将主键在错误数据的主键之后的数据再次存入到数据缓存队列中。应用本发明,可以避免正确数据被丢弃,并提高数据批量入库的效率。
【专利说明】一种数据批量提交到数据库的方法和装置
【技术领域】
[0001]本发明涉及数据库存储技术,尤其涉及一种一种数据批量提交到数据库的方法和
>J-U装直。
【背景技术】
[0002]目前,诸如 0A(0ff ice Automation,办公自动化系统)、ERP(Enterprise ResourcePlanning,企业资源计划)、CRM(Customer Relationship Management,客户关系管理系统)、日志解析系统等大型业务应用系统均需要通过数据库来存储其中的海量业务数据。一般而言,可以将数据逐条提交的数据库中,也就是数据源端每生成一条业务数据,中间件便将该数据提交到数据库;但是,由于一次只能向数据库提交一条数据,而系统中海量数据需要入库,导致提交的过程需要频繁地和数据库进行交互,占用大量的数据库资源,并且,提交数据速度慢。
[0003]基于上述原因,现有技术中普遍采用数据批量提交数据库的方法,具体地,当缓存中数据达到100条时,数据提交器将数据从将缓存中提取出来,为每条数据生成对应的SQL(Structured Query Language,结构化查询语言)数据插入语句并将其写入一个完整的事务中,中间件将事务中的SQL数据插入语句转换为相应的数据库命令发送至数据库。
[0004]然而,现有的数据批量提交数据库的方法中,如果批量提交的数据中有一条数据出错,会导致批量提交的数据全部回滚;回滚后,由于现有技术无法区分批量提交的数据中的错误数据和正确数据,所以,要么将错误数据连同正确数据一并舍弃以保证错误数据被剔除,这将导致部分正确数据被丢弃而无法入库;要么将回滚后的数据采用逐条提交的方式提交到数据库以保证正确数据成功入库,然而逐条提交数据的方式会导致数据入库效率低。
[0005]因此,有必要提供一种数据批量提交到数据库的方法和装置,既避免正确数据被丢弃,并提闻数据入库效率。

【发明内容】

[0006]本发明实施例提供了一种数据批量提交到数据库的方法和装置,既避免正确数据被丢弃,并提闻数据入库效率。
[0007]根据本发明的一个方面,提供了一种数据批量提交到数据库的方法,包括:
[0008]数据提交器在检测到数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交;
[0009]所述中间件对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;所述数据库根据接收的数据库命令执行相应操作,并向所述中间件返回执行结果;[0010]所述中间件在接收到异常的执行结果后向所述数据提交器上报;
[0011]所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中;
[0012]其中,所述数据缓存队列中的每条数据是由数据接收模块缓存的:所述数据接收模块每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中,之后,将该条数据存入到所述数据缓存队列中。
[0013]其中,所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为:
[0014]所述数据提交器接收到所述中间件上报的异常的执行结果后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键;或者
[0015]所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为:
[0016]所述数据提交器接收到所述中间件上报的异常的执行结果后,向所述中间件发送获取成功数据主键的命令;
[0017]所述中间件接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回;
[0018]所述数据提交器根据所述各条数据的主键的大小顺序,以及返回的主键,确定出错误数据的主键。
[0019]其中,所述为该条数据生成一个唯一的编号,具体为:
[0020]所述数据接收模块根据接收该条数据的当前时间,生成该条数据的编号。
[0021]所述将该条数据存入到数据缓存队列中,具体为:
[0022]所述数据接收模块将该条数据存入到数据缓存队列的队尾中;以及
[0023]所述从所述数据缓存队列中提取出N条数据,具体为:
[0024]所述数据提交器从所述数据缓存队列的队头提取出N条数据。
[0025]其中,所述按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交,具体为:
[0026]所述数据提交器按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交;以及
[0027]所述将主键在所述错误数据的主键之后的数据再次存入到数据缓存队列中,具体为:
[0028]所述数据提交器将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
[0029]根据本发明的另一个方面,还提供了一种数据批量提交到数据库的装置,包括:
[0030]数据接收模块,用于每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中;之后,将该条数据存入到数据缓存队列中;
[0031]数据提交器,用于在检测到所述数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务进行提交;[0032]中间件,用于接收到所述数据提交器提交的事务后,对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;并在接收到异常的执行结果后向所述数据提交器上报;
[0033]所述数据提交器还用于接收到上报的异常的执行结果后,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中。
[0034]较佳地,所述数据接收模块具体包括:
[0035]主键添加单元,用于每接收到由数据源端发送的一条数据时,根据接收该条数据的当前时间,生成该条数据的编号,作为该条数据的主键添加到该条数据中;
[0036]数据缓存单元,用于将添加了主键的数据存入到所述数据缓存队列的队尾。
[0037]较佳地,所述数据提交器具体包括:
[0038]数据提取单元,用于每隔设定时间段检测所述数据缓存队列中缓存的数据的条数;若检测到所述数据缓存队列中缓存的数据条数超过设定阈值N,则从所述数据缓存队列的队头提取出N条数据;
[0039]事务提交单元,用于将所述数据提取单元提取的N条数据,按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向所述中间件提交;并在接收到所述中间件上报的异常的执行结果后,发送错误数据处理通知;
[0040]错误数据主键确定单元,用于接收到所述错误数据处理通知后,根据所述事务提交单元接收的异常的执行结果,确定出错误数据的主键后发送处理通知;
[0041 ] 处理单元,用于接收到所述处理通知后,将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
[0042]较佳地,所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键。
[0043]较佳地,所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,向所述中间件发送获取成功数据主键的命令;以及根据所述各条数据的主键的大小顺序,以及所述中间件返回的主键,确定出错误数据的主键;以及
[0044]所述中间件还用于接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回。
[0045]本发明实施例的技术方案中,由数据提交器为每条数据生成唯一的编号,作为该条数据的主键,当数据库返回异常的执行结果时,数据提交器向中间件发送获取成功数据主键的命令,随后根据中间件返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键,也可以根据异常的执行结果中携带的错误数据的主键,直接确定出错误数据的主键,这样,将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
【专利附图】

【附图说明】
[0046]图1为本发明实施例的提供的数据批量提交到数据库的装置的结构示意图;
[0047]图2为本发明实施例的提供的数据批量提交到数据库的方法的流程示意图;[0048]图3为本发明实施例的提供的数据提交器确定错误数据的主键的方法的流程示意图;
[0049]图4为本发明实施例的提供的数据接收模块的内部结构框图;
[0050]图5为本发明实施例的提供的数据提交器的内部结构框图。
【具体实施方式】
[0051]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
[0052]本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
[0053]本发明的发明人考虑到,在接收由数据源端生成的每条数据时,根据接收该条数据的当前时间为该条数据生成一个唯一的编号,将其作为该条数据的主键添加到该条数据中,并将数据按照主键的由小到大的顺序排列存储在缓存中,在后续将数据批量提交到数据库的过程中,如果数据库返回异常的执行结果,可以根据已经成功入库的数据主键,和各条数据的主键的大小顺序迅速确定出错误数据的主键,或者直接从异常的执行结果中解析出错误数据的主键,这样,可以将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
[0054]下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的数据批量提交到数据库的装置如图1所示,包括:数据接收模块101、数据提交器102、中间件103 ;其中,
[0055]数据接收模块101每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,并将其作为该条数据的主键添加到该条数据中;之后,将该条数据存入到数据缓存队列的队尾;
[0056]事实上,数据接收模块101每接收到由数据源端发送的一条数据时,可以根据getUTCDateO函数来获取接收该条数据时的用世界标准时间表示的月份;getUTCFullYearO函数来获取接收该条数据时的用世界标准时间表示的四位年份;getUTCHours 0函数来获取接收该条数据时的用世界标准时间表示的小时数;getUTCMinutes ()函数来获取接收该条数据时的用世界标准时间表示的分钟数;getUTCMonthO函数来获取接收该条数据时的用世界标准时间表示的月份数;getUTCSeconds ()函数来获取接收该条数据时的用世界标准时间表示的秒数;例如,接收其中一条数据的时间为北京时间2013年10月5号15点20分0秒,数据接收模块101则将获取的当前时间20131005T15200008作为条该数据的编号,并将该编号作为该条数据的主键存储在该条数据中;
[0057]数据接收模块101也可以根据接收该条数据时,数据缓存队列中缓存的数据的条数,将条数增I作为该条数据的唯一的编号,例如数据接收模块101接收一条数据时,数据缓存队列中缓存的数据的条数为18,那么将19作为该数据的唯一的编号。
[0058]具体地,关于数据提交器102和中间件103的功能详见本发明实施例提供的数据提交器102将数据批量提交到数据库的方法流程中的描述,该流程如图2所示,包括如下步骤:
[0059]S201:数据提交器102从数据缓存列队中提取N条数据,并将对应生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;
[0060]本步骤中,数据提交器102在检测到数据缓存队列中缓存的数据条数超过设定阈值N后,从数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件102提交。
[0061]其中,数据提交器102每隔设定检测时间便对数据缓存队列中缓存的数据条数进行检测;若检测缓存的数据条数超过设定阈值N,则从数据缓存队列中提取出N条数据,并将对应生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;若检测缓存的数据条数没有超过设定阈值N,则数据提交器102休眠设定时间段;在休眠设定时间段后数据提交器102再次对数据缓存队列中缓存的数据条数进行检测判断检测缓存的数据条数是否达到N条。上述的数据缓存队列的阈值、检测时间,以及休眠的设定时间段可以由本领域技术人员根据实际情况设定,例如依据数据源端在一段时间内产生的数据量进行设定。
[0062]S202:中间件103对于事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库。
[0063]S203:数据库根据接收的数据库命令执行相应操作,并向中间件103返回执行结果。
[0064]本步骤中,数据库根据接收的每条数据的数据库命令执行将该条数据入库的操作;
[0065]若此次批量提交的数据中不存在错误数据,数据库可以根据接收的数据库命令将此次批量提交的所有数据成功入库,并向中间件103返回数据提交成功的执行结果;
[0066]若此次批量提交的数据中存在错误数据,当数据库执行该条数据的数据库命令时会发生错误,导致入库操作失败,随即数据库停止对接收到的此次批量提交的在该条数据的数据库命令之后的所有数据的数据库命令的执行动作,并向中间件103返回异常的执行结果。
[0067]其中,数据库向中间件103返回的异常的执行结果中携带有错误数据的主键。
[0068]S204:若中间件103接收到数据库返回的异常的执行结果,将该结果向数据提交器102上报。
[0069]S205:数据提交器102根据上报的异常的执行结果确定出错误数据的主键。
[0070]具体地,数据提交器102根据上报的异常的执行结果确定出错误数据的主键可以米用两种方式:[0071]方式一,中间件103上报的异常的执行结果中携带有错误数据的主键,数据提交器102接收到上报的异常的执行结果后,可以对该结果进行解析,将从中解析出的主键,确认为错误数据的主键;
[0072]方式二,中间件103上报的异常的执行结果中没有携带主键信息,数据提交器102接收到上报的异常的执行结果后,向中间件103发送获取成功数据主键的命令,随后接收中间件103返回的主键;根据中间件103返回的主键,以及各条数据的主键的大小顺序,确定出主键顺序位于返回的最大主键之后的数据为错误数据;关于方式二中,数据提交器102确定出错误数据的主键的具体方法流程详见后续对图3的描述。
[0073]S206:数据提交器102在确定出错误数据的主键后,将主键顺序位于错误数据的主键之后的数据再次存入到数据缓存队列中。
[0074]本步骤中,数据提交器102在确定出错误数据的主键后,将此次批量提交的数据中主键在错误数据的主键之后的所有数据,按照主键的大小顺序依次存入到数据缓存队列的队尾;同时,数据提交器102继续接收由数据源端发送数据,为接收的每条数据设置主键添加到该条数据中后,也将其存入到数据缓存队列的队尾中。
[0075]这样批量提交的错误数据之前的、已经成功提交的正确数据则不必再重复提交;本次批量提交的错误数据之后的、没有成功提交的正确数据可以重新存入到数据缓存队列中,在后续的批量提交中被再次提交,而不必采用逐条提交的方式。这样,提高了数据批量入库的效率。
[0076]上述S205中,数据提交器102通过方式二确定错误数据的主键的方法流程如图3所示,包括如下步骤:
[0077]S301:数据提交器102接收到上报的异常的执行结果后,向中间件103发送获取成功数据主键的命令。
[0078]S302:中间件103接收到命令后,向数据库依次发送各条数据的主键查询命令。
[0079]S303:数据库跟根据收到的各条数据的主键查询命令执行操作,并将查询到的数据的主键,向中间件103返回。
[0080]本步骤中,数据库跟根据收到的各条数据的主键查询命令执行操作,对于每条待查询的数据,若该数据已成功入库,数据库便查询到该条数据,并将该条数据的主键向中间件103返回。
[0081]S304:中间件103将接收到的主键向数据提交器102返回。
[0082]S305:数据提交器102根据返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键。
[0083]本步骤中,数据提交器102根据中间件103返回的成功数据的主键,以及各条数据的主键的大小顺序,确定出主键顺序位于返回的最大主键之后的数据为错误数据。
[0084]本发明实施例提供的数据接收模块的内部结构框图如图4所示。包括:主键添加单元401、数据缓存单元402 ;其中,
[0085]主键添加单元401每接收到由数据源端发送的一条数据时,根据接收该条数据的当前时间,生成该条数据的编号,作为该条数据的主键添加到该条数据中;
[0086]数据缓存单元402将添加了主键的数据存入到数据缓存队列的队尾。
[0087]本发明实施例提供的数据提交器的内部结构框图如图5所示。包括:数据提取单元501、事务提交单元502、错误数据主键确定单元503、处理单元504 ;其中,
[0088]数据提取单元501每隔设定时间段检测数据缓存队列中缓存的数据的条数;若检测到数据缓存队列中缓存的数据条数超过设定阈值N,则从数据缓存队列的队头提取出N条数据;若检测到数据缓存队列中缓存的数据条数没有超过设定阈值N,则休眠设定时间段;在休眠设定时间段后,再次对数据缓存队列中缓存的数据条数进行检测;
[0089]事务提交单元502将数据提取单元501提取的N条数据,按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;并在接收到中间件103上报的异常的执行结果后,发送错误数据处理通知;
[0090]错误数据主键确定单元503接收到错误数据处理通知后,根据事务提交单元502接收的异常的执行结果,确定出错误数据的主键后发送处理通知;
[0091]具体地,错误数据主键确定单元403接收到错误数据处理通知后,从异常的执行结果中解析出其携带的主键,作为错误数据的主键;或者向中间件103发送获取成功数据主键的命令;以及根据各条数据的主键的大小顺序,以及中间件103返回的主键,确定出错误数据的主键;
[0092]相应地,中间件103接收到获取成功数据主键的命令后,向数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向数据提交器102返回;
[0093]处理单元504接收到处理通知后,将提取出的N条数据中,主键大于错误数据的主键的数据再次存入到数据缓存队列的队尾。
[0094]本发明实施例的技术方案中,由数据提交器为每条数据生成唯一的编号,作为该条数据的主键,当数据库返回异常的执行结果时,数据提交器向中间件发送获取成功数据主键的命令,随后根据中间件返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键,也可以根据异常的执行结果中携带的错误数据的主键,直接确定出错误数据的主键,这样,将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
[0095]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:R0M/RAM、磁碟、光盘等。
[0096]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种数据批量提交到数据库的装置,其特征在于, 包括: 数据接收模块,用于每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中;之后,将该条数据存入到数据缓存队列中; 数据提交器,用于在检测到所述数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务进行提交; 中间件,用于接收到所述数据提交器提交的事务后,对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;并在接收到异常的执行结果后向所述数据提交器上报; 所述数据提交器还用于接收到上报的异常的执行结果后,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中。
2.如权利要求1所述的装置,其特征在于,所述数据接收模块具体包括: 主键添加单元,用于每接收到由数据源端发送的一条数据时,根据接收该条数据的当前时间,生成该条数据的编号,作为该条数据的主键添加到该条数据中; 数据缓存单元,用于将添加了主键的数据存入到所述数据缓存队列的队尾。
3.如权利要求2所述的装置,其特征在于,数据提交器具体包括: 数据提取单元,用于每隔设定时间段检测所述数据缓存队列中缓存的数据的条数;若检测到所述数据缓存队列中缓存的数据条数超过设定阈值N,则从所述数据缓存队列的队头提取出N条数据; 事务提交单元,用于将所述数据提取单元提取的N条数据,按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向所述中间件提交;并在接收到所述中间件上报的异常的执行结果后,发送错误数据处理通知; 错误数据主键确定单元,用于接收到所述错误数据处理通知后,根据所述事务提交单元接收的异常的执行结果,确定出错误数据的主键后发送处理通知; 处理单元,用于接收到所述处理通知后,将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
4.如权利要求3所述的装置,其特征在于, 所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键。
5.如权利要求4所述的装置,其特征在于, 所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,向所述中间件发送获取成功数据主键的命令;以及根据所述各条数据的主键的大小顺序,以及所述中间件返回的主键,确定出错误数据的主键;以及 所述中间件还用于接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回。
6.一种数据批量提交到数据库的方法,其特征在于,包括: 数据提交器在检测到数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交; 所述中间件对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;所述数据库根据接收的数据库命令执行相应操作,并向所述中间件返回执行结果; 所述中间件在接收到异常的执行结果后向所述数据提交器上报; 所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中; 其中,所述数据缓存队列中的每条数据是由数据接收模块缓存的:所述数据接收模块每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中,之后,将该条数据存入到所述数据缓存队列中。
7.如权利要求6所述的方法,其特征在于,所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为: 所述数据提交器接收到所述中间件上报的异常的执行结果后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键;或者 所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为: 所述数据提交器接收到所述中间件上报的异常的执行结果后,向所述中间件发送获取成功数据主键的命令; 所述中间件接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回; 所述数据提交器根据所述各条数据的主键的大小顺序,以及返回的主键,确定出错误数据的主键。
8.如权利要求6所述的方法,其特征在于,所述为该条数据生成一个唯一的编号,具体为: 所述数据接收模块根据接收该条数据的当前时间,生成该条数据的编号。
9.如权利要求8所述的方法,其特征在于,所述将该条数据存入到数据缓存队列中,具体为: 所述数据接收模块将该条数据存入到数据缓存队列的队尾中;以及 所述从所述数据缓存队列中提取出N条数据,具体为: 所述数据提交器从所述数据缓存队列的队头提取出N条数据。
10.如权利要求9所述的方法,其特征在于,所述按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交,具体为: 所述数据提交器按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交;以及 所述将主键在所述错误数据的主键之后的数据再次存入到数据缓存队列中,具体为:所述数据提交器将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
【文档编号】G06F17/30GK103577551SQ201310486335
【公开日】2014年2月12日 申请日期:2013年10月16日 优先权日:2013年10月16日
【发明者】田玉祺 申请人:青岛海信传媒网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1