CN110362577B - 一种数据插入方法、装置、设备和储存介质 - Google Patents

一种数据插入方法、装置、设备和储存介质 Download PDF

Info

Publication number
CN110362577B
CN110362577B CN201910619873.3A CN201910619873A CN110362577B CN 110362577 B CN110362577 B CN 110362577B CN 201910619873 A CN201910619873 A CN 201910619873A CN 110362577 B CN110362577 B CN 110362577B
Authority
CN
China
Prior art keywords
data
partition
group
target table
bucket
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.)
Active
Application number
CN201910619873.3A
Other languages
English (en)
Other versions
CN110362577A (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.)
Transwarp Technology Shanghai Co Ltd
Original Assignee
Transwarp Technology Shanghai 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 Transwarp Technology Shanghai Co Ltd filed Critical Transwarp Technology Shanghai Co Ltd
Priority to CN201910619873.3A priority Critical patent/CN110362577B/zh
Publication of CN110362577A publication Critical patent/CN110362577A/zh
Application granted granted Critical
Publication of CN110362577B publication Critical patent/CN110362577B/zh
Priority to PCT/CN2020/097563 priority patent/WO2021004266A1/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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

Landscapes

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

Abstract

本发明实施例公开了一种数据插入方法、装置、设备和储存介质,该方法包括:根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;根据所述分区分桶信息,将待插入数据分为至少一组;根据所述分区分桶信息,对组内的所述待插入数据进行排序;按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。本发明实施例的技术方案,在保证系统稳定的情况下,提高动态分区插入的性能。

Description

一种数据插入方法、装置、设备和储存介质
技术领域
本发明实施例涉及数据存储技术,尤其涉及一种数据插入方法、装置、设备和储存介质。
背景技术
随着应用场景的复杂化,数据经常在不同数据库之间流转。而随着大数据时代的到了,数据库之间导入或导出的数据量也越来越大。
分区是数据库中常用的数据组织方式,现有方法大都采用单个分区逐个插入的方式,在处理大批量数据时性能无法满足要求。如果要同时插入不同分区,则会因为长时间同时操作不同分区的太多文件,导致系统不稳定,例如内存使用过多、打开的文件句柄数量多大等问题。
发明内容
本发明实施例提供一种数据插入方法、装置、设备和储存介质,以实现在保证系统稳定的情况下,提高动态分区插入的性能。
第一方面,本发明实施例提供了一种数据插入方法,包括:
根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;
当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;
根据所述分区分桶信息,将待插入数据分为至少一组;
根据所述分区分桶信息,对组内的所述待插入数据进行排序;
按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。
第二方面,本发明实施例还提供了一种数据插入装置,包括:
插入动作类型确定模块,用于根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;
分区分桶信息确定模块,用于当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;
数据分组模块,用于根据所述分区分桶信息,将待插入数据分为至少一组;
数据排序模块,用于根据所述分区分桶信息,对组内的所述待插入数据进行排序;
数据插入模块,用于按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的数据插入方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明任意实施例所提供的数据插入方法。
本发明实施例通过对待插入数据分组排序,逐个插入目标表,同时只打开一个文件,解决长时间同时操作不同分区的大量文件,导致系统不稳定的问题,实现在保证系统稳定的情况下,提高动态分区插入的性能的效果。
附图说明
图1是本发明实施例一中的一种数据插入方法的流程图;
图2是本发明实施例二中的一种数据插入方法的流程图;
图3是本发明实施例三中的一种数据插入方法的流程图;
图4是本发明实施例四中的一种数据插入方法的流程图;
图5是本发明实施例五中的一种数据插入方法的流程图;
图6是本发明实施例六中的一种数据插入装置的结构示意图;
图7是本发明实施例七中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据插入方法的流程图,本实施例可适用于向数据库导入数据的情况,该方法可以由数据插入装置来执行,该装置可以由硬件和/或软件来实现,具体包括如下步骤:
步骤110、根据获取到的数据插入命令,确定数据插入命令的插入动作类型。
其中,当需要执行数据插入任务时,会执行相应的插入命令,根据数据库引擎的数据插入命令可以确定是动态分区插入还是静态分区插入。静态分区插入是指插入数据的时候指定目标分区,一次只能插入到一个分区;动态分区插入是指插入数据的时候不指定目标分区,而是根据分区列动态的判断数据的目标分区,一次可以插入到多个分区。
步骤120、当插入动作类型为动态分区插入时,根据目标表的元信息,确定目标表的分区分桶信息。
其中,如果是动态分区插入,则获取目标表的元信息,确定目标表的分区分桶信息。例如,根据sql语句的插入命令,判断是否为动态分区插入,在确定为动态分区插入,进而获取目标表的元信息,确定目标表是分区非分桶表,还是分区分桶表,以及分区列、分桶列等信息。
步骤130、根据分区分桶信息,将待插入数据分为至少一组。
其中,如果目标表是分桶表,对待插入数据分组时,保证同一个分桶文件的数据在同一组中,如果目标表不是分桶表,理论上对待插入数据任意分组不会对动态分区插入造成影响。为了单个分组中待插入数据的数量不会过大,造成组内需要排序的数据过多,可以将待插入数据进行分组,避免单个分组中待插入数据的数量过大,一般可以将待插入数据进行均匀分组。可选的,当目标表为分区非分桶表,按照第一分组规则将待插入数据分为至少一组。示例的,按照第一分组规则将待插入数据分为至少一组,包括:获取预设分组数;确定每一条待插入数据的分组标识数;其中,分组标识数包括待插入数据的预设字段的hash值或待插入数据对应的随机数;根据分组号和分组标识数对组数取模的结果,将待插入数据分配到对应的数组。也就是,先确定将要把待插入数据分为多少组,然后对每一条待插入数据的选定字段求hash值,或者对每一条待插入数据生成一个随机数,将得到的hash值或随机数作为该条待插入数据的分组标识数,根据分组标识数对预设分组数取模,将取模的结果与分组号进行匹配,从而将待插入数据分配到对应的数组中。例如,预设分组数是7(组号是0-6),某个待插入数据选定字段的hash值是123878437872,对7取模是0,所以将该待插入数据分配到组号为0的组。还可以根据待插入数据的数量和预设单组数据量,将待插入数据分为至少一组;其中,每个组中的待插入数据的数量小于等于预设单组数据量。如果待插入数据的数量小于等于预设单组数据量,则只分一组即可;如果待插入数据的数量大于预设单组数据量,则分为多组,每组中的待插入数据的数量均小于等于预设单组数据量,其中,可以等比例分组,也可以不等比例分组,在此不做限定。
步骤140、根据分区分桶信息,对组内的待插入数据进行排序。
其中,在分组之后,将每组待插入数据根据分区列的值进行组内排序,排序是为了保证同一个分区的数据连续排列。这样在以组为单位进行执行插入时,对应同一个目标表分区的待插入数据是相邻的,且连续排列,在对应同一个目标表分区的待插入数据插入目标表的分区文件之后,才会插入下一个目标表分区的待插入数据。
步骤150、按照待插入数据在组内的顺序,将每组待插入数据依次动态插入对应的目标表文件。
其中,按照待插入数据在组内的顺序进行插入,在对应同一个目标表分区的待插入数据插入之后,自动识别出下一个需要插入数据的目标表分区,直至组内所有的待插入数据插入完毕,对每组待插入数据都进行插入,从而完成所有待插入数据插入到目标表文件中。
自动识别动态分区插入的场景,针对分区和分桶列对数据进行划分和排序,使得动态分区插入的过程中,达到像静态分区插入一样每次对一个分区插入的效果,在执行一次操作的前提下,既避免了多次分区的重复扫表,也避免了对内存或文件句柄造成巨大的压力。
本实施例的技术方案,通过对待插入数据分组排序,逐个插入目标表,同时只打开一个文件,解决长时间同时操作不同分区的大量文件,导致系统不稳定的问题,实现在保证系统稳定的情况下,提高动态分区插入的性能的效果。
实施例二
图2为本发明实施例二提供的一种数据插入方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化,具体包括如下步骤:
步骤210、根据获取到的数据插入命令,确定数据插入命令的插入动作类型。
步骤220、当插入动作类型为动态分区插入时,根据目标表的元信息,确定目标表的分区分桶信息。
步骤230、当目标表为分区分桶表,将待插入数据根据分桶列对应列的hash值分组。
其中,在得到分区分桶信息之后,如果目标表是分区分桶表,首先将源表的数据根据目标表分桶列对应列的hash值划分成分桶数组,这样保证最后应该插入同一个分桶文件的数据一定分在同一组,语义上等价于distribute by分桶列。
步骤240、根据分区分桶信息,对组内的待插入数据进行排序。
步骤250、按照待插入数据在组内的顺序,将每组待插入数据依次动态插入对应的目标表文件。
本实施例的技术方案,通过将同一分桶的数据进行分组,保证需要插入同一个分桶文件的待插入数据在同一分组,实现在动态分区插入时,避免反复扫描分区,提高动态分区插入的性能。
实施例三
图3为本发明实施例三提供的一种数据插入方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化,具体包括如下步骤:
步骤310、根据获取到的数据插入命令,确定数据插入命令的插入动作类型。
步骤320、当插入动作类型为动态分区插入时,根据目标表的元信息,确定目标表的分区分桶信息。
步骤330、根据分区分桶信息,将待插入数据分为至少一组。
步骤340、当目标表的为多级分区表,按照目标表分区的顺序,对组内的待插入数据进行排序。
其中,如果由分区分桶信息确定目标表是多级分区表,则按目标表分区的顺序对组内的待插入数据依次排序。语义上等价于sort by分区列1,分区列2……。这样保证了同一个分区的数据连续排列。
步骤350、当目标表的为多级范围分区表,按照目标表分区字段映射到分区之后的顺序,对组内的待插入数据进行排序。
其中,如果由分区分桶信息确定目标表是多级范围分区表,由于其不是一个分区对应分区键的一个值的单值分区,而是一个分区对应分区键值的一个范围,也就是一个分区键的值的区间,因此,多级范围分区排序要按照分区字段映射到分区之后对组内的待插入数据进行排序。示例的,对于有2个字段的范围分区r1,r2.r1是date类型,r2是int类型,范围分区是先按r1的月份分区([1970-01-01,1970-01-31]一个分区,[1970-02-01,1970-02-28]一个分区),再按r2的百位进行分区(即[0,99]在一个分区,[100,199]在一个分区etc.)。那么,应该对to_month(r1),r2/10排序。等价语法是distribute by to_month(r1),r2/10。如果直接按分区键的值对组内的待插入数据排序,则可能出现以下顺序:(1970-01-01,1),(1970-01-01,11),(1970-01-02,2),而它们分别归属分区1,分区2,分区1,相同分区的数据没有排到一起。如果是对于单个范围分区字段,则可以简化为直接按分区字段的值对组内的待插入数据排序。
步骤360、按照待插入数据在组内的顺序,将每组待插入数据依次动态插入对应的目标表文件。
可以理解的是,步骤340和350根据目标表的分区类型择一执行,图3中所示不对其执行的顺序构成限定。
本实施例的技术方案,通过目标表为范围分区的情况,对组内的待插入数据进行排序,保证同一个分区的待插入数据为连续排列,使得对组内数据依次进行动态分区插入时,不必反复打开不同分区文件,提高动态分区插入的性能。
实施例四
图4为本发明实施例四提供的一种数据插入方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化,具体包括如下步骤:
步骤410、根据获取到的数据插入命令,确定数据插入命令的插入动作类型。
步骤420、当插入动作类型为动态分区插入时,根据目标表的元信息,确定目标表的分区分桶信息。
步骤430、根据分区分桶信息,将待插入数据分为至少一组。
步骤440、根据分区分桶信息,对组内的待插入数据进行排序。
步骤450、将组内第一行作为当前行,打开对应的文件句柄,将第一行的待插入数据写入当前文件句柄;
步骤460、依次读取后一行作为当前行,如果当前行属于当前文件句柄对应的目标表文件,将当前行的待插入数据写入当前文件句柄;
步骤470、如果当前行不属于当前文件句柄对应的目标表文件,关闭当前文件句柄,打开当前行对应的文件句柄,将当前行的待插入数据写入当前文件句柄;
步骤480、当读取不到下一行时,结束本组待插入数据的插入操作;按预设顺序完成所有组的插入操作。
其中,在对待插入数据进行分组后,如果目标表是分区分桶表,保证了同一个桶的数据一定分到一组,并且对组内的待插入数据根据分区归属进行了排序,因此保证了插入过程中属于同一个分区的数据一定连续排列。所以在插入文件的过程中,一次只需要同时打开一个文件连续插入。当发现有一行不属于当前打开的文件时,那么本组内属于当前打开的文件的待插入数据一定已经在前面全部插入完毕。所以,可以直接关闭当前打开的文件,而打开当前行所属的对应文件,即可继续插入。
本实施例的技术方案,在对待插入数据进行分组,并组内排序之后,一次只需要同时打开一个文件,进行待插入数据的连续插入,不必反复打开同一个文件,实现在保证系统稳定的情况下,提高动态分区插入的性能。
实施例五
本实施例为本发明的一个优选实施例,如图5所示,当执行sql插入指令,查询目标表元信息,得到目标表的分区分桶信息。判断是否为动态分区插入,如果是,根据目标表元信息判断目标表是否分桶,如果目标表分桶将源表数据根据分桶列对应列的哈希值分组,如果目标表未分桶根据预先设定的规则将待插入数据分成至少一组。对每个分组均执行根据分区列字段组内排序。之后,将组内第一行作为当前行,打开当前行对应句柄,判断当前行是否属于当前句柄对应文件,如果当前行属于当前句柄对应文件就将当前行写入文件句柄,并读取下一行作为当前行;如果当前行不属于当前句柄对应文件,关闭当前句柄,打开当前行对应句柄,将当前行写入文件句柄,再读取下一行作为当前行。判断当前行是否存在,如果存在下一行返回判断当前行是否属于当前句柄对应文件,如果下一行不存在,本组插入结束。之后,照上述步骤进行其他组的数据插入。示例的,目标表为分区分桶表,如表1所示。
表1
Figure BDA0002125202980000101
获取目标表的元信息,之后把源数据根据桶列对应的列分成4组,如表2所示。
表2
Figure BDA0002125202980000111
再对每个组针对分区列进行组内排序,保证相同分区键的列一定相邻。根据上述分组和分区信息,可以同时只打开一个文件,把对应该分区分桶的数据插入进去再插入下一个文件,如表3所示。
表3
Figure BDA0002125202980000112
实施例六
图6为本发明实施例六提供的一种数据插入装置的结构示意图,该装置可以配置于数据库中,该装置包括:
插入动作类型确定模块610,用于根据获取到的数据插入命令,确定数据插入命令的插入动作类型;
分区分桶信息确定模块620,用于当插入动作类型为动态插入时,根据目标表的元信息,确定目标表的分区分桶信息;
数据分组模块630,用于根据分区分桶信息,将待插入数据分为至少一组;
数据排序模块640,用于根据分区分桶信息,对组内的待插入数据进行排序;
数据插入模块650,用于按照待插入数据在组内的顺序,将每组待插入数据依次动态插入对应的目标表文件。
本实施例的技术方案,通过对待插入数据分组排序,逐个插入目标表,同时只打开一个文件,解决长时间同时操作不同分区的大量文件,导致系统不稳定的问题,实现在保证系统稳定的情况下,提高动态分区插入的性能的效果。
可选的,数据分组模块630,包括:
第一分组单元,用于当目标表为分区非分桶表,按照第一分组规则将待插入数据分为至少一组。
可选的,第一分组单元具体用于:
根据待插入数据的数量和预设单组数据量,将待插入数据分为至少一组;其中,每个组中的待插入数据的数量小于等于预设单组数据量。
可选的,数据分组模块630,包括:
第二分组单元,用于当目标表为分区分桶表,将待插入数据根据分桶列对应列的hash值分组。
可选的,数据排序模块640,包括:
第一排序单元,用于当目标表的为多级分区表,按照目标表分区的顺序,对组内的待插入数据进行排序。
可选的,数据排序模块640,包括:
第二排序单元,用于当目标表的为多级范围分区表,按照目标表分区字段映射到分区之后的顺序,对组内的待插入数据进行排序。
可选的,数据插入模块650,包括:
第一写入单元,用于将组内第一行作为当前行,打开对应的文件句柄,将第一行的待插入数据写入当前文件句柄;
第二写入单元,用于依次读取后一行作为当前行,如果当前行属于当前文件句柄对应的目标表文件,将当前行的待插入数据写入当前文件句柄;
第三写入单元,用于如果当前行不属于当前文件句柄对应的目标表文件,关闭当前文件句柄,打开当前行对应的文件句柄,将当前行的待插入数据写入当前文件句柄;
本组插入结束单元,用于当读取不到下一行时,结束本组待插入数据的插入操作;
全组插入单元,用于按预设顺序完成所有组的插入操作。
本发明实施例所提供的数据插入装置可执行本发明任意实施例所提供的数据插入方法,具备执行方法相应的功能模块和有益效果。
实施例七
图7为本发明实施例七提供的一种设备的结构示意图,如图7所示,该设备包括处理器710、存储器720、输入装置730和输出装置740;设备中处理器710的数量可以是一个或多个,图7中以一个处理器710为例;设备中的处理器710、存储器720、输入装置730和输出装置740可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器720作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据插入方法对应的程序指令/模块(例如,数据插入装置中的插入动作类型确定模块610、分区分桶信息确定模块620、数据分组模块630、数据排序模块640和数据插入模块650)。处理器710通过运行存储在存储器720中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据插入方法。
存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器720可进一步包括相对于处理器710远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置730可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置740可包括显示屏等显示设备。
实施例八
本发明实施例八还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据插入方法,该方法包括:
根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;
当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;
根据所述分区分桶信息,将待插入数据分为至少一组;
根据所述分区分桶信息,对组内的所述待插入数据进行排序;
按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据插入方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据插入装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种数据插入方法,其特征在于,包括:
根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;
当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;
根据所述分区分桶信息,将待插入数据分为至少一组;
根据所述分区分桶信息,对组内的所述待插入数据进行排序,以使组内的对应同一个目标表分区的所述待插入数据是相邻且连续排列的;
按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,将待插入数据分为至少一组,包括:
当所述目标表为分区非分桶表,按照第一分组规则将所述待插入数据分为至少一组。
3.根据权利要求2所述的方法,其特征在于,所述按照第一分组规则将所述待插入数据分为至少一组,包括:
获取预设分组数;
确定每一条所述待插入数据的分组标识数;其中,所述分组标识数包括所述待插入数据的预设字段的hash值或所述待插入数据对应的随机数;
根据分组号和所述分组标识数对组数取模的结果,将所述待插入数据分配到对应的数组。
4.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,将待插入数据分为至少一组,包括:
当所述目标表为分区分桶表,将所述待插入数据根据分桶列对应列的hash值分组。
5.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,对组内的所述待插入数据进行排序,包括:
当所述目标表的为多级分区表,按照所述目标表分区的顺序,对组内的所述待插入数据进行排序。
6.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,对组内的所述待插入数据进行排序,包括:
当所述目标表的为多级范围分区表,按照所述目标表分区字段映射到分区之后的顺序,对组内的所述待插入数据进行排序。
7.根据权利要求1所述的方法,其特征在于,所述按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件,包括:
将组内第一行作为当前行,打开对应的文件句柄,将第一行的所述待插入数据写入当前文件句柄;
依次读取后一行作为当前行,如果当前行属于当前文件句柄对应的所述目标表文件,将当前行的所述待插入数据写入当前文件句柄;
如果当前行不属于当前文件句柄对应的所述目标表文件,关闭当前文件句柄,打开当前行对应的文件句柄,将当前行的所述待插入数据写入当前文件句柄;
当读取不到下一行时,结束本组所述待插入数据的插入操作;按预设顺序完成所有组的插入操作。
8.一种数据插入装置,其特征在于,包括:
插入动作类型确定模块,用于根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;
分区分桶信息确定模块,用于当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;
数据分组模块,用于根据所述分区分桶信息,将待插入数据分为至少一组;
数据排序模块,用于根据所述分区分桶信息,对组内的所述待插入数据进行排序,以使组内的对应同一个目标表分区的所述待插入数据是相邻且连续排列的;
数据插入模块,用于按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据插入方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的数据插入方法。
CN201910619873.3A 2019-07-10 2019-07-10 一种数据插入方法、装置、设备和储存介质 Active CN110362577B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910619873.3A CN110362577B (zh) 2019-07-10 2019-07-10 一种数据插入方法、装置、设备和储存介质
PCT/CN2020/097563 WO2021004266A1 (zh) 2019-07-10 2020-06-23 数据插入方法、装置、设备和储存介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910619873.3A CN110362577B (zh) 2019-07-10 2019-07-10 一种数据插入方法、装置、设备和储存介质

Publications (2)

Publication Number Publication Date
CN110362577A CN110362577A (zh) 2019-10-22
CN110362577B true CN110362577B (zh) 2020-06-09

Family

ID=68218660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910619873.3A Active CN110362577B (zh) 2019-07-10 2019-07-10 一种数据插入方法、装置、设备和储存介质

Country Status (2)

Country Link
CN (1) CN110362577B (zh)
WO (1) WO2021004266A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110362577B (zh) * 2019-07-10 2020-06-09 星环信息科技(上海)有限公司 一种数据插入方法、装置、设备和储存介质
CN114528053A (zh) * 2022-02-28 2022-05-24 上海识装信息科技有限公司 一种业务功能执行方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022763A (zh) * 2014-04-30 2015-11-04 博雅网络游戏开发(深圳)有限公司 实现数据查询的方法和系统
EP3098730A1 (en) * 2015-05-29 2016-11-30 Sap Se Aggregating database entries by hashing

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241121A (zh) * 2017-06-29 2019-01-18 阿里巴巴集团控股有限公司 时间序列数据的存储和查询方法、装置、系统及电子设备
CN108446399B (zh) * 2018-03-29 2021-07-30 重庆大学 一种结构化海量实时数据的动态存储优化方法
CN109299190B (zh) * 2018-09-10 2020-11-17 华为技术有限公司 分布式存储系统中处理对象的元数据的方法及装置
CN110362577B (zh) * 2019-07-10 2020-06-09 星环信息科技(上海)有限公司 一种数据插入方法、装置、设备和储存介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022763A (zh) * 2014-04-30 2015-11-04 博雅网络游戏开发(深圳)有限公司 实现数据查询的方法和系统
EP3098730A1 (en) * 2015-05-29 2016-11-30 Sap Se Aggregating database entries by hashing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王煜骢等.《 NTCI-Flow:一种可扩展的高速网络流量处理框架》.《工程科学与技术》.2017,第169-174页. *

Also Published As

Publication number Publication date
WO2021004266A1 (zh) 2021-01-14
CN110362577A (zh) 2019-10-22

Similar Documents

Publication Publication Date Title
US9195701B2 (en) System and method for flexible distributed massively parallel processing (MPP) database
CN104135437B (zh) 用于在网络交换机中利用集中式存储器池的表搜索的装置和方法
CN108733790B (zh) 数据排序方法、装置、服务器和存储介质
US10002019B2 (en) System and method for assigning a transaction to a serialized execution group based on an execution group limit for parallel processing with other execution groups
CN110362577B (zh) 一种数据插入方法、装置、设备和储存介质
CN103995908A (zh) 一种数据导入方法及装置
CN103392169B (zh) 排序方法和系统
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN112085644B (zh) 多列数据排序方法、装置、可读存储介质和电子设备
CN103440246A (zh) 用于MapReduce的中间结果数据排序方法及系统
CN108011823A (zh) 多域流表的多级化方法及装置、多级流表查找方法及装置
CN104871153A (zh) 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法
CN109241056B (zh) 一种用于分布式系统的数字id生成系统
CN103077208A (zh) 统一资源定位符匹配处理方法及装置
CN102207935A (zh) 用于创建索引的方法和系统
TW201926081A (zh) 資料轉移系統及方法
CN111475511A (zh) 基于树状结构的数据存储方法、访问方法、装置及设备
CN101510215B (zh) 一种计算机系统中的数据处理方法和系统
CN109165201B (zh) 日志的归并方法及终端设备
CN111723087A (zh) 数据血缘关系的挖掘方法、装置、存储介质和电子设备
CN104794129A (zh) 一种基于查询日志的数据处理方法和系统
CN116049180A (zh) 面向Paas平台的租户数据处理方法及装置
CN112764935B (zh) 大数据处理方法、装置、电子设备及存储介质
CN108984780B (zh) 基于支持重复键值树数据结构管理磁盘数据的方法和装置
CN106202412A (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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai

Patentee after: Star link information technology (Shanghai) Co.,Ltd.

Address before: 200233 11-12 / F, building B, 88 Hongcao Road, Xuhui District, Shanghai

Patentee before: TRANSWARP TECHNOLOGY (SHANGHAI) Co.,Ltd.