CN116244256A - 一种数据入库方法、装置、存储介质及电子设备 - Google Patents

一种数据入库方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN116244256A
CN116244256A CN202111493906.8A CN202111493906A CN116244256A CN 116244256 A CN116244256 A CN 116244256A CN 202111493906 A CN202111493906 A CN 202111493906A CN 116244256 A CN116244256 A CN 116244256A
Authority
CN
China
Prior art keywords
data
target
theme
offset
offset range
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
Application number
CN202111493906.8A
Other languages
English (en)
Inventor
徐陇浙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN202111493906.8A priority Critical patent/CN116244256A/zh
Publication of CN116244256A publication Critical patent/CN116244256A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据入库方法、装置、存储介质及电子设备,所述方法包括:基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;分别将各个第一偏移量范围写入第二主题中;响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。本发明实施例的方案,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。

Description

一种数据入库方法、装置、存储介质及电子设备
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据入库方法、装置、存储介质及电子设备。
背景技术
传统数据仓库系统(如Hive)中,通常采用orc、parquet、json、txt等格式将数据存储在分布式文件系统(如HDFS)上。为了提升数据的查询和分析性能,通常需要将数据积攒到一定的数据量再生成一个文件。常见方案是,数据入库时先进入分布式消息队列(如Kafka、RocketMQ、RabbitMQ等)做缓冲,再由流式处理服务从分布式消息队列中消费数据,当消费数据积攒到一定数据量后再生成归档文件,存储在分布式文件系统上以供数据查询或分析。
相关技术中,数据消费进程(也即消费者)从分布式消息队列主题中消费数据,按时间或数据量对数据进行分批,每批数据生成一个文件,文件生成完毕后提交偏移量offset(也即消费者消费数据的进度)到分布式消息队列的消费者组。然而,如果先提交offset,再生成文件,就会存在原子性问题:offset已经提交,但文件未保存完成,此时消费者故障,会导致数据丢失。反过来,如果先生成文件,再提交offset,也存在一定问题:文件已生成,但未提交offset,此时有消费者故障或失联触发了重均衡,会导致这批数据的offset无法被提交到分布式消息队列的消费者组,此时文件已经产生,重均衡后这批数据会被其他消费进程消费并产生新的文件,导致该批数据重复。而在数据仓库系统中,海量数据去重处理通常会消耗较多系统资源,为集群带来不必要的性能压力。
发明内容
本发明实施例提供一种数据入库方法、装置、存储介质及电子设备,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。
第一方面,本发明实施例提供了一种数据入库方法,包括:
基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;
分别将各个第一偏移量范围写入第二主题中;
响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;
从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
第二方面,本发明实施例还提供了一种数据入库装置,包括:
第一偏移量范围确定模块,用于基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;
第一偏移量范围写入模块,用于分别将各个第一偏移量范围写入第二主题中;
目标偏移量范围读取模块,用于响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;
目标数据写入模块,用于从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的数据入库方法。
第四方面,本发明实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的数据入库方法。
本发明实施例提供了一种数据入库方案,基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;分别将各个第一偏移量范围写入第二主题中;响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。本发明实施例提供的技术方案,对某一主题中待处理数据预先分批,并分别将每批数据的数据偏移量范围作为一条数据插入另一主题中,然后再根据预先确定好的数据分批,异步生成数据库文件,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。
附图说明
图1是本发明一实施例提供的一种数据入库方法的流程图;
图2是本发明实施例提供的数据入库的过程示意图;
图3是本发明另一实施例提供的一种数据入库装置的结构示意图;
图4是本发明另一实施例中的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1为本发明一实施例提供的一种数据入库方法的流程图,本发明实施例可适用于对数据进行入库的情况,该方法可以由数据入库装置来执行,该装置可由硬件和/或软件组成,并一般可集成在电子设备中。如图1所示,该方法具体包括如下步骤:
步骤110,基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围。
其中,主题topic为分布式消息队列中的一种类型。例如,在分布式消息系统中可以包含生产者、消费者和主题topic,其中,生产者在写入数据时,会将数据发布到对应类型的主题topic中,消费者从主题topic中消费数据。
在本发明实施例中,可基于预设算法对写入第一主题中的数据进行批次划分。示例性的,可以按照数据的写入时间对第一主题中的数据进行划分,其中,可以将同一时间段写入第一主题的数据划分为一批数据,例如,将8:00-8:05这一时间段写入第一主题的数据作为同一批数据,将8:05-8:10这一时间段写入第一主题的数据作为同一批数据,将8:10-8:15这一时间段写入第一主题的数据作为同一批数据,依次类推。又示例性的,还可以按照数据量的多少对第一主题中的数据进行划分,例如,可从第一条数据写入第一主题开始,实时对写入第一主题的数据量进行监控,当数据量达到预设数据量阈值(如1000条)时,将第一主题中1-1000条数据划分为同一批数据,然后继续对写入第一主题的数据量进行监控,当数据量达到2000条时,将第一主题中第1001-2000条数据划分为同一批数据,依次类推。需要说明的是,本发明实施例对第一主题中数据的批次划分算法不做限定。
偏移量offset为消费者消费数据的进度或生产者生产数据的进度。由于生产者在将数据写入第一主题的同时,消费者也在从第一主题中消费数据,而生产者写入数据的速度与消费者消费数据的速度不一定一致,从而导致写入第一主题的数据量与从第一主题中消费数据的数据量存在偏差,也即生产者生产数据的进度与消费者消费数据的进度存在偏差,可根据生产者生产数据的进度与消费者消费数据的进度确定偏移量范围。在本发明实施例中,分别确定各个批次数据的偏移量范围,将各个批次数据的偏移量范围称为第一偏移量范围。
其中,第一主题中可以包括一个分区或多个分区。分区partition实际上是一个队列,一个主题topic由一个或多个分区组成,写入到主题topic的数据会基于特定策略分发到各个分区中。当第一主题中包含多个分区时,可基于预设算法对第一主题中的各个分区的数据进行批次划分,并分别确定第一主题的各个分区中属于同一批次数据的第一偏移量范围。可以理解的是,当第一主题中包含多个分区时,同一批次数据的第一偏移量范围可以包括第一主题中各个分区的偏移量范围。
步骤120,分别将各个第一偏移量范围写入第二主题中。
其中,第二主题可以理解为用于插入所述第一偏移量范围的消息队列。示例性的,可判断分布式消息系统(如kafka)中是否存在空闲的主题,若存在,则将该空闲的主题作为第二主题,否则,在分布式消息系统中创建一个新的主题作为第二主题。在本发明实施例中,将第一主题中同一批次数据的第一偏移量范围作为一条数据写入第二主题中。可以理解的是,第一主题中各个批次数据的第一偏移量范围为写入第二主题的各个数据。其中,第二主题中可以包含一个分区也可以包括多个分区,第二主题中包含分区的数量与第一主题中包含分区的数量可以相同,也可以不同,本发明实施例对第二主题中分区的数量不做限定。当第二主题中包含多个分区时,可基于预先设定的数据写入策略,将第一主题中各个批次的第一偏移量范围写入第二主题的各个分区中。
步骤130,响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围。
在本发明实施例中,当监测到第二主题的消费者创建成功时,可确定数据入库事件被触发,其中,第二主题的消费者可以为一个也可以为多个,本发明实施例对第二主题的消费者的数量不做限定。可选的,当检测到用户输入的数据入库指令时,可确定数据入库事件被触发。需要说明的是,本发明实施例对数据入库事件的触发条件不做限定。当检测到数据入库事件被触发时,基于与第二主题对应的消费者从第二主题中读取数据。可以理解的是,从第二主题中读取的数据为第一主题的所有分批数据对应的第一偏移量范围中的其中一个或多个,也即将从第二主题中读取的各个第一偏移量范围分别作为目标偏移量范围。当第二主题对应的消费者为多个时,可以将各个消费者读取的数据均分别作为目标偏移量范围。
步骤140,从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
在本发明实施例中,当从第二主题中读取目标偏移量范围后,从第一主题中确定与目标偏移量范围对应的数据,并第一主题中与目标偏移量范围对应的数据确定为目标数据,然后从第一主题中读取目标数据。可以理解的是,目标数据为当前待消费的数据,也即待写入数据库的数据。将目标数据写入基于目标偏移量范围命名的目标文件中,以保证目标数据写入文件的唯一性。可选的,在将所述目标数据写入目标文件中之前,还包括:基于散列算法计算所述目标偏移量范围的散列值,并将所述散列值作为所述目标文件的文件名。示例性的,基于MD5计算目标偏移量范围的散列值,如某目标偏移量范围的散列值为0253475B30A4C600504367FC192D1571,并将该散列值作为目标文件的文件名,例如:0253475B30A4C600504367FC192D1571.parquet。需要说明的是,本发明实施例对具体的散列算法不做限定。
在本发明实施例中,将目标文件保存于数据库中,也即将目标数据以目标文件的形式保存于数据库中,其中,数据库可以为分布式文件系统。可选的,将所述目标文件保存于数据库中,包括:判断数据库是否存在与所述目标文件同文件名的文件,若是,则将所述目标文件保存于所述数据库中,并基于所述目标文件覆盖所述同文件名的文件。具体的,采用覆盖写入方式,将目标文件写入数据库中,也即判断数据库中是否已经存储有与该目标文件同文件名的文件,若是,则基于目标文件覆盖同文件名的文件,也即将与目标文件同文件名的文件删除,将目标文件存储于数据库中。这样设置的好处在于,可以有效保证写入数据库的文件的唯一性,有效避免写入数据库的数据的重复。
可选的,在将所述目标数据写入目标文件中之后,还包括:将所述第二主题中消费数据的偏移量提交至与所述第二主题对应的消费者组。在本发明实施例中,在将目标数据写入目标文件中之后,将第二主题中当前消费数据的偏移量提交至对应的消费者组,以使消费者组对第二主题中当前消费数据的消费进度进行维护,从而方便消费者基于第二主题中当前消费数据的消费进度,从第二主题中读取当前未消费的数据,从而避免对第二主题中数据消费的重复。
本发明实施例提供了一种数据入库方法,基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;分别将各个第一偏移量范围写入第二主题中;响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。本发明实施例提供的技术方案,对某一主题中待处理数据预先分批,并分别将每批数据的数据偏移量范围作为一条数据插入另一主题中,然后再根据预先确定好的数据分批,异步生成数据库文件,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。
在一些实施例中,基于预设算法对第一主题中的数据进行批次划分,包括:每隔预设时长轮询获取第一主题的各个分区中生产数据的生产偏移量及所述第一主题的各个分区中当前消费数据的消费偏移量;针对所述第一主题中的各个分区,根据当前分区的所述生产偏移量及所述消费偏移量,确定所述当前分区中待消费数据的偏移量范围;其中,所述偏移量范围的起始偏移量为所述消费偏移量,所述偏移量范围的结束偏移量为所述生产偏移量;将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据。这样设置的好处在于,可对第一主题中的数据进行准确地批次划分,从而有助于确定各个批次数据的偏移量范围。
当生产者将数据写入主题中时,生产者每写入一条数据,写入主题的数据量就会增加1,也即生产偏移量就会增加1个计数,可以理解的是,生产偏移量为生产者将数据写入主题的数据条数。而且,生产偏移量随着数据的写入不断增加,也即生产偏移量为一个不断变化的量。同样的,消费者每从主题中消费一条数据,消费数据量就会增加1,也即消费偏移量就会增加1个计数,可以理解的是,消费偏移量为消费者从主题中消费数据的数据条数。而且,消费偏移量随着数据的消费不断增加,也即消费偏移量为一个不断变化的量。
在本发明实施例中,当第一主题中包含多个分区时,生产者将数据写入第一主题中的各个分区的进度可以相同,也可以不同;同样的,消费者从第一主题中的各个分区中消费数据的进度可以相同,也可以不同。示例性的,可以通过低阶API(ApplicationProgramming Interface,应用程序接口),每隔预设时长轮询获取第一主题中各个分区中生产数据的生产偏移量及第一主题中各个分区中当前消费数据的消费偏移量。需要说明的是,对于第一主题中各个分区中当前消费数据的消费偏移量的初始值均为0。分别根据当前轮询获取的第一主题中的各个分区的生产偏移量及消费偏移量,可确定各个分区的偏移量范围。具体的,各个分区的偏移量范围的起始偏移量为对应分区的消费偏移量,结束偏移量为对应分区的生产偏移量,也即偏移量范围为[消费偏移量,生产偏移量]。可以理解的是,各个分区的偏移量范围对应的数据为当前已经写入第一主题中但未被消费者消费的待消费数据。
示例性的,第一主题中包括三个分区,分别为第一分区partition1,第二分区partition2及第三分区partition3,对于第一次轮询获取的第一主题中各个分区的生产偏移量如下:第一分区partition1的生产偏移量为100,第二分区partition2的生产偏移量为130及第三分区partition3的生产偏移量为110;对于第一次轮询获取的第一主题中各个分区的消费偏移量均为0。则第一次轮询获取的第一主题中各个分区的偏移量范围如下:第一分区partition1的偏移量范围为[0,100],第二分区partition2的偏移量范围为[0,130]及第三分区partition3的偏移量范围为[0,110]。在发明实施例中,可将该次轮询获取的第一主题中各个分区的偏移量范围记录如下:
Figure BDA0003400207380000111
/>
Figure BDA0003400207380000121
在本发明实施例中,将每次轮询获取的第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据。可以理解的是,将第一次轮询获取的第一主题中各个分区的偏移量范围对应的数据划分为第一批次数据;将第二次轮询获取的第一主题中各个分区的偏移量范围对应的数据划分为第二批次数据,依次类推,从而实现对第一主题中数据的批次划分。可选的,在每次轮询获取第一主题中各个分区的偏移量范围后,可根据各个分区的偏移量范围计算该次轮询获取的偏移量范围对应的数据量,其中,数据量为各个分区对应的偏移量范围内包含数据量的和;当该次轮询获取的偏移量范围对应的数据量小于预设数据量阈值时,可等待一段时间后,再执行下次轮询操作,以增加该次轮询获取的第一主题中各个分区对应的偏移量范围,从而增加该次轮询划分该批数据的数据量。
其中,在基于上述轮询方式对第一主题中的各个分区内的数据进行批次划分后,将每次轮询获取的第一主题中各个分区对应的偏移量范围,作为第一主题中该批次数据的第一偏移量范围。可以理解的是,对于同一批次的第一偏移量范围由各个分区对应的偏移量范围组成。
在一些实施例中,在将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据之后,还包括:基于所述第一主题中各个分区的偏移量范围的结束偏移量,更新对应分区中当前消费数据的消费偏移量。在本发明实施例中,在每次轮询获取第一主题中各个分区的偏移量范围,并将各个分区的偏移量范围划分为同一批次数据后,基于该次轮询获取的各个分区的偏移量范围的结束偏移量更新对应分区的当前消费数据的消费偏移量。示例性的,第一次轮询获取的第一主题中各个分区的偏移量范围如下:第一分区partition1的偏移量范围为[0,100],第二分区partition2的偏移量范围为[0,130]及第三分区partition3的偏移量范围为[0,110],则在第一次轮询将第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据之后,第一主题中各个分区的当前消费数据的消费偏移量更新结果:第一分区partition1的当前消费数据的消费偏移量更新为100,第二分区partition2的当前消费数据的消费偏移量更新为130,第三分区partition3的当前消费数据的消费偏移量更新为110。具体的,在将第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据之后,可将基于第一主题中各个分区的偏移量范围的结束偏移量,提交至第一主题对应的消费者组,以使消费者组对消费者对第一主题中各个分区的数据消费进度进行维护。其中,消费者组group是用于维护消费者数据消费进度(即offset),消费者消费过程中会向其对应消费者组group提交offset,用于保存其当前消费进度,其中,多个消费者可以使用同一个group时,即共享同一组消费进度。
在一些实施例中,所述目标偏移量范围包括所述第一主题中各个分区的第二偏移量范围;在从所述第一主题中读取与所述目标偏移量范围对应的目标数据之前,还包括:确定所述目标偏移量范围对应所述第一主题中的各个目标分区及各个目标分区的第二偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,包括:从所述第一主题中的各个目标分区中分别读取与所述第二偏移量范围对应的目标数据。在本发明实施例中,当第一主题中包含多个分区时,写入第二主题中的各个数据(也即第一主题中各个批次数据的第一偏移量范围)由第一主题中各个分区的偏移量范围组成,因此,从第二主题中所读取的数据(也即目标偏移量范围)也包含第一主题中各个分区的偏移量范围,为了方便描述,将目标偏移量范围包含的第一主题中各个分区的偏移量范围称为第二偏移量范围。在本发明实施例中,确定目标偏移量范围对应的第一主题中的各个目标分区以及目标分区的第二偏移量范围,其中,目标分区可以理解为目标偏移量范围对应的第一主题中的数据在第一主题中所处的分区,第二偏移量范围可以理解为目标偏移量范围对应的第一主题中的数据,在所述第一主题的各个目标分区中对应的偏移量范围。在从第一主题中读取与目标偏移量范围对应的目标数据时,可直接从第一主题中的各个目标分区中分别读取与第二偏移量范围对应的目标数据。
图2为本发明实施例提供的数据入库的过程示意图。如图2所示,第一主题中包含三个分区(第一分区、第二分区和第三分区),对第一主题中的各个分区的数据进行批次划分后,将各个同一批次数据的第一偏移量范围(包括第一主题中各个分区的偏移量范围)写入第二主题的各个分区中,其中,第二主题中也包含三个分区(第一分区、第二分区和第三分区),数据入库服务中的包含三个服务节点(也即三个消费者),三个节点分别从第二主题的各个分区中读取数据,并根据读取数据的目标偏移量范围(包含第一主题中对应的目标分区及目标分区的第二偏移量范围),分别从第一主题中拉取数据,并将从第一主题中拉取的同一批次的数据生成对应的目标文件保存在分布式文件系统中。
图3为本发明另一实施例提供的一种数据入库装置的结构示意图。如图3所示,该装置包括:第一偏移量范围确定模块310、第一偏移量范围写入模块320、目标偏移量范围读取模块330和目标数据写入模块340。其中,
第一偏移量范围确定模块310,用于基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;
第一偏移量范围写入模块320,用于分别将各个第一偏移量范围写入第二主题中;
目标偏移量范围读取模块330,用于响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;
目标数据写入模块340,用于从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
本发明实施例提供了一种数据入库装置,基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;分别将各个第一偏移量范围写入第二主题中;响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。本发明实施例提供的技术方案,对某一主题中待处理数据预先分批,并分别将每批数据的数据偏移量范围作为一条数据插入另一主题中,然后再根据预先确定好的数据分批,异步生成数据库文件,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。
可选的,所述第一偏移量范围确定模块,用于:
每隔预设时长轮询获取第一主题的各个分区中生产数据的生产偏移量及所述第一主题的各个分区中当前消费数据的消费偏移量;
针对所述第一主题中的各个分区,根据当前分区的所述生产偏移量及所述消费偏移量,确定所述当前分区中待消费数据的偏移量范围;其中,所述偏移量范围的起始偏移量为所述消费偏移量,所述偏移量范围的结束偏移量为所述生产偏移量;
将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据。
可选的,所述装置还包括:
消费偏移量更新模块,用于在将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据之后,基于所述第一主题中各个分区的偏移量范围的结束偏移量,更新对应分区中当前消费数据的消费偏移量。
可选的,所述目标偏移量范围包括所述第一主题中各个分区的第二偏移量范围;
所述装置还包括:
第二偏移量范围确定模块,用于在从所述第一主题中读取与所述目标偏移量范围对应的目标数据之前,确定所述目标偏移量范围对应所述第一主题中的各个目标分区及各个目标分区的第二偏移量范围;
所述目标数据写入模块,用于:
从所述第一主题中的各个目标分区中分别读取与所述第二偏移量范围对应的目标数据。
可选的,还包括:
文件名确定模块,用于在将所述目标数据写入目标文件中之前,基于散列算法计算所述目标偏移量范围的散列值,并将所述散列值作为所述目标文件的文件名。
可选的,所述目标数据写入模块,用于:
判断数据库是否存在与所述目标文件同文件名的文件,若是,则将所述目标文件保存于所述数据库中,并基于所述目标文件覆盖所述同文件名的文件。
可选的,还包括:
偏移量记录模块,用于在将所述目标数据写入目标文件中之后,将所述第二主题中消费数据的偏移量提交至与所述第二主题对应的消费者组。
上述装置可执行本发明前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本发明实施例中详尽描述的技术细节,可参见本发明前述所有实施例所提供的方法。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的数据入库方法。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的数据入库操作,还可以执行本发明任意实施例所提供的数据入库方法中的相关操作。
本发明实施例提供了一种电子设备,该电子设备中可集成本发明实施例提供的数据入库装置。图4为本发明实施例提供的一种电子设备的结构框图。电子设备400可以包括:存储器401,处理器402及存储在存储器401上并可在处理器运行的计算机程序,所述处理器402执行所述计算机程序时实现如本发明实施例所述的数据入库方法。
本发明实施例中提供的电子设备,基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;分别将各个第一偏移量范围写入第二主题中;响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。本发明实施例提供的技术方案,对某一主题中待处理数据预先分批,并分别将每批数据的数据偏移量范围作为一条数据插入另一主题中,然后再根据预先确定好的数据分批,异步生成数据库文件,可以有效避免从主题中消费数据生成数据库文件时,数据重复或丢失的情况发生,确保数据的一致性。
上述实施例中提供的数据入库装置、存储介质及电子设备可执行本发明任意实施例所提供的数据入库方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据入库方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种数据入库方法,其特征在于,包括:
基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;
分别将各个第一偏移量范围写入第二主题中;
响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;
从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
2.根据权利要求1所述的方法,其特征在于,基于预设算法对第一主题中的数据进行批次划分,包括:
每隔预设时长轮询获取第一主题的各个分区中生产数据的生产偏移量及所述第一主题的各个分区中当前消费数据的消费偏移量;
针对所述第一主题中的各个分区,根据当前分区的所述生产偏移量及所述消费偏移量,确定所述当前分区中待消费数据的偏移量范围;其中,所述偏移量范围的起始偏移量为所述消费偏移量,所述偏移量范围的结束偏移量为所述生产偏移量;
将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据。
3.根据权利要求2所述的方法,其特征在于,在将所述第一主题中各个分区的偏移量范围对应的数据划分为同一批次数据之后,还包括:
基于所述第一主题中各个分区的偏移量范围的结束偏移量,更新对应分区中当前消费数据的消费偏移量。
4.根据权利要求2所述的方法,其特征在于,所述目标偏移量范围包括所述第一主题中各个分区的第二偏移量范围;
在从所述第一主题中读取与所述目标偏移量范围对应的目标数据之前,还包括:
确定所述目标偏移量范围对应所述第一主题中的各个目标分区及各个目标分区的第二偏移量范围;
从所述第一主题中读取与所述目标偏移量范围对应的目标数据,包括:
从所述第一主题中的各个目标分区中分别读取与所述第二偏移量范围对应的目标数据。
5.根据权利要求1所述的方法,其特征在于,在将所述目标数据写入目标文件中之前,还包括:
基于散列算法计算所述目标偏移量范围的散列值,并将所述散列值作为所述目标文件的文件名。
6.根据权利要求1所述的方法,其特征在于,将所述目标文件保存于数据库中,包括:
判断数据库是否存在与所述目标文件同文件名的文件,若是,则将所述目标文件保存于所述数据库中,并基于所述目标文件覆盖所述同文件名的文件。
7.根据权利要求1所述的方法,其特征在于,在将所述目标数据写入目标文件中之后,还包括:
将所述第二主题中消费数据的偏移量提交至与所述第二主题对应的消费者组。
8.一种数据入库装置,其特征在于,包括:
第一偏移量范围确定模块,用于基于预设算法对第一主题中的数据进行批次划分,分别确定各个批次数据的第一偏移量范围;
第一偏移量范围写入模块,用于分别将各个第一偏移量范围写入第二主题中;
目标偏移量范围读取模块,用于响应于数据入库事件被触发,基于消费者从所述第二主题中读取数据,并将所读取的数据作为目标偏移量范围;
目标数据写入模块,用于从所述第一主题中读取与所述目标偏移量范围对应的目标数据,并将所述目标数据写入目标文件中,以将所述目标文件保存于数据库中;其中,所述目标文件为基于所述目标偏移量范围命名的文件。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现如权利要求1-7中任一所述的数据入库方法。
10.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要1-7中任一所述的数据入库方法。
CN202111493906.8A 2021-12-08 2021-12-08 一种数据入库方法、装置、存储介质及电子设备 Pending CN116244256A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111493906.8A CN116244256A (zh) 2021-12-08 2021-12-08 一种数据入库方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111493906.8A CN116244256A (zh) 2021-12-08 2021-12-08 一种数据入库方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN116244256A true CN116244256A (zh) 2023-06-09

Family

ID=86626397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111493906.8A Pending CN116244256A (zh) 2021-12-08 2021-12-08 一种数据入库方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN116244256A (zh)

Similar Documents

Publication Publication Date Title
US10255108B2 (en) Parallel execution of blockchain transactions
US8694647B2 (en) Read-only operations processing in a paxos replication system
CN111078147A (zh) 一种缓存数据的处理方法、装置、设备及存储介质
EP2225633B1 (en) Data parallel production and consumption
CN110765076B (zh) 数据存储方法、装置、电子设备及存储介质
CN112256433B (zh) 基于Kafka集群的分区迁移方法和装置
CN107632781B (zh) 一种分布式存储多副本快速校验一致性的方法及存储结构
CN113867645A (zh) 数据迁移和数据读写方法、装置、计算机设备及存储介质
US20130024551A1 (en) Enabling cluster scaling
US9336250B1 (en) Systems and methods for efficiently backing up data
CN108132759B (zh) 一种文件系统中管理数据的方法和装置
CN115840654B (zh) 消息的处理方法、系统、计算设备及可读存储介质
EP3264254A1 (en) System and method for a simulation of a block storage system on an object storage system
US10599530B2 (en) Method and apparatus for recovering in-memory data processing system
CN111522598A (zh) 嵌入式设备的重启信息记录方法及装置
CN116244256A (zh) 一种数据入库方法、装置、存储介质及电子设备
CN116339626A (zh) 数据处理方法、装置、计算机设备和存储介质
WO2017058148A1 (en) Executing transactions based on success or failure of the transactions
CN114489770A (zh) 灰度发布方法、装置、计算机设备和存储介质
CN113806389A (zh) 一种数据处理方法、装置、计算设备与存储介质
CN109947721B (zh) 一种小文件处理方法和装置
CN116932779B (zh) 知识图谱的数据处理方法和装置
CN115604290B (zh) Kafka消息执行方法、装置、设备及存储介质
EP3984200B1 (en) Clustered coherent cloud read cache without coherency messaging
US20240095076A1 (en) Accelerating data processing by offloading thread computation

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