CN103577551A - 一种数据批量提交到数据库的方法和装置 - Google Patents
一种数据批量提交到数据库的方法和装置 Download PDFInfo
- Publication number
- CN103577551A CN103577551A CN201310486335.4A CN201310486335A CN103577551A CN 103577551 A CN103577551 A CN 103577551A CN 201310486335 A CN201310486335 A CN 201310486335A CN 103577551 A CN103577551 A CN 103577551A
- Authority
- CN
- China
- Prior art keywords
- data
- major key
- misdata
- buffer storage
- presenter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据批量提交到数据库的方法和装置,所述方法包括:数据提交器在检测到数据缓存队列中缓存的数据条数超过设定阈值后,将数据全部提取出来并为每条数据生成一条与之对应的SQL数据插入语句;之后,按各条数据的主键的大小顺序,将SQL数据插入语句依次写入到一个事务中向中间件提交;中间件将该事务中的每条SQL数据插入语句转换为相应的数据库命令发送至数据库,若接收到数据库返回的异常的执行结果向数据提交器上报;数据提交器根据上报的异常的执行结果,确定出错误数据的主键;将主键在错误数据的主键之后的数据再次存入到数据缓存队列中。应用本发明,可以避免正确数据被丢弃,并提高数据批量入库的效率。
Description
技术领域
本发明涉及数据库存储技术,尤其涉及一种一种数据批量提交到数据库的方法和装置。
背景技术
目前,诸如OA(Office Automation,办公自动化系统)、ERP(EnterpriseResource Planning,企业资源计划)、CRM(Customer Relationship Management,客户关系管理系统)、日志解析系统等大型业务应用系统均需要通过数据库来存储其中的海量业务数据。一般而言,可以将数据逐条提交的数据库中,也就是数据源端每生成一条业务数据,中间件便将该数据提交到数据库;但是,由于一次只能向数据库提交一条数据,而系统中海量数据需要入库,导致提交的过程需要频繁地和数据库进行交互,占用大量的数据库资源,并且,提交数据速度慢。
基于上述原因,现有技术中普遍采用数据批量提交数据库的方法,具体地,当缓存中数据达到100条时,数据提交器将数据从将缓存中提取出来,为每条数据生成对应的SQL(Structured Query Language,结构化查询语言)数据插入语句并将其写入一个完整的事务中,中间件将事务中的SQL数据插入语句转换为相应的数据库命令发送至数据库。
然而,现有的数据批量提交数据库的方法中,如果批量提交的数据中有一条数据出错,会导致批量提交的数据全部回滚;回滚后,由于现有技术无法区分批量提交的数据中的错误数据和正确数据,所以,要么将错误数据连同正确数据一并舍弃以保证错误数据被剔除,这将导致部分正确数据被丢弃而无法入库;要么将回滚后的数据采用逐条提交的方式提交到数据库以保证正确数据成功入库,然而逐条提交数据的方式会导致数据入库效率低。
因此,有必要提供一种数据批量提交到数据库的方法和装置,既避免正确数据被丢弃,并提高数据入库效率。
发明内容
本发明实施例提供了一种数据批量提交到数据库的方法和装置,既避免正确数据被丢弃,并提高数据入库效率。
根据本发明的一个方面,提供了一种数据批量提交到数据库的方法,包括:
数据提交器在检测到数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交;
所述中间件对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;所述数据库根据接收的数据库命令执行相应操作,并向所述中间件返回执行结果;
所述中间件在接收到异常的执行结果后向所述数据提交器上报;
所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中;
其中,所述数据缓存队列中的每条数据是由数据接收模块缓存的:所述数据接收模块每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中,之后,将该条数据存入到所述数据缓存队列中。
其中,所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为:
所述数据提交器接收到所述中间件上报的异常的执行结果后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键;或者
所述数据提交器根据上报的异常的执行结果,确定出错误数据的主键具体为:
所述数据提交器接收到所述中间件上报的异常的执行结果后,向所述中间件发送获取成功数据主键的命令;
所述中间件接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回;
所述数据提交器根据所述各条数据的主键的大小顺序,以及返回的主键,确定出错误数据的主键。
其中,所述为该条数据生成一个唯一的编号,具体为:
所述数据接收模块根据接收该条数据的当前时间,生成该条数据的编号。
所述将该条数据存入到数据缓存队列中,具体为:
所述数据接收模块将该条数据存入到数据缓存队列的队尾中;以及
所述从所述数据缓存队列中提取出N条数据,具体为:
所述数据提交器从所述数据缓存队列的队头提取出N条数据。
其中,所述按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交,具体为:
所述数据提交器按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件提交;以及
所述将主键在所述错误数据的主键之后的数据再次存入到数据缓存队列中,具体为:
所述数据提交器将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
根据本发明的另一个方面,还提供了一种数据批量提交到数据库的装置,包括:
数据接收模块,用于每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,作为该条数据的主键添加到该条数据中;之后,将该条数据存入到数据缓存队列中;
数据提交器,用于在检测到所述数据缓存队列中缓存的数据条数超过设定阈值N后,从所述数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;之后,按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务进行提交;
中间件,用于接收到所述数据提交器提交的事务后,对于该事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库;并在接收到异常的执行结果后向所述数据提交器上报;
所述数据提交器还用于接收到上报的异常的执行结果后,确定出错误数据的主键;将主键顺序位于所述错误数据的主键之后的数据再次存入到数据缓存队列中。
较佳地,所述数据接收模块具体包括:
主键添加单元,用于每接收到由数据源端发送的一条数据时,根据接收该条数据的当前时间,生成该条数据的编号,作为该条数据的主键添加到该条数据中;
数据缓存单元,用于将添加了主键的数据存入到所述数据缓存队列的队尾。
较佳地,所述数据提交器具体包括:
数据提取单元,用于每隔设定时间段检测所述数据缓存队列中缓存的数据的条数;若检测到所述数据缓存队列中缓存的数据条数超过设定阈值N,则从所述数据缓存队列的队头提取出N条数据;
事务提交单元,用于将所述数据提取单元提取的N条数据,按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向所述中间件提交;并在接收到所述中间件上报的异常的执行结果后,发送错误数据处理通知;
错误数据主键确定单元,用于接收到所述错误数据处理通知后,根据所述事务提交单元接收的异常的执行结果,确定出错误数据的主键后发送处理通知;
处理单元,用于接收到所述处理通知后,将提取出的N条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
较佳地,所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,从所述异常的执行结果中解析出其携带的主键,作为错误数据的主键。
较佳地,所述错误数据主键确定单元具体用于接收到所述错误数据处理通知后,向所述中间件发送获取成功数据主键的命令;以及根据所述各条数据的主键的大小顺序,以及所述中间件返回的主键,确定出错误数据的主键;以及
所述中间件还用于接收到所述命令后,向所述数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向所述数据提交器返回。
本发明实施例的技术方案中,由数据提交器为每条数据生成唯一的编号,作为该条数据的主键,当数据库返回异常的执行结果时,数据提交器向中间件发送获取成功数据主键的命令,随后根据中间件返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键,也可以根据异常的执行结果中携带的错误数据的主键,直接确定出错误数据的主键,这样,将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
附图说明
图1为本发明实施例的提供的数据批量提交到数据库的装置的结构示意图;
图2为本发明实施例的提供的数据批量提交到数据库的方法的流程示意图;
图3为本发明实施例的提供的数据提交器确定错误数据的主键的方法的流程示意图;
图4为本发明实施例的提供的数据接收模块的内部结构框图;
图5为本发明实施例的提供的数据提交器的内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
本发明的发明人考虑到,在接收由数据源端生成的每条数据时,根据接收该条数据的当前时间为该条数据生成一个唯一的编号,将其作为该条数据的主键添加到该条数据中,并将数据按照主键的由小到大的顺序排列存储在缓存中,在后续将数据批量提交到数据库的过程中,如果数据库返回异常的执行结果,可以根据已经成功入库的数据主键,和各条数据的主键的大小顺序迅速确定出错误数据的主键,或者直接从异常的执行结果中解析出错误数据的主键,这样,可以将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的数据批量提交到数据库的装置如图1所示,包括:数据接收模块101、数据提交器102、中间件103;其中,
数据接收模块101每接收到由数据源端发送的一条数据时,为该条数据生成一个唯一的编号,并将其作为该条数据的主键添加到该条数据中;之后,将该条数据存入到数据缓存队列的队尾;
事实上,数据接收模块101每接收到由数据源端发送的一条数据时,可以根据getUTCDate()函数来获取接收该条数据时的用世界标准时间表示的月份;getUTCFullYear()函数来获取接收该条数据时的用世界标准时间表示的四位年份;getUTCHours()函数来获取接收该条数据时的用世界标准时间表示的小时数;getUTCMinutes()函数来获取接收该条数据时的用世界标准时间表示的分钟数;getUTCMonth()函数来获取接收该条数据时的用世界标准时间表示的月份数;getUTCSeconds()函数来获取接收该条数据时的用世界标准时间表示的秒数;例如,接收其中一条数据的时间为北京时间2013年10月5号15点20分0秒,数据接收模块101则将获取的当前时间20131005T15200008作为条该数据的编号,并将该编号作为该条数据的主键存储在该条数据中;
数据接收模块101也可以根据接收该条数据时,数据缓存队列中缓存的数据的条数,将条数增1作为该条数据的唯一的编号,例如数据接收模块101接收一条数据时,数据缓存队列中缓存的数据的条数为18,那么将19作为该数据的唯一的编号。
具体地,关于数据提交器102和中间件103的功能详见本发明实施例提供的数据提交器102将数据批量提交到数据库的方法流程中的描述,该流程如图2所示,包括如下步骤:
S201:数据提交器102从数据缓存列队中提取N条数据,并将对应生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;
本步骤中,数据提交器102在检测到数据缓存队列中缓存的数据条数超过设定阈值N后,从数据缓存队列中提取出N条数据;并对于提取的每条数据,为该条数据生成一条SQL数据插入语句;按各条数据的主键的大小顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件102提交。
其中,数据提交器102每隔设定检测时间便对数据缓存队列中缓存的数据条数进行检测;若检测缓存的数据条数超过设定阈值N,则从数据缓存队列中提取出N条数据,并将对应生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;若检测缓存的数据条数没有超过设定阈值N,则数据提交器102休眠设定时间段;在休眠设定时间段后数据提交器102再次对数据缓存队列中缓存的数据条数进行检测判断检测缓存的数据条数是否达到N条。上述的数据缓存队列的阈值、检测时间,以及休眠的设定时间段可以由本领域技术人员根据实际情况设定,例如依据数据源端在一段时间内产生的数据量进行设定。
S202:中间件103对于事务中的每条SQL数据插入语句,将该SQL数据插入语句转换为相应的数据库命令发送至数据库。
S203:数据库根据接收的数据库命令执行相应操作,并向中间件103返回执行结果。
本步骤中,数据库根据接收的每条数据的数据库命令执行将该条数据入库的操作;
若此次批量提交的数据中不存在错误数据,数据库可以根据接收的数据库命令将此次批量提交的所有数据成功入库,并向中间件103返回数据提交成功的执行结果;
若此次批量提交的数据中存在错误数据,当数据库执行该条数据的数据库命令时会发生错误,导致入库操作失败,随即数据库停止对接收到的此次批量提交的在该条数据的数据库命令之后的所有数据的数据库命令的执行动作,并向中间件103返回异常的执行结果。
其中,数据库向中间件103返回的异常的执行结果中携带有错误数据的主键。
S204:若中间件103接收到数据库返回的异常的执行结果,将该结果向数据提交器102上报。
S205:数据提交器102根据上报的异常的执行结果确定出错误数据的主键。
具体地,数据提交器102根据上报的异常的执行结果确定出错误数据的主键可以采用两种方式:
方式一,中间件103上报的异常的执行结果中携带有错误数据的主键,数据提交器102接收到上报的异常的执行结果后,可以对该结果进行解析,将从中解析出的主键,确认为错误数据的主键;
方式二,中间件103上报的异常的执行结果中没有携带主键信息,数据提交器102接收到上报的异常的执行结果后,向中间件103发送获取成功数据主键的命令,随后接收中间件103返回的主键;根据中间件103返回的主键,以及各条数据的主键的大小顺序,确定出主键顺序位于返回的最大主键之后的数据为错误数据;关于方式二中,数据提交器102确定出错误数据的主键的具体方法流程详见后续对图3的描述。
S206:数据提交器102在确定出错误数据的主键后,将主键顺序位于错误数据的主键之后的数据再次存入到数据缓存队列中。
本步骤中,数据提交器102在确定出错误数据的主键后,将此次批量提交的数据中主键在错误数据的主键之后的所有数据,按照主键的大小顺序依次存入到数据缓存队列的队尾;同时,数据提交器102继续接收由数据源端发送数据,为接收的每条数据设置主键添加到该条数据中后,也将其存入到数据缓存队列的队尾中。
这样批量提交的错误数据之前的、已经成功提交的正确数据则不必再重复提交;本次批量提交的错误数据之后的、没有成功提交的正确数据可以重新存入到数据缓存队列中,在后续的批量提交中被再次提交,而不必采用逐条提交的方式。这样,提高了数据批量入库的效率。
上述S205中,数据提交器102通过方式二确定错误数据的主键的方法流程如图3所示,包括如下步骤:
S301:数据提交器102接收到上报的异常的执行结果后,向中间件103发送获取成功数据主键的命令。
S302:中间件103接收到命令后,向数据库依次发送各条数据的主键查询命令。
S303:数据库跟根据收到的各条数据的主键查询命令执行操作,并将查询到的数据的主键,向中间件103返回。
本步骤中,数据库跟根据收到的各条数据的主键查询命令执行操作,对于每条待查询的数据,若该数据已成功入库,数据库便查询到该条数据,并将该条数据的主键向中间件103返回。
S304:中间件103将接收到的主键向数据提交器102返回。
S305:数据提交器102根据返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键。
本步骤中,数据提交器102根据中间件103返回的成功数据的主键,以及各条数据的主键的大小顺序,确定出主键顺序位于返回的最大主键之后的数据为错误数据。
本发明实施例提供的数据接收模块的内部结构框图如图4所示。包括:主键添加单元401、数据缓存单元402;其中,
主键添加单元401每接收到由数据源端发送的一条数据时,根据接收该条数据的当前时间,生成该条数据的编号,作为该条数据的主键添加到该条数据中;
数据缓存单元402将添加了主键的数据存入到数据缓存队列的队尾。
本发明实施例提供的数据提交器的内部结构框图如图5所示。包括:数据提取单元501、事务提交单元502、错误数据主键确定单元503、处理单元504;其中,
数据提取单元501每隔设定时间段检测数据缓存队列中缓存的数据的条数;若检测到数据缓存队列中缓存的数据条数超过设定阈值N,则从数据缓存队列的队头提取出N条数据;若检测到数据缓存队列中缓存的数据条数没有超过设定阈值N,则休眠设定时间段;在休眠设定时间段后,再次对数据缓存队列中缓存的数据条数进行检测;
事务提交单元502将数据提取单元501提取的N条数据,按各条数据的主键从小到大顺序,将生成的N条SQL数据插入语句依次写入到一个事务中向中间件103提交;并在接收到中间件103上报的异常的执行结果后,发送错误数据处理通知;
错误数据主键确定单元503接收到错误数据处理通知后,根据事务提交单元502接收的异常的执行结果,确定出错误数据的主键后发送处理通知;
具体地,错误数据主键确定单元403接收到错误数据处理通知后,从异常的执行结果中解析出其携带的主键,作为错误数据的主键;或者向中间件103发送获取成功数据主键的命令;以及根据各条数据的主键的大小顺序,以及中间件103返回的主键,确定出错误数据的主键;
相应地,中间件103接收到获取成功数据主键的命令后,向数据库依次发送各条数据的主键查询命令;并将数据库返回的查询到的主键向数据提交器102返回;
处理单元504接收到处理通知后,将提取出的N条数据中,主键大于错误数据的主键的数据再次存入到数据缓存队列的队尾。
本发明实施例的技术方案中,由数据提交器为每条数据生成唯一的编号,作为该条数据的主键,当数据库返回异常的执行结果时,数据提交器向中间件发送获取成功数据主键的命令,随后根据中间件返回的主键,以及各条数据的主键的大小顺序,确定出错误数据的主键,也可以根据异常的执行结果中携带的错误数据的主键,直接确定出错误数据的主键,这样,将批量提交的数据中错误数据与正确数据区分开来;之后,将主键在错误数据的主键之后的数据再次存入到数据缓存队列中,等待下一次批量提交,避免了在错误数据之前的正确数据被重复提交,而且在错误数据之后的正确数据可以在后续进行批量提交,而不必采用逐条提交的方式,从而提高了数据批量入库的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
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条数据中,主键大于所述错误数据的主键的数据再次存入到数据缓存队列的队尾。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310486335.4A CN103577551B (zh) | 2013-10-16 | 2013-10-16 | 一种数据批量提交到数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310486335.4A CN103577551B (zh) | 2013-10-16 | 2013-10-16 | 一种数据批量提交到数据库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577551A true CN103577551A (zh) | 2014-02-12 |
CN103577551B CN103577551B (zh) | 2017-04-05 |
Family
ID=50049327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310486335.4A Active CN103577551B (zh) | 2013-10-16 | 2013-10-16 | 一种数据批量提交到数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577551B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317926A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种持久化的数据存储和查询方法及对应的装置和系统 |
CN104881469A (zh) * | 2015-05-27 | 2015-09-02 | 北京京东尚科信息技术有限公司 | 一种数据导出方法和装置 |
CN105893424A (zh) * | 2015-12-04 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 一种服务器端数据存储设备及方法 |
CN105975521A (zh) * | 2016-04-28 | 2016-09-28 | 乐视控股(北京)有限公司 | 一种流式数据上传方法及装置 |
CN106156278A (zh) * | 2016-06-24 | 2016-11-23 | 努比亚技术有限公司 | 一种数据库数据读写方法和装置 |
CN106156309A (zh) * | 2016-07-01 | 2016-11-23 | 五八同城信息技术有限公司 | 数据读取方法及装置 |
CN106254040A (zh) * | 2015-06-15 | 2016-12-21 | 中兴通讯股份有限公司 | 命令的应答处理方法及装置 |
CN106412059A (zh) * | 2016-09-28 | 2017-02-15 | 四川长虹电器股份有限公司 | 无法直接通信的服务器间进行可靠数据转移的方法及系统 |
CN106487902A (zh) * | 2016-10-19 | 2017-03-08 | 华迪计算机集团有限公司 | 一种基于消息中间件的数据收集方法和系统 |
CN106649418A (zh) * | 2015-11-04 | 2017-05-10 | 江苏引跑网络科技有限公司 | 一种在驱动中直连分片实现分布式数据库数据导入的高性能方法 |
CN106844592A (zh) * | 2017-01-12 | 2017-06-13 | 无线生活(杭州)信息科技有限公司 | 一种数据库变更方法及装置 |
CN106874385A (zh) * | 2017-01-11 | 2017-06-20 | 深圳证券通信有限公司 | 一种金融领域关系型数据库高性能访问方法 |
CN107239237A (zh) * | 2017-06-28 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 数据写入方法及装置和电子设备 |
CN107633014A (zh) * | 2017-08-17 | 2018-01-26 | 深圳市诚壹科技有限公司 | 一种数据存储方法及服务器 |
CN109391646A (zh) * | 2017-08-04 | 2019-02-26 | 中国电信股份有限公司 | 消息中间件消息获取方法、装置和系统 |
CN110134525A (zh) * | 2019-03-25 | 2019-08-16 | 杭州比智科技有限公司 | 一种消息补偿方法及装置 |
CN111858638A (zh) * | 2020-07-29 | 2020-10-30 | 上海真兰仪表科技股份有限公司 | 一种大批量同质数据的批量入库方法 |
CN111984662A (zh) * | 2020-08-20 | 2020-11-24 | 中国银行股份有限公司 | 批量更新数据库的方法及装置 |
CN112231329A (zh) * | 2020-10-14 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
CN112286712A (zh) * | 2020-12-25 | 2021-01-29 | 成都数联铭品科技有限公司 | 基于唯一id的容错修复方法 |
CN112306711A (zh) * | 2020-10-21 | 2021-02-02 | 深圳前海微众银行股份有限公司 | 一种业务告警方法、设备及计算机可读存储介质 |
CN112597161A (zh) * | 2020-12-23 | 2021-04-02 | 北京澎思科技有限公司 | 数据处理方法、电子设备及可读存储介质 |
CN113312388A (zh) * | 2021-05-28 | 2021-08-27 | 中国船舶重工集团公司第七0七研究所 | 一种多线程且安全的数据库存储框架的构建方法 |
CN113360482A (zh) * | 2021-08-10 | 2021-09-07 | 深圳市中科鼎创科技股份有限公司 | 基于sql数据库的在线迁移方法 |
CN113961153A (zh) * | 2021-12-21 | 2022-01-21 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
CN114996292A (zh) * | 2022-05-05 | 2022-09-02 | 北京联华信科技有限公司 | 执行计划自动变更方法、装置、设备及可读存储介质 |
CN117575482A (zh) * | 2023-11-23 | 2024-02-20 | 广州方舟信息科技有限公司 | 一种药品数据的入库方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060122960A1 (en) * | 2004-12-03 | 2006-06-08 | International Business Machine Corporation | Information processing system and control |
CN1920824A (zh) * | 2005-07-21 | 2007-02-28 | 曾致中 | 一种数据库密文查询的方法 |
CN102495906A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种实现断点续传的增量式数据迁移方法 |
-
2013
- 2013-10-16 CN CN201310486335.4A patent/CN103577551B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060122960A1 (en) * | 2004-12-03 | 2006-06-08 | International Business Machine Corporation | Information processing system and control |
CN1920824A (zh) * | 2005-07-21 | 2007-02-28 | 曾致中 | 一种数据库密文查询的方法 |
CN102495906A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种实现断点续传的增量式数据迁移方法 |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317926B (zh) * | 2014-10-31 | 2017-10-17 | 北京思特奇信息技术股份有限公司 | 一种持久化的数据存储和查询方法及对应的装置和系统 |
CN104317926A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种持久化的数据存储和查询方法及对应的装置和系统 |
CN104881469A (zh) * | 2015-05-27 | 2015-09-02 | 北京京东尚科信息技术有限公司 | 一种数据导出方法和装置 |
CN104881469B (zh) * | 2015-05-27 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 一种数据导出方法和装置 |
CN106254040A (zh) * | 2015-06-15 | 2016-12-21 | 中兴通讯股份有限公司 | 命令的应答处理方法及装置 |
CN106254040B (zh) * | 2015-06-15 | 2020-03-13 | 中兴通讯股份有限公司 | 命令的应答处理方法及装置 |
CN106649418A (zh) * | 2015-11-04 | 2017-05-10 | 江苏引跑网络科技有限公司 | 一种在驱动中直连分片实现分布式数据库数据导入的高性能方法 |
CN105893424A (zh) * | 2015-12-04 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 一种服务器端数据存储设备及方法 |
CN105975521A (zh) * | 2016-04-28 | 2016-09-28 | 乐视控股(北京)有限公司 | 一种流式数据上传方法及装置 |
CN106156278B (zh) * | 2016-06-24 | 2020-07-17 | 安徽三禾一信息科技有限公司 | 一种数据库数据读写方法和装置 |
CN106156278A (zh) * | 2016-06-24 | 2016-11-23 | 努比亚技术有限公司 | 一种数据库数据读写方法和装置 |
CN106156309A (zh) * | 2016-07-01 | 2016-11-23 | 五八同城信息技术有限公司 | 数据读取方法及装置 |
CN106412059A (zh) * | 2016-09-28 | 2017-02-15 | 四川长虹电器股份有限公司 | 无法直接通信的服务器间进行可靠数据转移的方法及系统 |
CN106487902A (zh) * | 2016-10-19 | 2017-03-08 | 华迪计算机集团有限公司 | 一种基于消息中间件的数据收集方法和系统 |
CN106874385B (zh) * | 2017-01-11 | 2020-08-07 | 深圳证券通信有限公司 | 一种金融领域关系型数据库高性能访问方法 |
CN106874385A (zh) * | 2017-01-11 | 2017-06-20 | 深圳证券通信有限公司 | 一种金融领域关系型数据库高性能访问方法 |
CN106844592A (zh) * | 2017-01-12 | 2017-06-13 | 无线生活(杭州)信息科技有限公司 | 一种数据库变更方法及装置 |
CN107239237A (zh) * | 2017-06-28 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 数据写入方法及装置和电子设备 |
CN109391646B (zh) * | 2017-08-04 | 2021-08-17 | 中国电信股份有限公司 | 消息中间件消息获取方法、装置和系统 |
CN109391646A (zh) * | 2017-08-04 | 2019-02-26 | 中国电信股份有限公司 | 消息中间件消息获取方法、装置和系统 |
CN107633014A (zh) * | 2017-08-17 | 2018-01-26 | 深圳市诚壹科技有限公司 | 一种数据存储方法及服务器 |
CN110134525A (zh) * | 2019-03-25 | 2019-08-16 | 杭州比智科技有限公司 | 一种消息补偿方法及装置 |
CN111858638A (zh) * | 2020-07-29 | 2020-10-30 | 上海真兰仪表科技股份有限公司 | 一种大批量同质数据的批量入库方法 |
CN111984662B (zh) * | 2020-08-20 | 2024-02-23 | 中国银行股份有限公司 | 批量更新数据库的方法及装置 |
CN111984662A (zh) * | 2020-08-20 | 2020-11-24 | 中国银行股份有限公司 | 批量更新数据库的方法及装置 |
CN112231329A (zh) * | 2020-10-14 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
CN112231329B (zh) * | 2020-10-14 | 2024-04-26 | 北京人大金仓信息技术股份有限公司 | 向数据库插入数据的方法、装置、设备和可读存储介质 |
CN112306711A (zh) * | 2020-10-21 | 2021-02-02 | 深圳前海微众银行股份有限公司 | 一种业务告警方法、设备及计算机可读存储介质 |
CN112306711B (zh) * | 2020-10-21 | 2024-04-09 | 深圳前海微众银行股份有限公司 | 一种业务告警方法、设备及计算机可读存储介质 |
CN112597161A (zh) * | 2020-12-23 | 2021-04-02 | 北京澎思科技有限公司 | 数据处理方法、电子设备及可读存储介质 |
CN112286712A (zh) * | 2020-12-25 | 2021-01-29 | 成都数联铭品科技有限公司 | 基于唯一id的容错修复方法 |
CN112286712B (zh) * | 2020-12-25 | 2021-04-02 | 成都数联铭品科技有限公司 | 基于唯一id的容错修复方法 |
CN113312388A (zh) * | 2021-05-28 | 2021-08-27 | 中国船舶重工集团公司第七0七研究所 | 一种多线程且安全的数据库存储框架的构建方法 |
CN113360482B (zh) * | 2021-08-10 | 2021-11-30 | 深圳市中科鼎创科技股份有限公司 | 基于sql数据库的在线迁移方法 |
CN113360482A (zh) * | 2021-08-10 | 2021-09-07 | 深圳市中科鼎创科技股份有限公司 | 基于sql数据库的在线迁移方法 |
CN113961153A (zh) * | 2021-12-21 | 2022-01-21 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
CN114996292A (zh) * | 2022-05-05 | 2022-09-02 | 北京联华信科技有限公司 | 执行计划自动变更方法、装置、设备及可读存储介质 |
CN117575482A (zh) * | 2023-11-23 | 2024-02-20 | 广州方舟信息科技有限公司 | 一种药品数据的入库方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103577551B (zh) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577551A (zh) | 一种数据批量提交到数据库的方法和装置 | |
CN108647357B (zh) | 数据查询的方法及装置 | |
CN111061696B (zh) | 一种交易报文日志的解析方法及装置 | |
CN113110995B (zh) | 系统迁移的测试方法及装置 | |
CN113076729A (zh) | 用于报表导入的方法及系统、可读存储介质及电子设备 | |
CN111367934B (zh) | 数据一致性的检验方法、装置、服务器和介质 | |
CN111144804A (zh) | 一种订单处理方法、装置及系统 | |
US11734299B2 (en) | Message templatization for log analytics | |
CN113238940B (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN115600038A (zh) | 页面渲染方法、装置、设备及介质 | |
US10817661B2 (en) | System architecture framework | |
CN110399296B (zh) | 测试客户端与服务端之间交互接口的方法、系统和介质 | |
CN112667614A (zh) | 一种数据处理方法、装置及计算机设备 | |
CN113779117A (zh) | 一种数据监控方法、装置、存储介质和电子设备 | |
CN104331452A (zh) | 一种处理脏数据的方法及系统 | |
EP4191983A1 (en) | Driving data processing method, apparatus, device, automatic driving vehicle, medium and product | |
US20080307395A1 (en) | Providing Registration of a Communication | |
CN117251384B (zh) | 一种接口自动化测试用例生成方法及系统 | |
CN112948181A (zh) | 一套数据修改备份恢复系统 | |
CN113297328A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN117708214A (zh) | 一种数据异步提交生产方法、装置、电子设备及记录介质 | |
CN114116865A (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
CN114943212A (zh) | 一种参数报表生成方法及其相关设备 | |
US9600505B2 (en) | Code optimization based on customer logs | |
CN116186065A (zh) | 数据抽取-转换-加载etl的批处理脚本生成方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170213 Address after: 266100 Shandong Province, Qingdao city Laoshan District Songling Road No. 399 Applicant after: Poly Polytron Technologies Inc Address before: 266061 Laoshan, Qingdao province Hongkong District No. East Road, room 248, room 131 Applicant before: Qingdao Hisense Media Networks Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |