CN114153910A - 数据采集方法、装置及电子装置、计算机程序产品 - Google Patents
数据采集方法、装置及电子装置、计算机程序产品 Download PDFInfo
- Publication number
- CN114153910A CN114153910A CN202111430107.6A CN202111430107A CN114153910A CN 114153910 A CN114153910 A CN 114153910A CN 202111430107 A CN202111430107 A CN 202111430107A CN 114153910 A CN114153910 A CN 114153910A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- message
- target data
- consumer
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000004590 computer program Methods 0.000 title claims description 27
- 230000000007 visual effect Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 11
- 238000013480 data collection Methods 0.000 claims 5
- 230000008676 import Effects 0.000 abstract description 20
- 230000006870 function Effects 0.000 description 6
- 238000013515 script Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出了一种数据采集方法,包括:前端向后端发送根据目标数据文件生成的注册数据包,其中注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;后端获取注册数据包,并根据注册数据包在目标数据库中建立目标数据表,将所有目标数据分为多个数据组,并将每一数据组分配给消息队列中的不同消息,根据每一消息的消息编号将该消息分配给消费者集群中对应的消费者,每一消费者将消息内的数据组导入目标数据表。该方法在保证导入数据准确性的同时,采用多线程批量导入的形式,将庞大数量的数据化整为零地将所有数据导入目标数据库。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种数据采集方法、装置及电子装置、计算机程序产品。
背景技术
数据库主要分为传统的关系型数据库和非关系型数据库,新型数据库以及分布式数据库等。在将数据输入数据库时,通常需要编写相应的SQL脚本实现数据写入,对于不具备数据库语言基础的非专业人员来说,完成该操作是有一定难度的。
随着开发场景的增加,开发中使用到的数据源也各有不同,对每一种数据源实现数据采集需要掌握的数据库语言也不同。例如,现存在多种将Excel文件中的数据导入数据库的方法,但这些方法使用范围有限,且对于不同类型的Excel文件、不同排列方式的Excel表格以及数据库对不同数据格式的要求,需要编写的SQL脚本均不相同。采用人工手动录入数据或者根据每一条数据编写对应的SQL脚本,所需要的时间成本和人工成本极高,并且存在人工录入数据错误的可能性。
另外,一次性导入庞大数量的数据可能会给系统以及数据库造成过载负担,在导入庞大数量的数据时通常使用线程池来解决,但如果某一个线程池中分配过多数据也会发生CPU和内存的资源竞争,可能导致资源耗尽,进而导致系统或程序闪退,以至于其中某些数据在导入时丢失,又难以排查出具体丢失的是哪些数据,需要进行重新导入;或者如果某一个线程池中分配过少数据,会使得自身吞吐量降低,同时增加其他线程池的负担,导致总体的导入效率低下。
发明内容
本申请实施例提供了一种数据采集方法,该方法将数据文件上传和数据导入的过程分离,为导入前的数据提供可修改功能,保证导入时数据的准确性;同时采用多线程批量导入的形式,将庞大数量的数据分为多个数据组并分配给消息队列中不同的消息,且将所有消息尽可能均匀分配给消费者集群中的每个消费者,通过化整为零的方法实现高效的数据导入。
第一方面,本申请实施例提供了一种数据采集方法,包括以下步骤:
前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
在一些申请实施例中,在“前端向后端发送根据目标数据文件生成的注册数据包”前,包括步骤:
前端向后端发送包括目标文件标识的查询请求;
后端获取所述查询请求,并根据所述目标文件标识获取目标数据文件,解析所述目标数据文件得到响应信息,所述响应信息至少包括多条所述目标数据、至少一表头、每一所述表头的数据类型、根据每一所述表头生成的字段以及根据每一所述表头的数据类型生成的字段类型;
前端根据所述响应信息渲染可视化页面,在所述可视化页面上可设置所述目标数据库的标识信息和所述目标数据表的表名,以及可调整每一所述表头对应的所述字段、每一所述表头的数据类型对应的所述字段类型。
在一些申请实施例中,在“前端向后端发送包括目标文件标识的查询请求”前,包括步骤:
前端向后端发起上传至少一数据文件的上传请求;
后端获取所述上传请求,并根据所述上传请求保存所述数据文件,生成对应每一所述数据文件的文件标识。
在一些申请实施例中,所述目标数据文件包括多条所述目标数据、至少一所述表头以及对应每一所述表头的数据类型,每一所述目标数据包括至少一对应所述表头的元数据,同一所述目标数据中的不同所述元数据对应不同所述表头。
在一些申请实施例中,“将每一所述数据组分配给消息队列中的不同消息”包括步骤:在消息队列中创建与所述数据组相同数量的消息,每一所述消息设有消息编号,将每一所述数据组存入所述消息编号不同的所述消息。
在一些申请实施例中,“根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者”包括步骤:对应所述消息队列设有消费者集群,所述消费者集群包括至少一消费者;统计所述消费者集群中的消费者数量,根据每一所述消息的消息编号与所述消费者数量确定该消息对应的所述消费者作目标消费者,并将该消息分配给所述目标消费者。
第二方面,本申请实施例提供了一种数据采集装置,用于实现第一方面中所述的数据采集方法,该装置包括以下模块:
提交注册模块,用于前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
注册模块,用于后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以如上任意申请实施例所述的数据采集方法。
第四方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括软件代码部分,当所述计算机程序产品在计算机上被运行时,所述软件代码部分用于执行如上任一申请实施例所述的数据采集方法。
第五方面,本申请实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据如上任意申请实施例所述的数据采集方法。
本申请实施例的主要贡献和创新点如下:
本申请实施例提供了一种数据采集方法、装置及电子装置、计算机程序产品、可读存储介质。该方法采用多线程批量导入的形式,将庞大数量的数据分为多个数据组分配给消息队列中不同的消息,并将所有消息尽可能均匀分配给消费者集群中的每个消费者,通过化整为零的方法实现高效的数据导入。
且本方案无需编写复杂的SQL脚本,即可实现在前端页面上将数据文件一键导入,不仅简化数据采集的工作还有效提高了在大数据量情况下数据导入的性能,更有效降低人为处理数据而发生数据偏差的可能性。
特别的是,在另一些申请实施例中,采用了将数据文件上传和数据导入分离的形式,为导入前的数据提供可修改功能,保证导入时数据的准确性;不仅在导入数据文件的方式上提供了可视化界面,为上传数据文件、核对相关信息提供了遍历,更是在针对庞大数量的数据情况下,缓解了业务系统的压力,使用消息队列以及相应设置的消费者集群顺序插入数据,并且对系统进行解耦,极大提高了业务系统的性能。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的数据交互示意图;
图2是根据本申请实施例的数据采集装置的结构框图;
图3是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
实施例一
本实施例提供了一种数据采集方法的技术方案,实现高效、准确地采集数据文件中包含的大量数据。在实现时,该技术方案采用了数据文件上传和数据导入分离的形式,保证导入后的数据的准确性,同时采用了多线程批量导入的形式,将大量数据均分成多份并分别放入消息队列中的消息,将所有消息均分到部署的消费者集群中的每个消费者实现多线程批量导入数据库,提高了数据导入的效率。
在本实施例中,需要先对一些术语进行说明:
(1)前端,是创建WEB页面或APP等前端界面呈现给用户的过程,通过HTML、CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。
(2)后端,为前端网站等界面提供支持,服务端更注重程序设计架构思想,包括服务器、应用及数据库,让它们之间能够彼此交互,同时更需要考虑数据的存取以及平台的稳定性、可靠性等方面。
(3)SQL脚本,用于创建数据库对象的语句的集合。Transact-SQL脚本保存为文件,文件名通常以 .sql结尾。
(4)OSS,阿里云对象存储,全称Object Storage Service,是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性,支持多种存储类型,全面优化存储成本。
(5)form-data请求格式,是当前端通过 RESTful API 提出请求时,它会将资源状态表述传递给后端,是基于post方法来传递数据的,并且其请求内容格式为Content-Type:multipart/form-data,用来指定请求内容的数据编码格式。
(6)API,应用程序接口,全称Application Programming Interface,是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
(7)RESTful API,也称为 REST API,是遵循 REST 架构规范的应用编程接口(API或 Web API)。
首先,需要说明的是,本方案在由前端和后端共同组成的应用系统中运行,前端和后端使用http协议进行通信,前端和后端可部署在相同服务器也可部署在不同服务器内。本方案在前端页面展示可视化界面,用户在前端页面的可视化页面操作各类指令后触发后端执行对应的指令内容。
最初,用户可以在可视化界面中新建用于存放数据文件的目录。具体的,前端向后端发送一个建立目录请求,相应的,后端提供一个方法来接收该建立目录请求并根据该建立目录请求新建一个目录,将该新建的目录称为新建目录,建立目录请求中包括了建立该新建目录需要使用到的各种数据,例如该新建目录的目录名和该新建目录的目录级别,如果根据新建目录的目录级别得知该新建目录还隶属于其他目录下,那么该目录请求还包括新建目录上级目录的目录ID,也就是说,后端在根据新建目录上级目录的目录ID定位新建目录的位置并进行新建,同样给该新建目录分配一个目录ID。
其中,数据文件可以是.xls、.xlsx、.csv三种格式中的任意格式的文件。具体的,用户通过访问前端页面,从本地文件系统选择.xls、.xlsx、.csv三种格式中的任意格式的数据文件进行上传至所建目录下,因为上传数据文件的步骤与将数据文件中的数据导入数据库的步骤是分离的,所以可以一次性上传一个或多个数据文件。
也就是说,前端向后端发起一个上传至少一个数据文件的上传请求,后端根据该上传请求保存所有上传的数据文件。
在一具体的实施例中,前端以form-data请求格式向后端发送包括至少一数据文件的上传请求,该上传请求主要包括了要上传的数据文件以及指定的用于存放这些数据文件的目录ID。
后端将所有数据文件保存到本地或者文件服务器(例如OSS)上即为上传成功,本地或文件服务器在保存每一个数据文件时,都会生成相应的文件标识,以便于后续根据文件标识来找到对应的数据文件。然后后端返回给前端一个对应上传请求的响应信息,该响应信息包括每一数据文件的上传情况,主要是上传成功或上传失败。前端在接收到对应上传请求的响应信息后,在数据文件列表中渲染出已经上传成功的数据文件,并且还可以将已上传的这些数据文件的具体基本信息进行可视化展示,例如该数据文件的文件名称、文件大小、上传时间等具体基本信息。
也就是说,还需要维护一张记录文件上传历史的数据表作为文件上传记录表,该文件上传记录表中包含了所有数据文件的具体基本信息,例如保存每一数据文件的文件地址、每一数据文件的文件名称、每一数据文件的文件大小以及每一数据文件的上传时间等内容,其中每一数据文件的文件地址包括存放该数据文件的目录ID以及在本地或者文件服务器上存放该数据文件的路径,也就是说通过该文件地址可以获取到已经上传的对应的数据文件。
在如图1所示的应用场景中,上传数据文件的过程和将数据文件中的数据导入数据库的过程是分开进行的,也就是说并不是上传了数据文件后就直接进行导入,这样做的好处是为导入前的数据提供核对和修改功能,保证导入时数据的准确性。
具体的,用户先在可视化界面中任意已有的目录中选择任意已有的数据文件查看具体数据信息,并对具体数据信息进行核对或修改,在核对和修改完成后再将数据导入数据库。
通常,数据文件中的数据呈结构化有序排列,因此数据文件不仅包括多条数据,还包括至少一个表头以及对应每一个表头的数据类型,其中每一条数据都包括对应至少一个表头的元数据,同一条数据中的不同元数据对应不同的表头,且元数据的数据类型与对应表头的数据类型保持一致。具体数据信息主要为数据文件中的表头和对应每一表头的数据类型。
也就是说,用户想要查询某一数据文件的具体数据信息时,将该数据文件作为目标数据文件,前端会将该目标数据文件的文件标识作为目标文件标识放入查询请求发送给后端。后端通过解析该查询请求得到目标文件标识,并通过目标文件标识去获取对应的目标数据文件。根据前文可知,数据文件通常被保存在本地或者文件服务器上,后端根据目标文件标识即可从本地或目标服务器上获取到对应相同文件标识数据文件作为目标数据文件。然后后端解析该目标数据文件得到其中的所有数据作为目标数据,以及所有表头和每一个表头对应的数据类型,作为该查询请求的响应信息返回给前端;前端获取到该响应信息后重新渲染可视化页面,用户就可以查看到该目标数据文件中的所有表头和对应每一表头的数据类型。
紧接着,用户在可视化界面上填写或选择要导入的数据库作为目标数据库的标识信息,其中目标数据库的标识信息是可以唯一确定某一数据库是该目标数据库的任何标识信息,例如该数据库的库名。以及,用户还需要填写需要新建数据表的表名以便于后续建立目标数据表,并根据可视化界面上显示的该目标数据文件包含的具体数据信息做出一些调整,确认新建目标数据表时需要包含字段以及每一字段的字段类型即可进行数据注册,其中根据目标数据库的标识信息可以确认具体的数据库作为数据库,该标号信息可以是目标数据库的库名,也可以是其他标识该目标数据库的信息。例如,目标数据文件中的表头对应目标数据表中的字段,但通常情况下表头都是中文,后端可以自动根据表头的中文意思生成对应的英文返回给前端,用户在可视化界面上可以核对表头与对应的英文是否准确,如果不准确可以及时修改;以及,表头对应的数据类型就是该表头对应字段的字段类型,但由于表头对应的数据类型与对应字段的字段类型存在一定差异,需要根据表头对应的数据类型的含义,为该表头对应的字段选择相应的字段类型。
具体的,用户选择数据注册后,前端将注册数据包发送给后端,该注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及根据目标数据文件解析得到的多条目标数据。后端根据目标数据库的标识信息定位到目标数据库,并根据目标数据表的表名在该目标数据中创建目标数据表。进一步的,注册数据包中还包括每一表头对应的字段和每一表头的数据类型对应的字段类型,也就是说,创建的目标数据表包括这些对应表头的字段,以及每一字段的字段类型是根据对应表头的数据类型得到的。
最后,后端将所有目标数据批量导入到目标数据库中新建的目标数据表。
优选的,为了方便后期查询目标数据文件与目标数据库的关系,可以在目标数据库内维护一张目标数据文件与目标数据库的关系表,该关系表中主要包括可以找到目标数据库的唯一性标识、目标数据文件的唯一性标识以及根据该目标数据文件建立的目标数据表的中文表名和/或英文表名。
进一步的,为了能够方便查询每一个数据文件的表头转换成数据表后,表头与字段的对应关系,在还可以构建一张表头字段关系表,该关系表中主要包括可以找到每一数据文件对应数据库中数据表的唯一性标识、每一数据文件的所有表头与对应每一表头的字段。其中数据表的唯一性标识是可以在数据库中唯一确定该数据表的任何标识,例如该数据表的表名。
其中,数据批量导入可以采用多线程导入的方式。具体为:解析目标数据文件得到多条目标数据,可以根据定义的等分规则将所有数据等分为多份,每一份数据组成一个数据组,对每个数据组从0开始进行增序编号;对应的,在消息队列里创建与数据组相同数量的消息,每一个消息中一个数据组,该消息的编号与放入该消息的数据组的编号相同。在将数据组分配给消息队列中的消息时,可以从编号数字最大的开始,例如一共有23个数据组,那么数据组的编号为0至22,对应的消息队列里的消息的编号也是0至22,将编号为22的数据组放入编号为22的消息,且将编号为22的消息放入消息队列的底部,将编号为21的数据组放入编号为21的消息,并将编号为21的数据组放于消息队列中编号为22的消息上方,也就意味着消息队列的顶部是编号为0的消息。
对应该消息队列部署有消费者集群,该消费者集群中包括至少一个消费者。如果该消费者集群中有多个消费者,每个消费者在收到消息后会将每个消息中的数据组依次批量导入到目标数据库中,也就是说,每个消费者可能被先后分到多个消息,消费者每分到一个消息就将该消息中的数据组导入到目标数据库中的目标数据表,如果消费者将第一个分配到的消息导入完成后,再导入第二个分配到的消息。具体的,可以采用JDBC的批量保存每个消息中的数据组一次性导入到目标数据库中。
例如,总共解析目标数据文件得到11123条目标数据,期望按照每500条目标数据分割的等分规则分割这11123条目标数据成多份,计算得到份数为11123/500=22.246,如果计算出的份数不是整数,采用向上取整的方式,也就是说将11123条数据等分分割为23份,得到23个数据组,数据组的编号依次为0只22,最终编号为0只21的数据组中每个数据组都包括500条目标数据,编号为22的数据组中包括123条目标数据。
优选的,为了防止最后一份数据中的目标数据条数过少,还可以在计算出需要将所有数据分为23个数据组后,重新用数据总条数除以数据组的个数计算实际应该分配给每个数据组的数据量,使得每个数据组中包括的数据量更加均匀,也就是说,编号为0只21的数据组中应该包括的数据量为11123/23=483.61条,同样采用向上取整的方式,编号为0只21的数据组中每份数据都应该包括484条目标数据,编号为22的数据组中包括475条目标数据。
特别的是,由于所有消费者可以同时进行导入操作,如果某些个消费者中的消息数量过多,某些个消费者中的消息数量过少,在数据量极大的情况下,导入的速度会受到明显影响,因此需要尽可能分配给每个消费者均等数量的消息。通常也是使用消息的总数量除以消费者的个数计算出每个消费者应该分配到多少条消息,但这样同样会造成最后一个消费者分到的消息数量过少的问题。
因此,优选的方法是,依次根据消息队列中每个消息的编号对消费者的个数取余数,根据计算出的余数依轮次分配给消费者,最终可以实现每个消费者尽可能地分配到消息。例如,编号为0至10的消息,当存在3个消费者的情况下,第一个消费者会被分配到编号为0、3、6、9的消息,第二个消费者会被分配到编号为1、4、7、10的消息,第三个消费者会分配到编号为2、5、8的消息。这样可以保证两个消费者包含的消息数量之间的差距不会超过1。
实施例二
基于相同的构思,本实施例还提供了一种数据采集装置,用于实现实施例一中所描述的数据采集方法,具体参考图2,图2是根据本申请实施例的数据采集装置的结构框图,如图2所示,该装置包括以下模块:
提交注册模块,用于前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
注册模块,用于后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
实施例三
本实施例还提供了一种电子装置,参考图3,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述实施例一中的任意一种数据采集方法的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(Solid State Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerial Bus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random Access Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(Erasable Programmable Read-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable Programmable Read-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random AccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(Fast PageMode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic Random Access Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种数据采集方法。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是当前数据表例如特征数据、模板表等,输出的信息可以是特征指纹、指纹模板、文本分类推荐信息、文件模板配置映射表、文件模板配置信息表等。
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例一中的任意一种数据采集方法,本申请实施例可一种计算机程序产品来实现。该计算机程序产品该计算机程序产品包括软件代码部分,当所述计算机程序产品在计算机上被运行时,所述软件代码部分用于执行实现上述实施例一中的任意一种数据采集方法。
并且,结合上述实施例一中的任意一种数据采集方法,本申请实施例可提供一种可读存储介质来实现。该可读存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例一中的任意一种数据采集方法。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.数据采集方法,其特征在于,包括以下步骤:
前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
2.根据权利要求1所述的数据采集方法,其特征在于,在“前端向后端发送根据目标数据文件生成的注册数据包”前,包括步骤:
前端向后端发送包括目标文件标识的查询请求;
后端获取所述查询请求,并根据所述目标文件标识获取目标数据文件,解析所述目标数据文件得到响应信息,所述响应信息至少包括多条所述目标数据、至少一表头、每一所述表头的数据类型、根据每一所述表头生成的字段以及根据每一所述表头的数据类型生成的字段类型;
前端根据所述响应信息渲染可视化页面,在所述可视化页面上可设置所述目标数据库的标识信息和所述目标数据表的表名,以及可调整每一所述表头对应的所述字段、每一所述表头的数据类型对应的所述字段类型。
3.根据权利要求1所述的数据采集方法,其特征在于,所述目标数据文件包括多条所述目标数据、至少一所述表头以及对应每一所述表头的数据类型,每一所述目标数据包括至少一对应所述表头的元数据,同一所述目标数据中的不同所述元数据对应不同所述表头。
4.根据权利要求3所述的数据采集方法,其特征在于,所述注册数据包还包括:每一所述表头对应的字段、每一所述表头的数据类型对应的字段类型。
5.根据权利要求1所述的数据采集方法,其特征在于,“将每一所述数据组分配给消息队列中的不同消息”包括步骤:在消息队列中创建与所述数据组相同数量的消息,每一所述消息设有消息编号,将每一所述数据组存入所述消息编号不同的所述消息。
6.根据权利要求1所述的数据采集方法,其特征在于,“根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者”包括步骤:对应所述消息队列设有消费者集群,所述消费者集群包括至少一消费者;统计所述消费者集群中的消费者数量,根据每一所述消息的消息编号与所述消费者数量确定该消息对应的所述消费者作目标消费者,并将该消息分配给所述目标消费者。
7.数据采集装置,其特征在于,包括以下模块:
提交注册模块,用于前端向后端发送根据目标数据文件生成的注册数据包,其中所述注册数据包至少包括目标数据库的标识信息、目标数据表的表名以及多条目标数据;
注册模块,用于后端获取所述注册数据包,并根据所述注册数据包在所述目标数据库中建立所述目标数据表,将所有所述目标数据分为多个数据组,并将每一所述数据组分配给消息队列中的不同消息,根据每一所述消息的消息编号将该消息分配给消费者集群中对应的消费者,每一所述消费者将所述消息内的所述数据组导入所述目标数据表。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至6任一所述的数据采集方法。
9.一种计算机程序产品,其特征在于,包括软件代码部分,当所述计算机程序产品在计算机上被运行时,所述软件代码部分用于执行根据权利要求1至6任一项所述的数据采集方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1至6任一项所述的数据采集方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430107.6A CN114153910A (zh) | 2021-11-29 | 2021-11-29 | 数据采集方法、装置及电子装置、计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430107.6A CN114153910A (zh) | 2021-11-29 | 2021-11-29 | 数据采集方法、装置及电子装置、计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114153910A true CN114153910A (zh) | 2022-03-08 |
Family
ID=80784206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111430107.6A Pending CN114153910A (zh) | 2021-11-29 | 2021-11-29 | 数据采集方法、装置及电子装置、计算机程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153910A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115994120A (zh) * | 2023-03-23 | 2023-04-21 | 北京飞轮数据科技有限公司 | 数据文件合并方法、装置、电子设备和计算机可读介质 |
CN117608877A (zh) * | 2023-11-29 | 2024-02-27 | 广州方舟信息科技有限公司 | 一种数据传输方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935622A (zh) * | 2014-03-21 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 一种用于消息分配、消费的方法及装置,用于消息处理的系统 |
CN110837426A (zh) * | 2019-11-06 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置及系统、存储介质 |
CN113094434A (zh) * | 2021-04-08 | 2021-07-09 | 中国工商银行股份有限公司 | 数据库同步方法、系统、装置、电子设备及介质 |
CN113127219A (zh) * | 2019-12-31 | 2021-07-16 | 中移(苏州)软件技术有限公司 | 数据存储方法、数据获取方法、装置和存储介质 |
CN113452774A (zh) * | 2021-06-25 | 2021-09-28 | 睿视(苏州)视频科技有限公司 | 消息推送方法、装置、设备及存储介质 |
CN113590533A (zh) * | 2021-08-12 | 2021-11-02 | 城云科技(中国)有限公司 | 文件入库方法、装置及电子装置、计算机程序产品 |
-
2021
- 2021-11-29 CN CN202111430107.6A patent/CN114153910A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935622A (zh) * | 2014-03-21 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 一种用于消息分配、消费的方法及装置,用于消息处理的系统 |
CN110837426A (zh) * | 2019-11-06 | 2020-02-25 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置及系统、存储介质 |
CN113127219A (zh) * | 2019-12-31 | 2021-07-16 | 中移(苏州)软件技术有限公司 | 数据存储方法、数据获取方法、装置和存储介质 |
CN113094434A (zh) * | 2021-04-08 | 2021-07-09 | 中国工商银行股份有限公司 | 数据库同步方法、系统、装置、电子设备及介质 |
CN113452774A (zh) * | 2021-06-25 | 2021-09-28 | 睿视(苏州)视频科技有限公司 | 消息推送方法、装置、设备及存储介质 |
CN113590533A (zh) * | 2021-08-12 | 2021-11-02 | 城云科技(中国)有限公司 | 文件入库方法、装置及电子装置、计算机程序产品 |
Non-Patent Citations (1)
Title |
---|
STACK OVERFLOW用户: "通过消息队列传输大文件", 腾讯云开发者社区, 9 November 2016 (2016-11-09), pages 1 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115994120A (zh) * | 2023-03-23 | 2023-04-21 | 北京飞轮数据科技有限公司 | 数据文件合并方法、装置、电子设备和计算机可读介质 |
CN115994120B (zh) * | 2023-03-23 | 2023-06-06 | 北京飞轮数据科技有限公司 | 数据文件合并方法、装置、电子设备和计算机可读介质 |
CN117608877A (zh) * | 2023-11-29 | 2024-02-27 | 广州方舟信息科技有限公司 | 一种数据传输方法、装置、设备及存储介质 |
CN117608877B (zh) * | 2023-11-29 | 2024-10-01 | 广州方舟信息科技有限公司 | 一种数据传输方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111339041B (zh) | 文件解析入库、文件生成方法及装置 | |
CN104699718B (zh) | 用于快速引入业务数据的方法和装置 | |
US10795874B2 (en) | Creating index in blockchain-type ledger | |
CN114153910A (zh) | 数据采集方法、装置及电子装置、计算机程序产品 | |
CN111241182A (zh) | 数据处理方法和装置、存储介质和电子装置 | |
CN106909595B (zh) | 一种数据迁移方法及装置 | |
CN112800095A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US9355106B2 (en) | Sensor data locating | |
US9514184B2 (en) | Systems and methods for a high speed query infrastructure | |
CN112416964A (zh) | 一种数据处理的方法、装置、系统、计算机设备及计算机可读存储介质 | |
CN107016115B (zh) | 数据导出方法、装置、计算机可读存储介质及电子设备 | |
CN110750335A (zh) | 资源创建方法、装置和服务器 | |
CN111611207A (zh) | 状态数据处理方法、装置及计算机设备 | |
CN112615945A (zh) | 域名解析记录管理方法、装置、计算机设备及存储介质 | |
CN115390847A (zh) | 日志处理方法及装置、计算机可读存储介质、终端 | |
CN111258819A (zh) | MySQL数据库备份文件的数据获取方法、装置和系统 | |
CN113590703A (zh) | Es数据导入方法、装置、电子设备及可读存储介质 | |
CN113204558A (zh) | 数据表结构自动更新方法和装置 | |
CN112835901A (zh) | 文件存储方法及装置、计算机设备、计算机可读存储介质 | |
CN111639087A (zh) | 数据库中数据更新方法、装置和电子设备 | |
CN116483344A (zh) | 代码生成方法及装置、终端设备、计算机可读存储介质 | |
CN113268483B (zh) | 请求处理方法和装置、电子设备和存储介质 | |
CN113486025B (zh) | 数据存储方法、数据查询方法及装置 | |
CN116089529A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN112328672A (zh) | 一种数据服务映射api接口的方法、系统、存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |