CN116501783A - 一种分布式数据库数据导入方法及系统 - Google Patents
一种分布式数据库数据导入方法及系统 Download PDFInfo
- Publication number
- CN116501783A CN116501783A CN202310384278.2A CN202310384278A CN116501783A CN 116501783 A CN116501783 A CN 116501783A CN 202310384278 A CN202310384278 A CN 202310384278A CN 116501783 A CN116501783 A CN 116501783A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- slicing
- task
- warehousing
- 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 35
- 238000012545 processing Methods 0.000 claims abstract description 42
- 239000012634 fragment Substances 0.000 claims abstract description 22
- 238000013500 data storage Methods 0.000 claims description 18
- 238000007726 management method Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000013479 data entry Methods 0.000 claims description 2
- 230000003139 buffering effect Effects 0.000 abstract description 2
- 230000008676 import Effects 0.000 description 5
- 230000003203 everyday effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/5061—Partitioning or combining of resources
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种分布式数据库数据导入方法,包括:创建文件入库主任务;基于文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定原始数据文件的分片数量;根据分片数量对原始数据文件进行切片,得到多个小文件;创建对应分片数量的分片任务,将分片任务发送到RabbitMQ消息队列;数据入库节点监听RabbitMQ消息队列中的分片任务,执行分片任务并更新分片任务状态;检查文件入库主任务下的多个分片任务的分片任务状态,更新文件入库主任务的状态。与现有技术相比,本发明在耗时最长的文件数据读取和入库环节采用了多节点并行分片处理的模式,使用MQ中间件作为任务分配和缓冲,大大提高文件读取和数据入库的性能。
Description
技术领域
本发明涉及数据库技术领域,尤其是涉及一种分布式数据库数据导入方法及系统。
背景技术
信用卡账户管理系统每日进行超过300万客户的批量决策,需要将每个客户基本信息、账户信息、卡片信息、账单信息、人行征信等行内行外多种维度的信息进行组装,提交决策引擎进行调额、管制、经营决策,并将决策结果以批量文件的方式下发给核心等系统。系统处理的时效性要求很高,需要在每天按时完成批量处理,最大程度降低系统故障,提高可用性。
目前,在逐步将原有独立数据库切换到分布式数据库(例如GoldenDB)下,而面对千万级别的客户,每天需要处理大量的数据源文件解析和入库,部分单个数据文件达到了几百GB大小,如果利用原有的数据文件处理技术,性能面临极大挑战,而且需要系统实现高可用,以保证核心业务稳定运行。
现有的分布式数据库数据入库方案里,采用数据导入本地工具,例如GoldenDB数据库提供的LoaderServer工具,Oracle数据库提供的SqlLoader工具,此类方式中的工具通常采用本地可执行exe应用,可以支持本地高效导入。但是,数据库本地的数据库导入工具方案,不足在于通常只能在单个节点导入数据文件,如果在节点文件系统故障,则系统不可用。对于数据量较大的单个文件,对内存资源消耗较大,执行效率不高。另外如果基于本地可执行程序去处理文件和导入数据,存在平台依赖性。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式数据库数据导入方法及系统。
本发明的目的可以通过以下技术方案来实现:
根据本发明的第一方面,提供一种分布式数据库数据导入方法,包括:
S1、创建文件入库主任务;
S2、基于所述文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定所述原始数据文件的分片数量;
S3、根据分片数量对所述原始数据文件进行切片,得到多个小文件;
S4、创建对应分片数量的分片任务,所述分片任务至少包括主任务标识、分片任务标识、分片任务状态、分片任务对应的小文件的路径,将分片任务发送到RabbitMQ消息队列;
S5、数据入库节点监听RabbitMQ消息队列中的分片任务,执行所述分片任务并更新分片任务状态,所述数据入库节点的数量为多个,多个数据入库节点之间并行;
S6、检查所述文件入库主任务下的多个分片任务的分片任务状态,更新所述文件入库主任务的状态。
进一步地,所述确定所述原始数据文件的分片数量具体为:
clip_count=max(Data/D,K)
其中,clip_count为分片数量,Data为所述原始数据文件的大小,D为预设置的文件大小,K为数据入库节点的数量。
进一步地,所述文件处理节点还包括至少一个备用的文件处理节点。
进一步地,所述数据入库节点执行所述分片任务并更新分片任务状态具体为:
(1)一个数据入库节点接取一个分片任务,将该分片任务的分片任务状态更新为执行中;
(2)数据入库节点解析所述分片任务获取对应的小文件的路径,查找小文件是否存在,若不存在,则将小文件对应的分片任务的分片任务状态更新为失败,否则,对小文件进行文件解析;
(3)对所述小文件中的数据使用批量入库策略,每次批量入库后更新失败数量,记录失败数据,若失败数量超过预设置的批传阈值,则停止文件解析入库,所述小文件对应的分片任务的分片任务状态更新为失败,若失败数量不超过预设置的批传阈值且小文件中的全部数据已解析入库,则将所述小文件对应的分片任务的分片任务状态更新为结束,否则,重复此步骤。
进一步地,所述批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,若存在上传失败的数据,则将W条数据逐条进行重试,若仍存在上传失败的数据,则记录失败数据,将上传失败的数据条数作为此次批量入库的失败数量,将当前的失败数量与此次批量入库的失败数量相加。
进一步地,所述批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,若存在上传失败的数据,则将W条数据逐条进行重试,若仍存在上传失败的数据,则记录失败数据,将此次批量上传的状态标记为失败状态,并将当前的失败数量的值加1。
进一步地,更新所述文件入库主任务的状态具体为:
若所述文件入库主任务下的多个分片任务均已被执行,则检查分片任务状态为失败的分片任务数量是否大于预设置的分片上传阈值,若大于等于预设置的分片上传阈值,则将所述文件入库主任务的状态更新为失败,执行预设置的任务失败策略,若为0,则将所述文件入库主任务的状态更新为成功,若大于0且小于预设置的分片上传阈值,则将所述文件入库主任务的状态更新为成功,执行预设置的数据丢失策略;
若所述文件入库主任务下的多个分片任务还未被全部执行,则继续等待。
进一步地,若所述文件入库主任务下分片任务状态为失败的分片任务数量为0,还执行:删除所述原始数据文件切片得到的多个小文件。
进一步地,所述存储模块为NAS存储模块,文件处理节点和数据入库节点以共享方式读写所述NAS存储模块上的文件。
根据本发明的第二方面,提供一种分布式数据库数据导入系统,包括存储模块、文件处理节点、数据入库节点、分布式数据库模块、RabbitMQ消息队列模块、调度模块和任务管理模块,所述任务管理模块连接调度模块、文件处理节点和RabbitMQ消息队列模块,所述数据入库节点连接存储模块、分布式数据库模块和RabbitMQ消息队列模块;
所述调度模块用于创建文件入库主任务;
所述任务管理模块执行以下步骤:
基于所述文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定所述原始数据文件的分片数量;根据分片数量对所述原始数据文件进行切片,得到多个小文件;创建对应分片数量的分片任务,所述分片任务至少包括主任务标识、分片任务标识、分片任务状态、分片任务对应的小文件的路径,将分片任务发送到RabbitMQ消息队列;检查所述文件入库主任务下的多个分片任务的分片任务状态,更新所述文件入库主任务的状态;
所述数据入库节点监听RabbitMQ消息队列中的分片任务,执行所述分片任务并更新分片任务状态,所述数据入库节点的数量为多个,多个数据入库节点之间并行。
与现有技术相比,本发明具有以下有益效果:
(1)将单个大数据文件拆分为多个小文件,然后将分片任务发送到RabbitMQ消息队列;通过多个数据入库节点监听消息队列,获取到待处理的分片任务后,读取分片任务信息,并读取对应的小文件并解析入库,在耗时最长的文件数据读取和入库环节采用了多节点并行分片处理的模式,还使用RabbitMQ中间件作为任务分配和缓冲,大大提高文件读取和数据入库的性能。
(2)文件分片数量是根据数据源文件大小和节点数据动态计算得到的,有效的充分利用了单个节点处理的效率,可以提高整体处理性能,可以通过分片大小控制提高处理效率。
(3)在小文件入库处理的过程中统计成功和失败数据数量,允许出现一定的错误,实现动态容错,也提高了系统可用性。
附图说明
图1为数据导入方法的流程示意图;
图2为数据导入系统的架构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例,本发明的保护范围不限于下述的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本发明的描述中,需要理解的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本说明书提供了如实施例或流程示意图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)或者调整没有时序限制的步骤的执行顺序。
实施例1:
本发明提供一种分布式数据库数据导入方法,如图1所示,包括:
S1、创建文件入库主任务;
S2、基于文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定原始数据文件的分片数量;
S3、根据分片数量对原始数据文件进行切片,得到多个小文件;
S4、创建对应分片数量的分片任务,分片任务至少包括主任务标识、分片任务标识、分片任务状态、分片任务对应的小文件的路径,将分片任务发送到RabbitMQ消息队列;
S5、数据入库节点监听RabbitMQ消息队列中的分片任务,执行分片任务并更新分片任务状态,数据入库节点的数量为多个,多个数据入库节点之间并行;
S6、检查文件入库主任务下的多个分片任务的分片任务状态,更新文件入库主任务的状态。
本发明还提供一种分布式数据库数据导入系统,用于实现上述的分布式数据库数据导入方法,如图2所示,包括存储模块、文件处理节点、数据入库节点、分布式数据库模块、RabbitMQ消息队列模块、调度模块和任务管理模块,任务管理模块连接调度模块、文件处理节点和RabbitMQ消息队列模块,数据入库节点连接存储模块、分布式数据库模块和RabbitMQ消息队列模块;此外,系统还包括计数报警模块,计数报警模块连接任务管理模块和数据入库节点,用于记录失败数量、批传数量等并在满足一些阈值条件时执行预设的策略。
上述数据导入系统中,文件处理节点还包括至少一个备用的文件处理节点,保障系统的高可用性,当一个文件处理节点故障后可以启用其他文件处理节点。本申请实施例中,存储模块为NAS存储模块,文件处理节点和数据入库节点以共享方式读写NAS存储模块上的文件,分布式数据库模块目前用的是GoldenDB数据库
本申请实施例中,数据入库具体执行步骤如下:
1、调度模块调用任务管理模块创建文件入库主任务;
2、任务管理模块完成任务初始化并根据任务类型查询相关文件入库配置,如数据格式等;
3、基于文件入库主任务,任务管理模块调用文件处理节点从存储模块上查找原始数据文件,确定原始数据文件的分片数量;
确定原始数据文件的分片数量具体为:
clip_count=max(Data/D,K)
其中,clip_count为分片数量,Data为原始数据文件的大小,D为预设置的文件大小,本申请实施例中为50M,K为数据入库节点的数量,本申请实施例中为3。
4、根据分片数量对原始数据文件进行切片,得到多个小文件;
5、任务管理模块初始化分片任务,将对应文件分片任务状态设置为INI(初始状态);然后将主任务ID和分片任务ID封装成为分片任务对象,发送到RabbitMQ消息队列;
本申请实施例中,文件入库主任务和分片任务的数据结构如下:
表1文件入库主任务的数据结构
表2分片任务的数据结构
6、数据入库节点监听RabbitMQ消息队列中的分片任务,执行分片任务并更新分片任务状态,数据入库节点的数量为多个,多个数据入库节点之间并行;
数据入库节点执行分片任务并更新分片任务状态具体为:
(1)一个数据入库节点接取一个分片任务,将该分片任务的分片任务状态更新为执行中;
(2)数据入库节点解析分片消息对象,根据分片任务ID查询对应分片任务,获取小文件路径,查找小文件是否存在,若不存在,则将小文件对应的分片任务的分片任务状态更新为失败,否则,调用文件解析策略对小文件进行文件解析;
(3)对小文件中读取到的数据使用批量入库策略,每次批量入库后更新失败数量,记录失败数据,若失败数量超过预设置的批传阈值,则停止文件解析入库,小文件对应的分片任务的分片任务状态更新为失败(STOP),若失败数量不超过预设置的批传阈值且小文件中的全部数据已解析入库,则将小文件对应的分片任务的分片任务状态更新为结束,否则,重复此步骤。
本申请实施例中,基于上传失败的数据条数确定失败数量,这样对失败数据的把控更为精准,批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,此处可取200,若存在上传失败的数据,则执行失败重试机制,即将W条数据逐条进行重试,判断是否成功,若仍存在上传失败的数据,则记录失败数据,将上传失败的数据条数作为此次批量入库的失败数量,将当前的失败数量与此次批量入库的失败数量相加。
此外,也可以基于批量上传失败的次数确定失败数量,这样统计更为简单,批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,若存在上传失败的数据,则将W条数据逐条进行重试,若仍存在上传失败的数据,则记录失败数据,将此次批量上传的状态标记为失败状态,并将当前的失败数量的值加1。
具体的,设置一个失败数据表用以存储入库失败的数据,通过计数报警模块(使用Redis存储处理的成功/失败数量)进行统计失败数量/成功数量,计数报警模块判断失败数量是否超过预设置的批传阈值,并将失败数量/成功数量/分片任务状态更新至分片任务表。
6、检查文件入库主任务下的多个分片任务的分片任务状态,更新文件入库主任务的状态,具体为:
若文件入库主任务下的多个分片任务均已被执行(即不存在INI的分片任务),则检查分片任务状态为失败(STOP)的分片任务数量是否大于预设置的分片上传阈值,若大于等于预设置的分片上传阈值,则将文件入库主任务的状态更新为失败(FAIL),执行预设置的任务失败策略,若为0,则将文件入库主任务的状态更新为成功(SUCC),若大于0且小于预设置的分片上传阈值,则将文件入库主任务的状态更新为成功(SUCC),执行预设置的数据丢失策略;
若文件入库主任务下的多个分片任务还未被全部执行,则继续等待。
此外,若文件入库主任务下分片任务状态为失败的分片任务数量为0,还执行:删除原始数据文件切片得到的多个小文件,避免占用存储空间。
其中,任务失败策略和数据丢失策略可以是发出提示,人工介入,也可以是等待空闲时段,重试文件入库主任务、重传丢失数据,等等,本领域技术人员可以按照内部工作流程和需求对此进行设置,在此不再一一赘述。
下面,以大小为415MB的文件入库为例,对上述入库方法和入库系统进行说明如下:
1、待入库文件demoData.dat,存在地址为nas存储服务器/data/input目录下;初始环境中设定文件处理节点数为3,数据入库节点数量为5;
2、任务管理模块创建主任务,并在BATCH_BIG_FILE_JOB表中记录;
3、任务管理模块读取demoData.dat文件的总行数为n,文件大小为415M,根据设定的算法,分片数量clip_count=max(415/50M,5),即等于9;
4、任务管理模块将原始数据文件拆分为9个小文件,每个文件数据量为n/9;小文件名称命名demoData_clip001.dat至demoData_clip009.dat
5、更新BATCH_BIG_FILE_JOB表中分片数量,并在BATCH_SEGMENT_FILE_JOB表中创建每个分片任务的记录;并将分片任务的标识信息发送到MQ消息队列;
6、数据入库节点接收到分片任务的标识信息id后,从BATCH_SEGMENT_FILE_JOB表中读取分片文件地址,并开始读取分片文件并处理数据入库;这个过程中,因为是从mq获取分片任务,多节点并行处理,速度会很快,单个节点处理完一个小文件后,会更新BATCH_SEGMENT_FILE_JOB表中的数据处理结果和状态;
7、批量入库的入库处理逻辑会对成功和失败的数据进行redis计数;
8、计数报警模块会监控该分片处理中的成功/失败数量,如果失败数量超过批传阈值则分片任务执行失败,会将分片任务还未处理的数据终止解析上传,且更新BATCH_SEGMENT_FILE_JOB表分片任务状态JOB_STATUS为STOP,更新分片任务的失败数量FAIL_COUNT字段,否则,继续进行解析上传,记录失败数据;
9、检查所有分片任务的分片任务状态,更新BATCH_BIG_FILE_JOB表状态;
10、最后,BATCH_BIG_FILE_JOB表状态为SUCC时,任务管理模块会删除分片小文件demoData_clip001.dat至demoData_clip009.dat。
本申请将单个大数据文件拆分为多个小文件,然后将分片任务发送到RabbitMQ消息队列;通过多个数据入库节点监听消息队列,获取到待处理的分片任务后,读取分片任务信息,并读取对应的小文件并解析入库。在数据源文件读取、处理、数据入库的各个环节,本申请方案是采用多节点路由方式,多个文件处理节点和多个数据入库节点能保障当单一节点出现故障时,系统仍然可以使用,保障了系统的高可用性,且多个数据入库节点并行执行,通过扩展数据入库节点,控制小批量及时处理的方式,达到了高性能。
文件分片数量是根据数据源文件大小和节点数据动态计算得到的,可以提高整体处理性能。
在小文件入库处理的过程中统计成功和失败数据数量,实现动态容错,也提高了系统可用性。
此外,在本地使用Java方式将单个大数据文件拆分为多个小文件,使用Redis统计失败数量,使用RabbitMQ管理分片任务,对平台本地环境没有依赖。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种分布式数据库数据导入方法,其特征在于,包括:
S1、创建文件入库主任务;
S2、基于所述文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定所述原始数据文件的分片数量;
S3、根据分片数量对所述原始数据文件进行切片,得到多个小文件;
S4、创建对应分片数量的分片任务,所述分片任务至少包括主任务标识、分片任务标识、分片任务状态、分片任务对应的小文件的路径,将分片任务发送到RabbitMQ消息队列;
S5、数据入库节点监听RabbitMQ消息队列中的分片任务,执行所述分片任务并更新分片任务状态,所述数据入库节点的数量为多个,多个数据入库节点之间并行;
S6、检查所述文件入库主任务下的多个分片任务的分片任务状态,更新所述文件入库主任务的状态。
2.根据权利要求1所述的一种分布式数据库数据导入方法,其特征在于,所述确定所述原始数据文件的分片数量具体为:
clip_count=max(Data/D,K)
其中,clip_count为分片数量,Data为所述原始数据文件的大小,D为预设置的文件大小,K为数据入库节点的数量。
3.根据权利要求1所述的一种分布式数据库数据导入方法,其特征在于,所述文件处理节点还包括至少一个备用的文件处理节点。
4.根据权利要求1所述的一种分布式数据库数据导入方法,其特征在于,所述数据入库节点执行所述分片任务并更新分片任务状态具体为:
(1)一个数据入库节点接取一个分片任务,将该分片任务的分片任务状态更新为执行中;
(2)数据入库节点解析所述分片任务获取对应的小文件的路径,查找小文件是否存在,若不存在,则将小文件对应的分片任务的分片任务状态更新为失败,否则,对小文件进行文件解析;
(3)对所述小文件中的数据使用批量入库策略,每次批量入库后更新失败数量,记录失败数据,若失败数量超过预设置的批传阈值,则停止文件解析入库,所述小文件对应的分片任务的分片任务状态更新为失败,若失败数量不超过预设置的批传阈值且小文件中的全部数据已解析入库,则将所述小文件对应的分片任务的分片任务状态更新为结束,否则,重复此步骤。
5.根据权利要求4所述的一种分布式数据库数据导入方法,其特征在于,所述批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,若存在上传失败的数据,则将W条数据逐条进行重试,若仍存在上传失败的数据,则记录失败数据,将上传失败的数据条数作为此次批量入库的失败数量,将当前的失败数量与此次批量入库的失败数量相加。
6.根据权利要求4所述的一种分布式数据库数据导入方法,其特征在于,所述批量入库策略和更新失败数量具体为:
每次读取W条数据进行入库,W为预设置的批传数量,若存在上传失败的数据,则将W条数据逐条进行重试,若仍存在上传失败的数据,则记录失败数据,将此次批量上传的状态标记为失败状态,并将当前的失败数量的值加1。
7.根据权利要求4所述的一种分布式数据库数据导入方法,其特征在于,更新所述文件入库主任务的状态具体为:
若所述文件入库主任务下的多个分片任务均已被执行,则检查分片任务状态为失败的分片任务数量是否大于预设置的分片上传阈值,若大于等于预设置的分片上传阈值,则将所述文件入库主任务的状态更新为失败,执行预设置的任务失败策略,若为0,则将所述文件入库主任务的状态更新为成功,若大于0且小于预设置的分片上传阈值,则将所述文件入库主任务的状态更新为成功,执行预设置的数据丢失策略;
若所述文件入库主任务下的多个分片任务还未被全部执行,则继续等待。
8.根据权利要求7所述的一种分布式数据库数据导入方法,其特征在于,若所述文件入库主任务下分片任务状态为失败的分片任务数量为0,还执行:删除所述原始数据文件切片得到的多个小文件。
9.根据权利要求1所述的一种分布式数据库数据导入方法,其特征在于,所述存储模块为NAS存储模块,文件处理节点和数据入库节点以共享方式读写所述NAS存储模块上的文件。
10.一种分布式数据库数据导入系统,其特征在于,包括存储模块、文件处理节点、数据入库节点、分布式数据库模块、RabbitMQ消息队列模块、调度模块和任务管理模块,所述任务管理模块连接调度模块、文件处理节点和RabbitMQ消息队列模块,所述数据入库节点连接存储模块、分布式数据库模块和RabbitMQ消息队列模块;
所述调度模块用于创建文件入库主任务;
所述任务管理模块执行以下步骤:
基于所述文件入库主任务,调用文件处理节点从存储模块上查找原始数据文件,确定所述原始数据文件的分片数量;根据分片数量对所述原始数据文件进行切片,得到多个小文件;创建对应分片数量的分片任务,所述分片任务至少包括主任务标识、分片任务标识、分片任务状态、分片任务对应的小文件的路径,将分片任务发送到RabbitMQ消息队列;检查所述文件入库主任务下的多个分片任务的分片任务状态,更新所述文件入库主任务的状态;
所述数据入库节点监听RabbitMQ消息队列中的分片任务,执行所述分片任务并更新分片任务状态,所述数据入库节点的数量为多个,多个数据入库节点之间并行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384278.2A CN116501783A (zh) | 2023-04-12 | 2023-04-12 | 一种分布式数据库数据导入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384278.2A CN116501783A (zh) | 2023-04-12 | 2023-04-12 | 一种分布式数据库数据导入方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116501783A true CN116501783A (zh) | 2023-07-28 |
Family
ID=87319463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310384278.2A Pending CN116501783A (zh) | 2023-04-12 | 2023-04-12 | 一种分布式数据库数据导入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501783A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932252A (zh) * | 2023-09-18 | 2023-10-24 | 北京冠群信息技术股份有限公司 | 一种基于批量数据导入流水线的异步任务补偿方法及装置 |
CN117251508A (zh) * | 2023-09-22 | 2023-12-19 | 湖南长银五八消费金融股份有限公司 | 一种借据批量入账方法、装置、设备及存储介质 |
-
2023
- 2023-04-12 CN CN202310384278.2A patent/CN116501783A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932252A (zh) * | 2023-09-18 | 2023-10-24 | 北京冠群信息技术股份有限公司 | 一种基于批量数据导入流水线的异步任务补偿方法及装置 |
CN116932252B (zh) * | 2023-09-18 | 2024-01-26 | 北京冠群信息技术股份有限公司 | 一种基于批量数据导入流水线的异步任务补偿方法及装置 |
CN117251508A (zh) * | 2023-09-22 | 2023-12-19 | 湖南长银五八消费金融股份有限公司 | 一种借据批量入账方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422853B2 (en) | Dynamic tree determination for data processing | |
KR101616967B1 (ko) | 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선 | |
US7340491B2 (en) | Methods and apparatus for data preservation and software distribution within an enterprise system | |
US8943103B2 (en) | Improvements to query execution in a parallel elastic database management system | |
CN116501783A (zh) | 一种分布式数据库数据导入方法及系统 | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
US8150889B1 (en) | Parallel processing framework | |
US20140067884A1 (en) | Atomic incremental load for map-reduce systems on append-only file systems | |
US7877757B2 (en) | Work item event monitor for procession of queued events | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
EP2534569B1 (en) | System and method for managing replicas of objects in a distributed storage system | |
JP2003296171A (ja) | 電子帳票管理方法及びプログラム | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN115185787B (zh) | 处理事务日志的方法及装置 | |
CN112506870A (zh) | 数据仓库增量更新方法、装置及计算机设备 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN112199432A (zh) | 一种基于分布式的高性能数据etl装置及控制方法 | |
CN112905676A (zh) | 一种数据文件的导入方法及装置 | |
US11915044B2 (en) | Distributed task assignment in a cluster computing system | |
WO2022261249A1 (en) | Distributed task assignment, distributed alerts and supression management, and artifact life tracking storage in a cluster computing system | |
CN113360576A (zh) | 一种基于Flink Streaming的电网海量数据实时处理方法及装置 | |
US7856507B2 (en) | Data transmission process | |
KR20160145250A (ko) | 가상 머지를 지원하는 셔플 내장형 분산 스토리지 시스템 및 그 방법 | |
CN107102901A (zh) | 一种任务处理方法和装置 |
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 |