CN112711627A - 一种Greenplum数据库的数据导入方法、装置及设备 - Google Patents

一种Greenplum数据库的数据导入方法、装置及设备 Download PDF

Info

Publication number
CN112711627A
CN112711627A CN202011604354.9A CN202011604354A CN112711627A CN 112711627 A CN112711627 A CN 112711627A CN 202011604354 A CN202011604354 A CN 202011604354A CN 112711627 A CN112711627 A CN 112711627A
Authority
CN
China
Prior art keywords
data
file
data file
scanning
external
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
Application number
CN202011604354.9A
Other languages
English (en)
Other versions
CN112711627B (zh
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.)
Beijing Inspur Data Technology Co Ltd
Original Assignee
Beijing Inspur Data Technology 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 Beijing Inspur Data Technology Co Ltd filed Critical Beijing Inspur Data Technology Co Ltd
Priority to CN202011604354.9A priority Critical patent/CN112711627B/zh
Publication of CN112711627A publication Critical patent/CN112711627A/zh
Application granted granted Critical
Publication of CN112711627B publication Critical patent/CN112711627B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种Greenplum数据库的数据导入方法,为了充分利用Greenplum数据库中大规模并行处理架构的优势,通过并行文件分发程序和外部表技术实现海量外部数据的并行导入,降低了数据导入的时间成本,提升了数据导入效率。此外,通过生成外部数据文件的记录信息,避免了数据多次导入时重复扫描之前扫描成功的数据,也避免了外部数据文件导入多个目标表时重复扫描外部数据,节省了IO资源,进一步提升数据导入效率。最后,及时清理数据导入失败时因数据回滚产生的垃圾空间,从而提高了空间的利用率。此外,本申请还提供了一种Greenplum数据库的数据导入装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应。

Description

一种Greenplum数据库的数据导入方法、装置及设备
技术领域
本申请涉及计算机技术领域,特别涉及一种Greenplum数据库的数据导入方法、装置、设备及可读存储介质。
背景技术
在如今的大数据时代,随着数据量爆炸式的增长、数据种类的增多和数据处理需求的多样化,催生出了很多数据处理平台。
Greenplum作为并行计算的大数据分析处理平台,需要导入海量数据,并在导入时对输入数据进行简单的转换和处理。在执行数据导入时,如果数据存在格式错误,则整个导入数据的SQL命令就会失败,原先已导入的数据会被回滚,不会有任何数据导入到目标表中。而且,在导入失败之后,目标表仍然包含在错误发生前已经导入的行,但是用户无法访问这些行,这些数据行成为垃圾数据,它们仍占据磁盘空间,从而造成存储空间的浪费。
另外,当出现其他异常情况,如内存不足,SQL命令同样会失败,任何数据不会被导入。而当再次执行SQL导入数据时,则又会重新开始扫描整个外部数据并执行导入操作,原先已扫描成功的数据也要重新扫描,造成IO资源的浪费。而且,将同一外部数据导入多个目标表时,每个导入操作都会扫描外部数据一遍,进一步造成IO资源的浪费。对于大规模的数据,这无疑会浪费太多时间,严重影响数据导入效率。
因此,对于大规模数据如何高效的导入Greenplum数据库,避免资源的浪费,是亟待本领域技术人员解决的问题。
发明内容
本申请的目的是提供一种Greenplum数据库的数据导入方法、装置、设备及可读存储介质,用以解决当前的Greenplum数据库数据导入方案导入效率低下,浪费IO资源的问题。其具体方案如下:
第一方面,本申请提供了一种Greenplum数据库的数据导入方法,包括:
生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
通过并发文件分发程序将所述元组导入Greenplum数据库;
在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
优选的,在所述生成外部数据文件的记录信息之前,还包括:
根据可读外部表,确定待导入的外部数据文件。
优选的,所述生成外部数据文件的记录信息,包括:
根据预设的记录信息结构,生成所述外部数据文件的记录信息。
优选的,所述在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化之前,还包括:
循环检测是否有数据导入的SQL命令下发。
优选的,所述根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成,包括:
根据所述数据文件ID判断所述外部数据文件是否发生变化;
若发生变化,则更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息,并生成变化后的外部数据文件的记录信息;
若未发生变化,根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成。
优选的,所述数据文件ID包括以下任意一项或多项:数据文件哈希值、数据文件大小和数据文件修改时间。
优选的,所述通过并发文件分发程序将所述元组导入Greenplum数据库,包括:
根据目标表定义的数据分布策略,通过并发文件分发程序将所述元组分发至相应的Primary实例,以将所述元组导入Greenplum数据库。
第二方面,本申请提供了一种Greenplum数据库的数据导入装置,包括:
记录信息初始化模块:用于生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
数据文件检测模块:用于在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
未扫描数据行确定模块:用于若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
外部数据扫描模块:用于对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
数据导入模块:用于通过并发文件分发程序将所述元组导入Greenplum数据库;
记录信息更新模块:用于在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
垃圾回收模块:用于在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
第三方面,本申请提供了一种Greenplum数据库的数据导入设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的Greenplum数据库的数据导入方法。
第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的Greenplum数据库的数据导入方法。
本申请所提供的一种Greenplum数据库的数据导入方法,为了充分利用Greenplum数据库中大规模并行处理架构的优势,通过并行文件分发程序和外部表技术实现海量外部数据的并行导入,降低了数据导入的时间成本,提升了数据导入效率。此外,通过生成外部数据文件的记录信息,避免了数据多次导入时重复扫描之前扫描成功的数据,也避免了外部数据文件导入多个目标表时重复扫描外部数据,节省了IO资源,进一步提升数据导入效率。最后,及时清理数据导入失败时因数据回滚产生的垃圾空间,从而提高了空间的利用率。
此外,本申请还提供了一种Greenplum数据库的数据导入装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的一种Greenplum数据库的数据导入方法实施例一的流程图;
图2为本申请所提供的一种Greenplum数据库的数据导入方法实施例二的实施过程示意图;
图3为本申请所提供的一种Greenplum数据库的数据导入方法实施例二中记录信息结构示意图;
图4为本申请所提供的一种Greenplum数据库的数据导入装置实施例的功能框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的核心是提供一种Greenplum数据库的数据导入方法、装置、设备及可读存储介质,避免了数据导入过程中IO资源的浪费,节省了时间成本,提升了数据导入效率。
在介绍本申请的具体实施例之前,先对相关概念进行介绍。
Greenplum数据库:简称GPDB,是开源分布式数据库,采用无共享(Share-Nothing)的MPP(Massively Parallel Processing,大规模并行处理)架构,主要用于大规模数据处理、数据仓库、数据挖掘等应用。
MPP架构:将任务并行的分散到多个节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。Greenplum采用的MPP架构,通常由一个PrimaryMaster节点、一个Standby Master节点以及多个Segment节点组成,节点之间通过高速网络互连。Segment节点又进一步包括Primary Segment和Mirror Segment。
Primary Segment:Greenplum的数据节点,每个数据节点可以初始化多个Primary实例,用于存储用户数据。
Mirror Segment:Greenplum的备份节点,每个数据节点的Primary实例的镜像均部署在其他的节点上。
SQL:Structured Query Language,结构化查询语言,用于存取数据以及查询、更新和管理关系数据库系统,比如SELECT和INSERT命令。
外部表:外部表的数据存储在外部(数据不被Greenplum管理),Greenplum中只有外部表的元数据信息。Greenplum支持很多外部数据源,比如HDFS、文件、各种关系数据库等和多种数据格式譬如Text、CSV、Avro、Parquet等。根据数据的并行导入和导出,可将外部表分为可读外部表和可写外部表。
可读外部表:用于将数据导入Greenplum数据库。
可写外部表:用于将数据从Greenplum数据库中导出。
gpfdist:Greenplum的并发文件分发程序,配合外部表的使用,它允许Greenplum数据库的Segment并行地从多个文件系统加载(导入)外部数据。Greenplum数据库对外部数据只有SELECT和INSERT两种操作。SELECT操作是读取外部数据每次获取一个元组(数据表中的一行数据),INSERT操作是每次向外部写入一个元组。
bitmap:连续的二进制位(bit),用于对大量整型数据做去重和查询。例如,给定5个数据,采用长度为5bit的bitmap,每个bit位分别对应这5个数据,并初始值全为0,如下:00000。把数据3存入bitmap,对应存储的位置从右向左数第3个的位置,将此bit置为1,如下:00100。
哈希(hash)分布:Greenlum最常用的数据分布方式。根据表定义的分布键计算用户数据的哈希值,然后把哈希值映射到某个segment上。
随机分布:随机分布会采用循环的方式将一次插入的数据存储到不同的节点上。随机性只在单个SQL中有效,不考虑跨SQL的情况。例如,如果每次插入一行数据到随机分布表中,最终的数据会全部保存在第一个节点上。
下面对本申请提供的一种Greenplum数据库的数据导入方法实施例一进行介绍,参见图1,实施例一包括:
S101、生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
S102、在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
S103、若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
S104、对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
S105、通过并发文件分发程序将所述元组导入Greenplum数据库;
S106、在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
S107、在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
具体的,本实施例预先设置以下模块,并基于这些模块实现上述S101至S107的过程:记录信息初始化模块、数据文件检测模块、未扫描数据行确定模块、外部数据扫描模块、数据导入模块、记录信息更新模块、垃圾回收模块。下面分别对各个模块进行介绍:
记录信息初始化模块用于根据可读外部表确定待导入的外部数据文件,生成外部数据文件的记录信息,其中记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位。数据文件ID用于表示外部数据文件是否发生变化;文件扫描标记位用于表示外部数据文件是否扫描完成;行扫描标记位用于表示每个数据行是否已扫描;删除标记位用于表示外部数据文件的记录信息是否有待删除。
如上所述,数据文件ID用于表示外部数据文件是否发生变化。因此,作为一种具体的实施方式,可以选用数据文件哈希值作为数据文件ID,当然,作为优选的实施方式,数据文件ID还可以包括其他信息,例如数据文件大小、数据文件最近的修改时间等。
循环检测是否有数据导入的SQL命令下发,有SQL命令下发时,数据文件检测模块用于根据数据文件ID和文件扫描标记位判断外部数据文件是否发生变化或扫描完成,在外部数据文件未发生变化且未扫描完成时,进入未扫描数据行确定模块。具体的,根据数据文件ID判断外部数据文件是否发生变化;若发生变化,则更新删除标记位,将外部数据文件的记录信息标记为待删除的记录信息,并生成变化后的外部数据文件的记录信息;若未发生变化,根据文件扫描标记位判断外部数据文件是否已经扫描完成。
未扫描数据行确定模块用于根据行扫描标记位确定外部数据文件中的未扫描数据行。
外部数据扫描模块用于对未扫描数据行进行扫描,根据可读外部表定义的行类型将每个数据行转化为一个元组,并更新行扫描标记位。
数据导入模块用于通过并发文件分发程序将元组导入Greenplum数据库。具体的,根据目标表定义的数据分布策略,通过并发文件分发程序将元组分发至相应的Primary实例,以将元组导入Greenplum数据库。这里的数据分布策略可以为哈希分布策略,也可以为随机分布策略。
记录信息更新模块用于在未扫描数据行全部导入完成时,更新删除标记位,将外部数据文件的记录信息标记为待删除的记录信息,以便于进行删除。
垃圾回收模块用于在未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
本实施例所提供一种Greenplum数据库的数据导入方法,为了充分利用Greenplum数据库中大规模并行处理架构的优势,通过并行文件分发程序和外部表技术实现海量外部数据的并行导入,降低了数据导入的时间成本,提升了数据导入效率。此外,通过生成外部数据文件的记录信息,避免了数据多次导入时重复扫描之前扫描成功的数据,也避免了外部数据文件导入多个目标表时重复扫描外部数据,节省了IO资源,进一步提升数据导入效率。最后,及时清理数据导入失败时因数据回滚产生的垃圾空间,从而提高了空间的利用率。
下面开始详细介绍本申请提供的一种Greenplum数据库的数据导入方法实施例二。
本实施例的主要目的在于:使用gpfdist并行文件分发程序,结合可读外部表将外部数据文件导入Greenplum数据库。具体的数据导入过程如图2所示。
具体的,本实施例在实施例一的基础上增加了SQL命令循环检测模块,具体包括八个模块:记录信息初始化模块、SQL命令循环检测模块、数据文件检测模块、未扫描数据行确定模块、外部数据扫描模块、数据导入模块、记录信息更新模块、垃圾回收模块。
在执行数据导入之前,先进行以下两项准备工作:
第一,创建可读外部表。在可读外部表中记录待导入的外部数据文件的标识信息,具体可以记录外部数据文件的存储位置。此外,在可读外部表中记录每个外部数据文件的行类型。
第二,定义一个记录信息结构,如图3所示,该结构包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位。
其中,数据文件ID用于表示外部数据文件是否发生变化,包括数据文件哈希值、数据文件大小和数据文件修改时间;文件扫描标记位用于表示外部数据文件是否扫描完成,使用一个bit表示,0表示该外部数据文件未完成扫描,1表示该外部数据文件已完成扫描;行扫描标记位用于表示每个数据行是否已扫描,采用bitmap形式以节省空间,其bit的数量与外部数据文件的数据行数相同,每个bit值表示相应的数据行是否已扫描,0表示未扫描,1表示已扫描;删除标记位用于表示外部数据文件的记录信息是否有待删除,使用一个bit,0表示无需删除,1表示有待删除。
此外,如图3所示,记录信息结构还可以包括数据行数、全量行标记位。
其中,数据行数用于表述外部数据文件的数据行的总数量;全量行标记位用于表示外部数据文件的全部数据行,每个bit表示一个数据行,各个bit值均为0。
基于上述八个模块、可读外部表和记录信息结构,本实施例的数据导入过程如图2所示,具体包括:
S201、记录信息初始化模块根据记录信息结构生成外部数据文件的记录信息,包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位,还可以包括数据行数、全量行标记位。
S202、SQL命令循环检测模块循环检测是否有数据导入的SQL命令下发,在有SQL命令下发时,进入数据文件检测模块。
S203、当有SQL命令下发时,数据文件检测模块读取记录信息中的数据文件ID,根据数据文件ID判断外部数据文件是否发生变化,如果数据文件ID未与外部数据文件相对应,则认为外部数据文件发生变化,更新删除标记位,将该外部数据文件的记录信息标记为待删除,调用记录信息初始化模块生成变化后的外部数据文件记录信息。
如果外部数据文件未发生变化,则根据文件扫描标记位判断外部数据文件是否已完成扫描,若未完成扫描,则进入未扫描数据行确定模块,若已扫描完成,则进入数据导入模块。
S204、未扫描数据行确定模块对行扫描标记位、全量行标记位进行异或运算,确定外部数据文件的未扫描数据行。
S205、外部数据扫描模块用于对未扫描数据行进行扫描,根据可读外部表定义的行类型将每个数据行转化为一个元组,并更新行扫描标记位。在未扫描数据行全部扫描完成后,将文件扫描标记位更新为1。
S206、数据导入模块通过并发文件分发程序将元组分发至Primary实例,以导入Greenplum数据库。
具体的,gpfdist并发文件分发程序根据目标表定义的数据分布策略将元组分发至相应的Primary实例,例如hash分布、随机分布等,Primary实例将元组插入目标表,以实现导入Greenplum数据库。
S207、当未扫描数据行全部导入成功后,记录信息更新模块更新删除标记位为1。
S208、如果未扫描数据行导入失败,垃圾回收模块清除由已成功导入数据回滚后产生的垃圾空间。
可见,本实施例提供的一种Greenplum数据库的数据导入方法,
设计合理的记录信息结构,可以减少海量数据导入的时间,避免了同一外部数据文件导入多个目标表时的IO资源的浪费,及时清理数据导入失败时因数据回滚产生的垃圾空间,避免数据导入失败时存储空间的占用,加速执行数据导入的任务,有效减少因数据格式错误或人为误操作产生的不必要的工作量,提高工作效率。
本实施例主要用于将外部数据文件加速导入Greenplum数据库,通过本实施例,可以应用多种类型的数据源,实现在数据库内进行不同的处理场景,如数据分析、数据挖掘、机器学习等。
下面对本申请实施例提供的一种Greenplum数据库的数据导入装置进行介绍,下文描述的一种Greenplum数据库的数据导入装置与上文描述的一种Greenplum数据库的数据导入方法可相互对应参照。
如图4所示,本实施例中,Greenplum数据库的数据导入装置包括:
记录信息初始化模块401:用于生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
数据文件检测模块402:用于在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
未扫描数据行确定模块403:用于若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
外部数据扫描模块404:用于对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
数据导入模块405:用于通过并发文件分发程序将所述元组导入Greenplum数据库;
记录信息更新模块406:用于在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
垃圾回收模块407:用于在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
本实施例的Greenplum数据库的数据导入装置用于实现前述的Greenplum数据库的数据导入方法,因此该装置中的具体实施方式可见前文中的Greenplum数据库的数据导入方法的实施例部分,例如,记录信息初始化模块401,数据文件检测模块402,未扫描数据行确定模块403,外部数据扫描模块404,数据导入模块405,记录信息更新模块406,垃圾回收模块407,分别用于实现上述Greenplum数据库的数据导入方法中步骤S101,S102,S103,S104,S105,S106,S107。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的Greenplum数据库的数据导入装置用于实现前述的Greenplum数据库的数据导入方法,因此其作用与上述方法的作用相对应,这里不再赘述。
此外,本申请还提供了一种Greenplum数据库的数据导入设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上文所述的Greenplum数据库的数据导入方法。
最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的Greenplum数据库的数据导入方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种Greenplum数据库的数据导入方法,其特征在于,包括:
生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
通过并发文件分发程序将所述元组导入Greenplum数据库;
在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
2.如权利要求1所述的方法,其特征在于,在所述生成外部数据文件的记录信息之前,还包括:
根据可读外部表,确定待导入的外部数据文件。
3.如权利要求1所述的方法,其特征在于,所述生成外部数据文件的记录信息,包括:
根据预设的记录信息结构,生成所述外部数据文件的记录信息。
4.如权利要求1所述的方法,其特征在于,所述在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化之前,还包括:
循环检测是否有数据导入的SQL命令下发。
5.如权利要求1所述的方法,其特征在于,所述根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成,包括:
根据所述数据文件ID判断所述外部数据文件是否发生变化;
若发生变化,则更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息,并生成变化后的外部数据文件的记录信息;
若未发生变化,根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成。
6.如权利要求1所述的方法,其特征在于,所述数据文件ID包括以下任意一项或多项:数据文件哈希值、数据文件大小和数据文件修改时间。
7.如权利要求1-6任意一项所述的方法,其特征在于,所述通过并发文件分发程序将所述元组导入Greenplum数据库,包括:
根据目标表定义的数据分布策略,通过并发文件分发程序将所述元组分发至相应的Primary实例,以将所述元组导入Greenplum数据库。
8.一种Greenplum数据库的数据导入装置,其特征在于,包括:
记录信息初始化模块:用于生成外部数据文件的记录信息,其中所述记录信息包括数据文件ID、文件扫描标记位、行扫描标记位和删除标记位;
数据文件检测模块:用于在接收到数据导入的SQL命令时,根据所述数据文件ID判断所述外部数据文件是否发生变化,并根据所述文件扫描标记位判断所述外部数据文件是否已经扫描完成;
未扫描数据行确定模块:用于若未发生变化且未扫描完成,则根据所述行扫描标记位确定所述外部数据文件的未扫描数据行;
外部数据扫描模块:用于对所述未扫描数据行进行扫描,每扫描完一个所述未扫描数据行,根据可读外部表定义的行类型将扫描结果转换为一个元组,更新所述行扫描标记位;在所述未扫描数据行全部扫描完成时,更新所述文件扫描标记位;
数据导入模块:用于通过并发文件分发程序将所述元组导入Greenplum数据库;
记录信息更新模块:用于在所述未扫描数据行全部导入完成时,更新所述删除标记位,将所述外部数据文件的记录信息标记为待删除的记录信息;
垃圾回收模块:用于在所述未扫描数据行导入失败时,清除由数据回滚产生的垃圾空间。
9.一种Greenplum数据库的数据导入设备,其特征在于,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如权利要求1-7任意一项所述的Greenplum数据库的数据导入方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-7任意一项所述的Greenplum数据库的数据导入方法。
CN202011604354.9A 2020-12-29 2020-12-29 一种Greenplum数据库的数据导入方法、装置及设备 Active CN112711627B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011604354.9A CN112711627B (zh) 2020-12-29 2020-12-29 一种Greenplum数据库的数据导入方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011604354.9A CN112711627B (zh) 2020-12-29 2020-12-29 一种Greenplum数据库的数据导入方法、装置及设备

Publications (2)

Publication Number Publication Date
CN112711627A true CN112711627A (zh) 2021-04-27
CN112711627B CN112711627B (zh) 2023-11-03

Family

ID=75546956

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011604354.9A Active CN112711627B (zh) 2020-12-29 2020-12-29 一种Greenplum数据库的数据导入方法、装置及设备

Country Status (1)

Country Link
CN (1) CN112711627B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113886395A (zh) * 2021-10-19 2022-01-04 广州海量数据库技术有限公司 基于openGauss平台的高速数据导入导出方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160012465A1 (en) * 2014-02-08 2016-01-14 Jeffrey A. Sharp System and method for distributing, receiving, and using funds or credits and apparatus thereof
CN108717516A (zh) * 2018-05-18 2018-10-30 云易天成(北京)安全科技开发有限公司 文件标签方法、终端及介质
US20190057132A1 (en) * 2017-08-18 2019-02-21 Machbase, Inc. System and method for searching data
CN111931087A (zh) * 2020-09-15 2020-11-13 新华三半导体技术有限公司 一种网页请求处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160012465A1 (en) * 2014-02-08 2016-01-14 Jeffrey A. Sharp System and method for distributing, receiving, and using funds or credits and apparatus thereof
US20190057132A1 (en) * 2017-08-18 2019-02-21 Machbase, Inc. System and method for searching data
CN108717516A (zh) * 2018-05-18 2018-10-30 云易天成(北京)安全科技开发有限公司 文件标签方法、终端及介质
CN111931087A (zh) * 2020-09-15 2020-11-13 新华三半导体技术有限公司 一种网页请求处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈晓琳;李盛乐;刘坚;刘珠妹;: "分布式数据库Greenplum在地震前兆数据存储中的应用", 地震研究, no. 02 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113886395A (zh) * 2021-10-19 2022-01-04 广州海量数据库技术有限公司 基于openGauss平台的高速数据导入导出方法

Also Published As

Publication number Publication date
CN112711627B (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
US11442961B2 (en) Active transaction list synchronization method and apparatus
TW201530328A (zh) 爲半結構化資料構建NoSQL資料庫索引的方法及裝置
CN103902623A (zh) 用于在存储系统上存取文件的方法和系统
CN101964820A (zh) 一种保持数据一致性的方法及系统
CN111917834A (zh) 一种数据同步方法、装置、存储介质及计算机设备
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN111522811B (zh) 数据库的处理方法及装置、存储介质、终端
CN111752945A (zh) 一种基于容器和层次模型的时序数据库数据交互方法和系统
CN112965939A (zh) 一种文件合并方法、装置和设备
CN112711627B (zh) 一种Greenplum数据库的数据导入方法、装置及设备
WO2016175880A1 (en) Merging incoming data in a database
US12093234B2 (en) Data processing method, apparatus, electronic device, and computer storage medium
CN113806803B (zh) 一种数据存储方法、系统、终端设备及存储介质
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
CN113486023A (zh) 数据库分库分表的方法及装置
He et al. SLC-index: A scalable skip list-based index for cloud data processing
CN111782657A (zh) 数据处理方法及装置
CN112732816B (zh) 一种数据导出方法和系统
CN115455031B (zh) 一种Doris的数据查询方法、装置、存储介质及设备
CN111984470B (zh) 一种存储集群系统故障恢复自动化检测方法、装置
CN108009190B (zh) 一种数据导出方法、数据导出系统及计算机装置
CN118035207A (zh) 基于HDFS Federation架构的小文件合并方法、装置及相关介质
CN118170764A (zh) 一种数据湖一致性哈希索引方法及装置
CN117472961A (zh) 一种面向分析型数据库的列式内存缓冲区的建立方法
CN115794491A (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
GR01 Patent grant
GR01 Patent grant