CN110032549B - 分区分裂方法、装置、电子设备及可读存储介质 - Google Patents

分区分裂方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN110032549B
CN110032549B CN201910080122.9A CN201910080122A CN110032549B CN 110032549 B CN110032549 B CN 110032549B CN 201910080122 A CN201910080122 A CN 201910080122A CN 110032549 B CN110032549 B CN 110032549B
Authority
CN
China
Prior art keywords
data
splitting
file
partition
target
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
CN201910080122.9A
Other languages
English (en)
Other versions
CN110032549A (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 Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase 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 Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN201910080122.9A priority Critical patent/CN110032549B/zh
Publication of CN110032549A publication Critical patent/CN110032549A/zh
Priority to TW108129625A priority patent/TWI738037B/zh
Priority to US16/698,227 priority patent/US10684787B1/en
Priority to EP20709375.8A priority patent/EP3857402B1/en
Priority to PCT/US2020/015472 priority patent/WO2020160035A1/en
Priority to US16/899,251 priority patent/US11016690B2/en
Priority to US17/324,865 priority patent/US11269535B2/en
Application granted granted Critical
Publication of CN110032549B publication Critical patent/CN110032549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/21Design, administration or maintenance of databases
    • 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/2246Trees, e.g. B+trees
    • 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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

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

Abstract

本说明书实施例提供了一种分区分裂方法,通过将目标源分区中的数据文件划分为两个以上数据组,先将其中一个数据组作为目标分裂数据组,按照预设分裂规则将目标分裂数据组分裂后赋给相应的新分区,待该目标分裂数据组分裂完成后,再重新从剩余数据组中选取一个数据组作为目标分裂数据组,经过多轮完成所有数据组的分裂,将分区分裂对资源的消耗分散到多个时间段,节省了分裂过程占用的CPU、IO和磁盘空间等资源。

Description

分区分裂方法、装置、电子设备及可读存储介质
技术领域
本说明书实施例涉及数据库技术领域,尤其涉及一种分区分裂方法、装置、电子设备及可读存储介质。
背景技术
数据库分区是一种物理数据库设计技术,当单个分区数据量过大时,需要对分区进行分裂。分区分裂是通过将一个分区分裂成多个分区后,下线原始的分区,使分裂出的新分区上线的服务,使得原始分区的写入读取压力分摊到不同的分区上,突破单分区处理能力的极限。然而,由于某些数据库中单个分区过大,在对其进行分区分裂时会存在需要消耗大量CPU、IO以及磁盘空间等资源的问题。
发明内容
本说明书实施例提供了一种分区分裂方法、装置、电子设备及可读存储介质。
第一方面,本说明书实施例提供了一种分区分裂方法,包括:针对目标源分区创建两个以上新分区;将所述目标源分区中的数据文件划分为两个以上数据组,从所述两个以上数据组中选取一个数据组作为目标分裂数据组,对所述目标分裂数据组执行分裂步骤,待所述目标分裂数据组分裂完成后,重新在所述两个以上数据组中,除分裂完成的数据组以外的其余数据组中选取一个数据组作为目标分裂数据组,直至将所述两个以上数据组均分裂完毕。其中,所述分裂步骤包括:根据预设的分裂规则将所述目标分裂数据组分裂为多个子数据组,且每个子数据组对应于一个新分区,将所述每个子数据组分别赋给与该子数据组对应的新分区。
第二方面,本说明书实施例提供了一种分区分裂方法,应用于采用日志结构合并树LSM tree的数据库系统,包括:针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中。其中,所述第一分裂步骤包括:将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组;根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理;重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕。
第三方面,本说明书实施例提供了一种分区分裂装置,包括:第一创建模块,用于针对目标源分区创建两个以上新分区;第一分裂模块,用于将所述目标源分区中的数据文件划分为两个以上数据组,从所述两个以上数据组中选取一个数据组作为目标分裂数据组,对所述目标分裂数据组执行分裂步骤,待所述目标分裂数据组分裂完成后,重新在所述两个以上数据组中,除分裂完成的数据组以外的其余数据组中选取一个数据组作为目标分裂数据组,直至将所述两个以上数据组均分裂完毕。其中,所述分裂步骤包括:根据预设的分裂规则将所述目标分裂数据组分裂为多个子数据组,且每个子数据组对应于一个新分区,将所述每个子数据组分别赋给与该子数据组对应的新分区。
第四方面,本说明书实施例提供了一种分区分裂装置,应用于采用日志结构合并树LSM tree的数据库系统,包括:第二创建模块,用于针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;第二分裂模块,用于对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中。
其中,所述第一分裂步骤包括:
将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组;
根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理;
重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕。
第五方面,本说明书实施例提供了一种电子设备,包括:存储器;一个或多个处理器;及上述第三方面提供的分区分裂装置或上述第四方面提供的分区分裂装置,存储于所述存储器中并被配置成由一个或多个处理器执行。
第六方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面提供的分区分裂方法或第二方面提供的分区分裂方法的步骤。
本说明书实施例有益效果如下:
本说明书实施例提供的分区分裂方法,通过将目标源分区中的数据文件划分为两个以上数据组,先将其中一个数据组作为目标分裂数据组,按照预设分裂规则将目标分裂数据组分裂后赋给相应的新分区,待该目标分裂数据组分裂完成后,再重新从剩余数据组中选取一个数据组作为目标分裂数据组,经过多轮分裂,直至将所有的数据组均分裂完成。这样通过多轮完成对分区的分裂,将分区分裂对资源的消耗分散到多个时间段,有效地节省了分裂过程在同一时间段内占用的CPU,IO和磁盘空间等资源,提高了分裂性能。
附图说明
图1为本说明书实施例第一方面提供的分区分裂方法的流程图;
图2为本说明书实施例第二方面提供的分区分裂方法的流程图;
图3为本说明书实施例第二方面提供的第一分裂步骤的步骤流程图;
图4为本说明书实施例第二方面提供的一种渐进分裂的简化模型示例图;
图5为本说明书实施例第三方面提供的分区分裂装置的模块框图;
图6为本说明书实施例第四方面提供的分区分裂装置的模块框图;
图7为本说明书实施例第五方面提供的一种存储服务器的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。需要说明的是,本说明书实施例中,术语“两个以上”包括两个或大于两个的情况;术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,M和/或N,可以表示:单独存在M,同时存在M和N,单独存在N这三种情况。
在本说明书实施例中,分区分裂使一个分区变成多个新分区,并将原分区中的数据按照预设分裂规则分配到多个新分区中,被各个新分区所有,能够解决一个分区的访问超过单台机器(存储服务器)处理能力的问题。另外,分区分裂的方式可以有多种,例如,可以采用Range(范围)分裂或Hash(哈希)分裂。其中,Range分裂是把原分区中的数据划分为几个不重复的范围,赋给相应的新分区,不需要重新划分每一行数据;Hash分裂是指根据原分区中数据的hash值划分数据,需要对每一行数据求hash后重新分配。
需要说明的是,本说明书实施例提供的分区分裂方法应用于数据库系统中,具体可以由数据库系统中的存储设备或管理设备执行,例如,可以由数据库系统中的存储服务器执行。
第一方面,本说明书实施例提供了一种分区分裂方法。如图1所示,该方法包括步骤S101-步骤S103。
步骤S101,针对目标源分区创建两个以上新分区。
本实施例中,可以根据具体数据库的存储要求,将数据库中满足预设的分裂条件的分区作为目标源分区,针对目标源分区创建两个以上新分区,进而对分区进行分裂。每个目标源分区对应创建的新分区数量可以根据实际需求设置,例如,可以为2个、5个、10个或100个等。举例来讲,当需要将目标源分区F分裂为两个分区时,则需要针对目标源分区F创建两个新分区F1和F2。
步骤S102,将所述目标源分区中的数据文件划分为两个以上数据组。
在本实施例中,数据文件是指物理文件,是分区中实际存在的真实文件,即是分区在创建后写入并存储在分区内的数据文件。例如,在以键值(Key-Value)格式进行数据存储的数据库中,由键(Key)和值(Value)构成的数据文件,其中,逻辑上Key和Value是一对一的关系,Key相当于数据文件的索引,Value是Key对应的数值。
具体来讲,可以根据实际需要预先配置目标源分区中的数据文件具体需要划分的数据组数量。例如,可以由用户预先配置,或者,也可以由服务器根据资源占用情况来预先配置。所划分的数据组数量决定了以下步骤S103中需要分裂的轮数。
步骤S103,从所述两个以上数据组中选取一个数据组作为目标分裂数据组,对所述目标分裂数据组执行分裂步骤,待所述目标分裂数据组分裂完成后,重新在所述两个以上数据组中,除分裂完成的数据组以外的其余数据组中选取一个数据组作为目标分裂数据组,直至将所述两个以上数据组均分裂完毕。
具体来讲,步骤S103所述的分裂步骤可以包括:根据预设的分裂规则将所述目标分裂数据组分裂为多个子数据组,且每个子数据组对应于一个新分区,将所述每个子数据组分别赋给与该子数据组对应的新分区。需要说明的是,子数据组的数量与步骤S101创建的新分区的数量相同。
在本实施例中,分裂规则可以预先根据实际需要以及预设的分裂方式设置,举例来讲,当采用Range分裂时,分裂规则可以用于将目标分裂数据组划分为几个不重复的范围,分别将每个范围的数据赋给相应的新分区;当采用Hash分区时,分裂规则可以为基于用户定义的表达式的返回值来对目标分裂数据组中的数据进行分裂。其中,表达式可以根据实际需要设置。例如,当目标分裂数据组中的数据为行数据时,每一行数据包括两列,其中一列为主键(key),另一列为与主键对应的值,分裂规则可以为:key%2,即对主键求2的余数,假设需要将目标源分区分裂为两个新分区,则可以将返回值为奇数的行数据赋给其中一个新分区,将返回值为偶数的行数据赋给另外一个新分区。当然,除了上述两种分裂方式外,也可以采用其他分裂方式。
举例来讲,假设需要将目标源分区F分裂为两个新分区F1和F2,且目标源分区F中存储有数据文件:A、B、C和D,假设将这些数据文件划分为四个数据组,且一个文件作为一个数据组。在实际应用中,可以按照数据存储顺序,分四轮依次对每个数据组进行分裂,即先将文件A作为目标分裂数据组,按照预设的分裂规则将文件A分裂为子数据组A1和子数据组A2,将子数据组A1赋给新分区F1,将子数据组A2赋给新分区F2;待文件A分裂完成后,重新将文件B作为目标分裂数据组,按照上述分裂规则将文件B分裂为子数据组B1和子数据组B2,将子数据组B1赋给新分区F1,将子数据组B2赋给新分区F2;待文件B分裂完成后,重新将文件C作为目标分裂数据组,按照上述分裂规则将文件C分裂为子数据组C1和子数据组C2,将子数据组C1赋给新分区F1,将子数据组C2赋给新分区F2;待文件C分裂完成后,按照上述分裂规则将文件D分裂为子数据组D1和子数据组D2,将子数据组D1赋给新分区F1,将子数据组D2赋给新分区F2,从而完成对目标源分区的数据分裂。
本实施例通过渐进分裂的方式,即将目标源分区中存储的数据分多轮进行分裂,每轮只分裂目标源分区中存储的一部分数据,从而将分区分裂对资源的消耗分散到多个时间段,有效地节省了分裂过程在同一时间段内占用的CPU,IO和磁盘空间等资源。
另外,在本说明书一实施例中,为了进一步减少分区分裂过程消耗的资源,在上述步骤S103所述的渐进分裂过程中,在完成每一轮分裂后,即针对当前的目标分裂数据组,将每个子数据组分别赋给与该子数据组对应的新分区之后,还可以包括:将分裂完成的目标分裂数据组从目标源分区中删除,这样就可以在分区分裂过程中释放这部分数据占用的空间资源,节省了磁盘空间资源。
例如,在上述示例中,可以在分区分裂过程中,完成了文件A的分裂后,就可以将文件A从目标源分区中删除,完成了文件B的分裂后,就可以将文件B从目标源分区中删除,完成了文件C的分裂后,就可以将文件C从目标源分区中删除,完成了文件D的分裂后,就可以将文件D从目标源分区中删除,而不用等到将目标源分区的数据均分裂完成后,再删除目标源分区中的数据文件,有效地节省了磁盘空间资源。
在本实施例中,上述步骤S102和步骤S103是对新分区进行物理分裂的过程。可以理解的是,为了便于分区分裂过程中用户能够正常执行查询操作,在本说明书一实施例中,在对新分区进行物理分裂之前,还需要先进行逻辑分裂。也就是说,在将所述目标源分区中的数据文件划分为两个以上数据组,从所述两个以上数据组中选取一个数据组作为目标分裂数据组,对所述目标分裂数据组执行分裂步骤之前,还可以包括:针对所述目标源分区中存储的数据文件,在每个新分区中创建引用文件,所述引用文件用于引用所述数据文件。
需要说明的是,引用文件是逻辑文件,用于指向目标源分区中被引用的数据文件。在本实施例中,针对目标源分区中存储的每个数据文件,均创建相应的引用文件。例如,在上述示例中,目标源分区F中存储有数据文件:A、B、C和D,则需要在针对目标源分区F创建的新分区F1和F2中分别生成指向A、指向B、指向C以及指向D的引用文件,如在新分区F1中生成引用文件a1、b1、c1和d1,在新分区F2中生成引用文件a2、b2、c2和d2。其中,a1、a2均指向数据文件A,b1、b2均指向数据文件B,c1、c2均指向数据文件C,d1、d2均指向数据文件D。
此时,在将所述每个子数据组分别赋给与该子数据组对应的新分区之后,还包括:当所述引用文件对应的数据均被分裂完成后,将所述引用文件从所述新分区中删除。这样就可以相应释放引用文件所占用的空间资源。例如,在上述示例中,当数据文件A分裂完成后,就可以删除新分区F1中生成的引用文件a1和新分区F2中生成的引用文件a2。
需要说明的是,在完成新分区的逻辑分裂后,且在对新分区进行物理分裂之前,当接收到用户的查询请求,需要查询该新分区中的某些数据时,根据查询请求在新分区引用的数据文件以及新分区中新写入的数据中进行查询,由于此时新分区是引用对应目标源分区中的数据文件,可能会查询出不属于该新分区的数据,因此,需要根据上述预设的分裂规则对查询出来的数据进行过滤,并将从新分区中新写入的数据中查询到的数据与上述过滤后得到的数据进行合并,将合并后的结果反馈给用户。
例如,在上述示例中,目标源分区中存储的数据文件包括多个行数据,且每个行数据包括两列,其中一列为主键(key),另一列为与主键对应的值,分裂规则可以为:key%2,将该表达式返回值为奇数的数据赋给新分区F1,返回值为偶数的数据赋给新分区F2。当用户需要查询新分区F1中的值为1的数据时,先根据查询请求从引用的数据文件中进行查询,例如查询到的数据包括:(1,1)和(2,1),则根据该分裂规则将不属于新分区F1的数据(2,1)过滤掉,从而得到数据(1,1)。
本说明书实施例提供的分区分裂方法,通过多轮完成对分区的分裂,将分区分裂对资源的消耗分散到多个时间段,有效地节省了分裂过程在同一时间段内占用的CPU,IO和磁盘空间等资源,提高了分裂性能。并且,适用范围广,能够适用于多种类型的分区如Range分区、Hash分区以及list分区等。
第二方面,本说明书实施例还提供了一种分区分裂方法,应用于采用LSM tree(Log Structure Merge Tree,日志结构合并树)的数据库系统,例如,可以应用于OceanBase数据库、Oracle数据库或MySQL数据库等。下面主要以OceanBase数据库为例,对本实施例提供的分区分裂方法进行描述。需要说明的是,本实施例中对于与上述第一方面提供的实施例相同或相似的部分不作详细描述,具体可以参考上述第一方面的相应描述。
如图2所示,本实施例提供的分区分裂方法至少可以包括以下步骤S201至步骤S202。
步骤S201,针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;
需要说明的是,LSM tree为由多层独立的数据结构组成的数据存储结构。采用LSMtree结构的数据库中的分区通常由多个静态的sstable、冻结memtable和一个活跃memtable组成。采用LSM tree结构的数据库中分区的数据需要定期进行合并,释放内存,引入分区分裂后,两者都会消耗大量的资源,可能会对在线业务造成严重影响,因此需要协调分裂与合并的时机。
以OceanBase数据库为例,活跃memtable是LSM tree中的内存数据结构,负责新数据的写入;冻结memtable是由活跃memtable冻结而来,不能有新数据写入;静态的sstable包括转储sstable和基线sstable,转储sstable是LSM tree中持久化在磁盘中的数据结构,由冻结memtable和转储sstable转储而来,由多个宏块组成,数据量相对较小;基线sstable是LSM tree中持久化在磁盘中的数据结构,由多个转储sstable和基线sstable合并而来,由多个宏块组成,数据量远远大于memtable和转储sstable,且数据格式与转储sstable略有不同。其中,每个宏块包含多行已排序的数据,大小为固定值如可以为2M,持久化在磁盘上,是sstable基本组成单位。
可以理解的是,本说明书实施例中,冻结是指动态数据即活跃memtable更新到一定时间或者数据量达到一定规模后,数据库停止该块动态数据的修改,后续的更新写入新的动态数据块即新的活跃memtable,旧的动态数据块不再修改。转储是指出于节省内存或者持久化等原因将一个冻结的动态数据块即上述冻结memtable持久化(转化为转储sstable并保存到SSD固态盘或磁盘上)的过程。合并是指将一个或多个转储sstable和基线sstable进行合并生成新的基线sstable的过程。
另外,需要说明的是,在针对目标源分区创建新分区后,需要冻结目标源分区中的活跃memtable,冻结后的写入都在新分区中的活跃memtable上。
本实施例中,目标源分区中存在多种类型的数据结构,将目标源分区中数据量超过预设值的数据文件作为第一数据文件。其中,预设值具体可以根据实际需要设置。以OceanBase数据库为例,基线sstable的数据量远远大于memtable和转储sstable,因此,在本实施例的一种实施方式中,可以将目标源分区中的基线sstable文件作为第一数据文件,即对基线sstable文件执行以下第一分裂步骤。需要说明的是,在本说明书其他实施例中,也可以将其他数据结构的数据块或数据文件作为第一数据文件,例如,可以将基线sstable和转储sstable均作为第一数据文件,从而分别对基线sstable和转储sstable进行分轮渐进分裂,此处不作限制。
步骤S202,对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中。
具体来讲,如图3所示,上述第一分裂步骤可以包括以下步骤S301至步骤S303。
步骤S301,将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组。
步骤S302,根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理。
步骤S303,重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕。
本实施例中的第一分裂步骤与上述第一方面提供的实施例中的分裂步骤类似,区别之处在于上述第一分裂步骤中,在每轮将目标分裂数据组分裂完成即将每个第二数据组分别赋给与该第二数据组对应的新分区后,需要进一步对新分区中的目标数据进行合并处理,即在新分区满足预设的合并条件时,对目标数据进行合并,得到目标文件。需要说明的是,第一分裂步骤中与上述第一方面提供的实施例中的分裂步骤类似之处可以具体参照上述第一方面中的相应表述,此处不再详述。
为了进一步减少分区分裂过程消耗的资源,在上述步骤S302所述的渐进分裂过程中,在完成每一轮分裂后,即针对当前的目标分裂数据组,将每个第二数据组分别赋给与该第二数据组对应的新分区之后,还可以包括:将分裂完成的目标分裂数据组从所述目标源分区中删除。具体过程可以参见上述第一方面中的相应过程。这样就可以在分区分裂过程中释放这部分数据占用的空间资源,节省了磁盘空间资源。
可以理解的是,在基于LSM的数据库系统中,随着数据写入不断增多,转储次数也会不断增多,进而转储sstable也会越来越多。然而,太多sstable会导致数据查询IO次数增多,因此需要不断对这些sstable进行合并。本实施例中,目标数据包括新分区中的基线数据和转储数据,即基线sstable和转储sstable。
由于本实施例对第一数据文件采用了分多轮完成分裂的渐进分裂方式,当第一数据文件为基线数据文件即目标源分区中的基线sstable文件时,目标数据中的基线数据可以包括:对当前目标分裂数据组进行分裂得到的数据即本轮分裂得到的基线数据以及由上一个目标分裂数据组分裂且合并后得到的数据即上一轮分裂且合并后得到的目标文件。需要说明的是,若当前分裂过程为第一数据文件的首轮分裂,则不存在由上一个目标分裂数据组分裂且合并后得到的数据即不存在上一轮得到的目标文件,此时目标数据中的基线数据包括:对当前目标分裂数据组进行分裂得到的数据即本轮分裂得到的基线数据,从而将对当前目标分裂数据组分裂得到的数据以及转储数据即新分区中的转储stable进行合并。
目标数据中的转储数据包括对目标源分区中的转储数据文件进行分裂得到的数据和/或对写入所述新分区的新数据进行冻结以及转储处理后得到的数据。可以理解的是,在对目标源分区进行分裂的过程中,创建好目标源分区对应的新分区且冻结目标源分区中的活跃memtable后,写入都在新分区中的活跃memtable上。新分区上的活跃memtable更新到一定时间或者数据量达到一定规模后会被冻结,成为冻结memtable,进而转储形成一个转储sstable。
以OceanBase数据库为例,当第一数据文件为基线sstable文件时,由于基线sstable是由多个宏块组成,根据预先配置的渐进分裂轮数,获取本轮待分裂的宏块,根据预设的分裂规则对本轮待分裂的宏块进行分裂。具体来讲,如果采用Hash分裂,则根据上述分裂规则迭代待分裂的宏块中每一行数据求hash值,放入相应的sstable中。如果采用Range分裂,只需将处于分区边界的宏块中的数据迭代出来,不需要迭代的宏块可以直接放入相应的sstable中,进而将组织好的基线sstable,赋给相应的新分区,完成本轮数据的分裂。
在每一轮数据分裂完成后,需要对新分区中的目标数据进行合并。将本轮分裂得到基线sstable、上一轮分裂且经过合并后得到的基线sstable以及转储sstable合并成一个新的基线sstable。
例如,图4示出了一个对基线sstable进行渐进分裂的简化模型示例。在该示例中,假设需要将目标源分区分裂为两个新分区F1和F2,分裂规则为:主键%2,且没有其他的基线sstable、转储sstable以及memtable。图4中,每个矩形框表示一个宏块,每个矩形框中的数字表示该宏块中每个行数据的主键,带箭头的虚线表示分裂,带箭头的实线表示合并。如图4所示,对该基线sstable分三轮进行分裂,第一轮的目标分裂数据组包括前三个宏块,第二轮的目标分裂数据组包括中间三个宏块,第三轮的目标分裂数据组包括后三个宏块。具体分裂过程如下:
第一轮分裂过程:按照分裂规则将分裂后得到的第二数据组“1,3,19,25”赋给新分区F1,第二数据组“8,12,16,28”赋给新分区F2,假设此时不满足合并条件,直接执行第二轮分裂过程。
第二轮分裂过程:按照分裂规则将分裂后得到的第二数据组“83,67,101,103”赋给新分区F1,第二数据组“50,56”赋给新分区F2。此时满足合并条件,触发合并任务,将新分区F1中第一轮分裂得到的第二数据组“1,3,19,25”与第二轮分裂得到的第二数据组“83,67,101,103”进行合并,得到包含“1,3,19,25,83,67,101,103”的目标文件,同理可以将新分区F2中第一轮分裂得到的第二数据组“8,12,16,28”与第二轮分裂得到的第二数据组“50,56”进行合并,得到包含“8,12,16,28,50,56”的目标文件,然后执行第三轮分裂过程。
第三轮分裂过程:按照分裂规则将分裂后得到的第二数据组“117,135,167”赋给新分区F1,第二数据组“110,126”赋给新分区F2。此时满足合并条件,触发合并任务,将新分区F1中第二轮分裂且合并后得到的目标文件与第三轮分裂得到的第二数据组“117,135,167”进行合并,得到包含“1,3,19,25,83,67,101,103,117,135,167”的新的目标文件,同理可以将新分区F2中第一轮分裂且合并后得到的目标文件与第三轮分裂得到的第二数据组“110,126”进行合并,得到包含“8,12,16,28,50,56,110,126”的新的目标文件,从而完成分裂过程。
可选地,在上述三轮分裂过程中,每完成一轮分裂,就可以将已分裂完成的目标分裂数据组从相应的目标源分区中删除,以便释放这部分数据占用的空间资源,节省磁盘空间。
可以理解的是,sstable文件中,数据通常是以键值对(key,value)的格式有序存储的,被划分成一系列的数据块。因此,基线数据和转储数据均包括多个数据块,每个数据块包括多个数据条目,数据条目的具体格式由具体数据库的存储格式决定,例如,在OceanBase数据库中,一行数据即为一个数据条目。此时,在一种实施方式中,上述对新分区中的目标数据进行合并处理具体可以包括:在所述新分区中构建一个目标文件;判断所述目标数据包含的数据块之间是否存在交集;若存在,则分别将所述基线数据和转储数据中每个数据块的每个数据条目依次迭代到所述目标文件中,并在迭代过程中,将相交的数据条目融合成一条新的数据条目再放入所述目标文件中;若不存在,则将所述基线数据包含的所有数据块均直接放入所述目标文件中,并将所述转储数据的每个数据条目依次迭代到所述目标文件中,即在这种情况下可以直接重用基线数据包含的数据块,无需迭代,节省了大量的CPU、IO资源,极大地减少了分区分裂所需的资源,提升了分裂性能。
在上述合并过程中,判断数据块之间是否存在交集具体包括:判断数据块对应的数据范围是否存在重叠,例如,数据条目为行数据,且包含两列,第一列为主键,第二列为主键对应的值,假设基线数据的某一数据块与转储数据的某一数据块中存在同一数据条目即主键相同的数据条目,则表示这两个数据块之间存在相交的数据条目,也即这两个数据块之间存在交集。对于相交的数据条目需要进行融合,即保留这些数据条目中最新写入的数据,去除相应的旧数据,组合成一个新的数据条目。
例如,每个数据条目为一行数据,包含三列,第一列为主键,第二列为第一参数值,第三列第二参数值,存在两条相交的数据条目,分别为(1,a,b)和(1,a′,),即主键均为1,前一个的第一参数值为a,第二参数值为b,后一个的第一参数值为a′,第二参数值为空,假设前一个数据条目先于后一个数据条目写入,则合并后的新数据条目为(1,a′,b)。
以OceanBase数据库为例,sstable文件是由多个宏块组成的,每个宏块包含多行已排序的数据。此时,目标数据包括新分区中的转储sstable、本轮分裂得到的基线sstable以及前一轮分裂且合并后得到的基线sstable,需要将这些数据文件合并成一个新的基线sstable。在合并过程中,迭代转储sstable时会把所有的行数据迭代出来,迭代基线sstable时,不需要迭代所有行数据,某些条件下可以直接重用宏块:如果目标数据中包括的基线sstable的宏块之间没有交集,并且与转储sstable的数据没有交集,则基线sstable的宏块可以直接重用,放入目标文件即新的基线sstable中。如果目标数据中包括的基线sstable的宏块之间有交集,或者基线sstable与转储sstable的数据有交集,则需要迭代宏块中的行数据,如果多个table中存在同一行数据,需要将这些行数据进行融合,得到一个新的行数据,然后将新的行数据写入目标文件即新的基线sstable的宏块中。
另外,可以理解的是,当第一数据文件为目标源分区中的基线数据文件即基线sstable文件时,除了第一数据文件以外,目标源分区中还存储有第二数据文件,第二数据文件的数据量不超过上述预设值的数据文件,第二数据文件的数据量低于第一数据文件的数据量。相应地,本实施例提供的分区分裂方法还可以包括:步骤S203,对所述第二数据文件执行第二分裂步骤,以将所述第二数据文件分裂到所述两个以上新分区中。具体来讲,第二分裂步骤可以包括:根据预设的分裂规则将所述第二数据文件分裂为多个第三数据组,且每个第三数据组对应于一个新分区;将所述每个第三数据组分别赋给与该第三数据组对应的新分区。
需要说明的是,上述步骤S203可以在上述步骤S202之前执行,也可以在上述步骤S202之后执行,或者,与上述步骤S202基本同时执行。
在本实施例的一种实施方式中,第二数据文件可以包括转储sstable文件。在完成对转储sstable文件的分裂后,可以判断相应新分区是否满足转储条件,对满足转储条件的新分区进行转储。此时,上述目标数据中的转储数据可以包括由第二数据文件分裂后得到的数据和/或对写入所述新分区的新数据进行冻结以及转储处理后得到的数据。
另外,在本实施例的其他实施方式中,第二数据文件也可以包括转储sstable文件和冻结memtable数据块。此时,需要分别对转储sstable文件以及冻结memtable数据块执行上述的第二分裂步骤,以实现转储sstable文件的分裂以及冻结memtable数据块的分裂。
在本实施例中,上述步骤S202和步骤S203是对新分区进行物理分裂的过程。可以理解的是,为了便于分区分裂过程中用户能够正常执行查询操作,在本说明书一实施例中,在对新分区进行物理分裂之前,还需要先进行逻辑分裂。也就是说,在对所述第一数据文件执行第一分裂步骤之前,还包括:针对所述目标源分区中存储的每个数据文件,在每个新分区中创建相应的引用文件,每个所述引用文件用于引用相应的数据文件。
具体来讲,针对目标源分区创建新分区后,需要冻结旧分区上的memtable,并分别创建引用文件,引用目标源分区中的所有sstable和冻结memtable。此时,在将所述每个第二数据组分别赋给与该第二数据组对应的新分区之后,还包括:当所述引用文件对应的数据文件被分裂完成后,将所述引用文件从所述新分区中删除。具体过程可以参见上述第一方面中的相应描述。
需要说明的是,在完成新分区的逻辑分裂后,且在对新分区进行物理分裂之前,接收到用户的查询请求时,需要查询该新分区中的某些数据时,需要在该新分区中的新memtable和从目标源分区中引用的table中进行查询,此时可能会查询出不属于此分区的数据,因此需要对查询出来的数据做过滤。具体过滤过程可以参见上述第一方面提供的实施例中的相应描述。
可选地,在本说明书一实施例中,在对第一数据文件执行第一分裂步骤,以将第一数据文件分裂到两个以上新分区中之前,还包括:判断所述目标源分区是否满足预设的转储条件,若是,对所述目标源分区中的数据进行转储处理;待所述目标源分区转储完成后,对所述目标源分区对应的每个新分区中的引用文件进行更新。若目标源分区不满足预设的转储条件,则执行相应的物理分裂过程。转储后会将目标源分区中的冻结memtable以及多个转储sstable,合成一个转储sstable。由于目标源分区中的数据文件发生了变化,因此,目标源分区转储后,需要更新该目标源分区对应的新分区的table引用,然后该新分区才能进行后续的物理分裂。先对目标源分区进行转储再进行物理分裂过程,有利于及时释放内存空间资源。
在本说明书实施例的一具体应用场景中,数据库系统内部会根据内存使用量或者是定时触发冻结任务,转储任务和合并任务,当然也可以是手动触发。当接收到触发命令时,依次扫描系统中存在的所有分区,对满足冻结条件的分区进行冻结,并判断是否需要进行物理分裂即是否为完成了逻辑分裂的新分区,对不需要进行物理分裂的分区则直接触发转储任务和合并任务,对需要进行物理分裂的分区进行上述物理分裂过程,并且在对该分区进行物理分裂之前,先判断该分区对应的目标源分区是否需要转储,若需要,则先对该目标源分区进行转储,并在转储后更新相应的新分区中的逻辑引用,进而再对该分区进行上述的物理分裂过程。
此时,该分区中没有引用目标源分区的冻结memtable,也就是说,物理分裂过程需要对引用的转储sstable和基线sstable分别进行分裂,先将转储sstable的数据迭代出来,按照分裂规则进行分裂,将目标源分区中所有转储sstable的数据分裂到相应的新分区后,可以对新分区进行转储处理,即当新分区满足转储条件时对其进行转储。完成对转储sstable的分裂后,对引用的基线sstable进行上述渐进分裂,并且在完成每一轮分裂后对相应新分区进行合并处理,直至完成对基线sstable的渐进分裂以及新分区的合并。
本说明书实施例提供的分区分裂方法,通过多轮完成对采用LSM tree结构的分区中第一数据文件的分裂,将分区分裂对资源的消耗分散到多个时间段,有效地节省了分裂过程在同一时间段内占用的CPU,IO和磁盘空间等资源。同时能够良好地协调分裂与合并的时机,有效地避免了分区分裂的引入对在线业务造成影响。另外,在对分区数据进行合并的过程中,采用了数据块重用的方式,进一步节省了大量的CPU以及IO资源,极大地减少了分区分裂所需的资源,提升了分裂性能。并且,适用范围广,能够适用于多种类型的分区如Range分区、Hash分区以及list分区等。
第三方面,基于与前述第一方面实施例提供的分区分裂方法同样的发明构思,本说明书实施例还提供了一种分区分裂装置。请参见图5,该分区分裂装置50包括:
第一创建模块51,用于针对目标源分区创建两个以上新分区;
第一分裂模块53,用于将所述目标源分区中的数据文件划分为两个以上数据组,从所述两个以上数据组中选取一个数据组作为目标分裂数据组,对所述目标分裂数据组执行分裂步骤,待所述目标分裂数据组分裂完成后,重新在所述两个以上数据组中,除分裂完成的数据组以外的其余数据组中选取一个数据组作为目标分裂数据组,直至将所述两个以上数据组均分裂完毕;
其中,所述分裂步骤包括:根据预设的分裂规则将所述目标分裂数据组分裂为多个子数据组,且每个子数据组对应于一个新分区,将所述每个子数据组分别赋给与该子数据组对应的新分区。
作为一种可选的实施例,上述分区分裂装置50还可以包括:第一数据删除模块54,用于将分裂完成的目标分裂数据组从所述目标源分区中删除。
作为一种可选的实施例,上述分区分裂装置50还可以包括:第一引用模块52,用于针对所述目标源分区中存储的数据文件,在每个新分区中创建引用文件,所述引用文件用于引用所述数据文件;第一引用删除模块55,用于当所述引用文件对应的数据均被分裂完成后,将所述引用文件从所述新分区中删除。
需要说明的是,本说明书实施例所提供的分区分裂装置50,其中各个模块执行操作的具体方式已经在上述第一方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第四方面,基于与前述第二方面实施例提供的分区分裂方法同样的发明构思,本说明书实施例还提供了一种分区分裂装置,应用于采用日志结构合并树LSM tree的数据库系统。请参见图6,该分区分裂装置60包括:
第二创建模块61,用于针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;
第二分裂模块64,用于对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中。
其中,所述第一分裂步骤包括:
将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组;
根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理;
重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕。
作为一种可选的实施例,所述目标源分区中还存储有第二数据文件,所述第二数据文件为数据量不超过所述预设值的数据文件,此时,上述分区分裂装置60还可以包括:
第三分裂模块65,用于对所述第二数据文件执行第二分裂步骤,以将所述第二数据文件分裂到所述两个以上新分区中。其中,所述第二分裂步骤包括:根据预设的分裂规则将所述第二数据文件分裂为多个第三数据组,且每个第三数据组对应于一个新分区;将所述每个第三数据组分别赋给与该第三数据组对应的新分区。
作为一种可选的实施例,所述第一数据文件为基线数据文件,此时,上述目标数据可以包括所述新分区中的基线数据和转储数据。其中,所述基线数据包括对当前目标分裂数据组进行分裂得到的数据以及对上一个目标分裂数据组进行分裂且合并后得到的数据,所述转储数据包括对所述目标源分区中的转储数据文件进行分裂得到的数据和/或对写入所述新分区的新数据进行冻结以及转储处理后得到的数据。
作为一种可选的实施例,所述目标数据包括所述新分区中的基线数据和转储数据,所述基线数据和转储数据均包括多个数据块,每个数据块包括多个数据条目。此时,上述第二分裂模块64可以包括:
构建子模块641,用于在所述新分区中构建一个目标文件;
判断子模块642,用于判断所述目标数据包含的数据块之间是否存在交集;
第一写入子模块643,用于当所述判断子模块642判定不存在交集时,则将所述基线数据包含的所有数据块均直接放入所述目标文件中,并将所述转储数据的每个数据条目依次迭代到所述目标文件中;
第二写入子模块644,用于当所述判断子模块642判定存在交集时,则分别将所述基线数据和转储数据中每个数据块的每个数据条目依次迭代到所述目标文件中,并在迭代过程中,将相交的数据条目融合成一条新的数据条目再放入所述目标文件中。
作为一种可选的实施例,上述分区分裂装置60还可以包括:第二数据删除模块66,用于将分裂完成的目标分裂数据组从所述目标源分区中删除。
作为一种可选的实施例,上述分区分裂装置60还可以包括:第二引用模块62,用于针对所述目标源分区中存储的每个数据文件,在每个新分区中创建相应的引用文件,每个所述引用文件用于引用相应的数据文件;第二引用删除模块67,用于当所述引用文件对应的数据文件被分裂完成后,将所述引用文件从所述新分区中删除。
作为一种可选的实施例,上述分区分裂装置60还可以包括:转储判断模块63,用于判断所述目标源分区是否满足预设的转储条件,若是,对所述目标源分区中的数据进行转储处理;待所述目标源分区转储完成后,对所述目标源分区对应的每个新分区中的引用文件进行更新。
需要说明的是,本说明书实施例所提供的分区分裂装置60,其中各个模块执行操作的具体方式已经在上述第二方面提供的方法实施例中进行了详细描述,此处将不做详细阐述说明。
第五方面,基于与前述实施例提供的分区分裂方法同样的发明构思,本说明书实施例还提供一种电子设备,包括存储器、一个或多个处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前文第一方面提供的分区分裂方法的步骤或第二方面提供的分区分裂方法的步骤。
图7示出了一种可应用于本说明书实施例中的存储服务器的结构框图。如图7所示,存储服务器70包括:存储器701、处理器702以及网络模块703。
存储器701可用于存储软件程序以及模块,如本说明书实施例中的分区分裂方法及装置对应的程序指令/模块以及数据文件,处理器702通过运行存储在存储器701内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本发明实施例中的分区分裂方法。存储器701可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。进一步地,上述存储器701内的软件程序以及模块还可包括:操作系统721以及服务模块722。其中操作系统721,例如可为LINUX、UNIX、WINDOWS,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。服务模块722运行在操作系统721的基础上,并通过操作系统721的网络服务监听来自网络的请求,根据请求完成相应的数据处理,并返回处理结果给用户端。也就是说,服务模块722用于向用户端提供网络服务。
网络模块703用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。
本说明书实施例中的存储服务器70为数据库系统中的存储服务器。可以理解的是,图7所示的结构仅为示意,存储服务器70还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。图7中所示的各组件可以采用硬件、软件或其组合实现。
第六方面,基于与前述实施例中提供的分区分裂方法同样的发明构思,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第一方面提供的分区分裂方法或第二方面提供的分区分裂方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。

Claims (14)

1.一种分区分裂方法,应用于采用日志结构合并树LSM tree的数据库系统,包括:
针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;
对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中,其中,所述第一分裂步骤包括:
将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组;
根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理;
重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕;
其中,所述目标数据包括所述新分区中的基线数据和转储数据,所述基线数据和转储数据均包括多个数据块,每个数据块包括多个数据条目,所述对所述新分区中的目标数据进行合并处理,包括:
在所述新分区中构建一个目标文件;
判断所述目标数据包含的数据块之间是否存在交集;
若不存在,则将所述基线数据包含的所有数据块均直接放入所述目标文件中,并将所述转储数据的每个数据条目依次迭代到所述目标文件中;
若存在,则分别将所述基线数据和转储数据中每个数据块的每个数据条目依次迭代到所述目标文件中,并在迭代过程中,将相交的数据条目融合成一条新的数据条目再放入所述目标文件中。
2.根据权利要求1所述的方法,所述目标源分区中还存储有第二数据文件,所述第二数据文件为数据量不超过所述预设值的数据文件,所述方法还包括:
对所述第二数据文件执行第二分裂步骤,以将所述第二数据文件分裂到所述两个以上新分区中,
其中,所述第二分裂步骤包括:根据预设的分裂规则将所述第二数据文件分裂为多个第三数据组,且每个第三数据组对应于一个新分区;将所述每个第三数据组分别赋给与该第三数据组对应的新分区。
3.根据权利要求1所述的方法,所述第一数据文件为基线数据文件,
其中,所述基线数据包括对当前目标分裂数据组进行分裂得到的数据以及对上一个目标分裂数据组进行分裂且合并后得到的数据,所述转储数据包括对所述目标源分区中的转储数据文件进行分裂得到的数据和/或对写入所述新分区的新数据进行冻结以及转储处理后得到的数据。
4.根据权利要求1所述的方法,所述将所述每个第二数据组分别赋给与该第二数据组对应的新分区之后,还包括:
将分裂完成的目标分裂数据组从所述目标源分区中删除。
5.根据权利要求1所述的方法,所述对所述第一数据文件执行第一分裂步骤之前,还包括:
针对所述目标源分区中存储的每个数据文件,在每个新分区中创建相应的引用文件,每个所述引用文件用于引用相应的数据文件;
所述将所述每个第二数据组分别赋给与该第二数据组对应的新分区之后,还包括:
当所述引用文件对应的数据文件被分裂完成后,将所述引用文件从所述新分区中删除。
6.根据权利要求5所述的方法,所述对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中之前,还包括:
判断所述目标源分区是否满足预设的转储条件,若是,对所述目标源分区中的数据进行转储处理;
待所述目标源分区转储完成后,对所述目标源分区对应的每个新分区中的引用文件进行更新。
7.一种分区分裂装置,应用于采用日志结构合并树LSM tree的数据库系统,包括:
第二创建模块,用于针对目标源分区创建两个以上新分区,所述目标源分区中存储有第一数据文件,所述第一数据文件为数据量超过预设值的数据文件;
第二分裂模块,用于对所述第一数据文件执行第一分裂步骤,以将所述第一数据文件分裂到所述两个以上新分区中,其中,所述第一分裂步骤包括:
将所述第一数据文件划分为两个以上第一数据组,从所述两个以上第一数据组中选取一个第一数据组作为目标分裂数据组;
根据预设的分裂规则将所述目标分裂数据组分裂为多个第二数据组,且每个第二数据组对应于一个新分区,将所述每个第二数据组分别赋给与该第二数据组对应的新分区,并对所述新分区中的目标数据进行合并处理;
重新在所述两个以上第一数据组中,除分裂完成的第一数据组以外的其余第一数据组中选取一个第一数据组作为目标分裂数据组,直至将所述两个以上第一数据组均分裂完毕;
其中,所述目标数据包括所述新分区中的基线数据和转储数据,所述基线数据和转储数据均包括多个数据块,每个数据块包括多个数据条目,所述第二分裂模块包括:
构建子模块,用于在所述新分区中构建一个目标文件;
判断子模块,用于判断所述目标数据包含的数据块之间是否存在交集;
第一写入子模块,用于当所述判断子模块判定不存在交集时,则将所述基线数据包含的所有数据块均直接放入所述目标文件中,并将所述转储数据的每个数据条目依次迭代到所述目标文件中;
第二写入子模块,用于当所述判断子模块判定存在交集时,则分别将所述基线数据和转储数据中每个数据块的每个数据条目依次迭代到所述目标文件中,并在迭代过程中,将相交的数据条目融合成一条新的数据条目再放入所述目标文件中。
8.根据权利要求7所述的装置,所述目标源分区中还存储有第二数据文件,所述第二数据文件为数据量不超过所述预设值的数据文件,所述装置还包括:
第三分裂模块,用于对所述第二数据文件执行第二分裂步骤,以将所述第二数据文件分裂到所述两个以上新分区中,
其中,所述第二分裂步骤包括:根据预设的分裂规则将所述第二数据文件分裂为多个第三数据组,且每个第三数据组对应于一个新分区;将所述每个第三数据组分别赋给与该第三数据组对应的新分区。
9.根据权利要求7所述的装置,所述第一数据文件为基线数据文件,
其中,所述基线数据包括对当前目标分裂数据组进行分裂得到的数据以及对上一个目标分裂数据组进行分裂且合并后得到的数据,所述转储数据包括对所述目标源分区中的转储数据文件进行分裂得到的数据和/或对写入所述新分区的新数据进行冻结以及转储处理后得到的数据。
10.根据权利要求7所述的装置,还包括:
第二数据删除模块,用于将分裂完成的目标分裂数据组从所述目标源分区中删除。
11.根据权利要求7所述的装置,还包括:
第二引用模块,用于针对所述目标源分区中存储的每个数据文件,在每个新分区中创建相应的引用文件,每个所述引用文件用于引用相应的数据文件;
第二引用删除模块,用于当所述引用文件对应的数据文件被分裂完成后,将所述引用文件从所述新分区中删除。
12.根据权利要求11所述的装置,还包括:
转储判断模块,用于判断所述目标源分区是否满足预设的转储条件,若是,对所述目标源分区中的数据进行转储处理;待所述目标源分区转储完成后,对所述目标源分区对应的每个新分区中的引用文件进行更新。
13.一种电子设备,包括:
存储器;
一个或多个处理器;及
权利要求7-12中任一项所述的分区分裂装置,存储于所述存储器中并被配置成由一个或多个处理器执行。
14.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
CN201910080122.9A 2019-01-28 2019-01-28 分区分裂方法、装置、电子设备及可读存储介质 Active CN110032549B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN201910080122.9A CN110032549B (zh) 2019-01-28 2019-01-28 分区分裂方法、装置、电子设备及可读存储介质
TW108129625A TWI738037B (zh) 2019-01-28 2019-08-20 分區分裂方法、裝置、電子設備及可讀儲存媒體
US16/698,227 US10684787B1 (en) 2019-01-28 2019-11-27 Partition splitting method and apparatus, electronic device, and readable storage medium
EP20709375.8A EP3857402B1 (en) 2019-01-28 2020-01-28 Partition splitting method and apparatus, electronic device, and readable storage medium
PCT/US2020/015472 WO2020160035A1 (en) 2019-01-28 2020-01-28 Partition splitting method and apparatus, electronic device, and readable storage medium
US16/899,251 US11016690B2 (en) 2019-01-28 2020-06-11 Partition splitting method and apparatus, electronic device, and readable storage medium
US17/324,865 US11269535B2 (en) 2019-01-28 2021-05-19 Partition splitting method and apparatus, electronic device, and readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910080122.9A CN110032549B (zh) 2019-01-28 2019-01-28 分区分裂方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN110032549A CN110032549A (zh) 2019-07-19
CN110032549B true CN110032549B (zh) 2023-10-20

Family

ID=67235598

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910080122.9A Active CN110032549B (zh) 2019-01-28 2019-01-28 分区分裂方法、装置、电子设备及可读存储介质

Country Status (5)

Country Link
US (3) US10684787B1 (zh)
EP (1) EP3857402B1 (zh)
CN (1) CN110032549B (zh)
TW (1) TWI738037B (zh)
WO (1) WO2020160035A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032549B (zh) 2019-01-28 2023-10-20 北京奥星贝斯科技有限公司 分区分裂方法、装置、电子设备及可读存储介质
CN110716942A (zh) * 2019-10-26 2020-01-21 南京录信软件技术有限公司 一种基于Lucene的大索引快速分裂方法
US11301210B2 (en) * 2019-11-13 2022-04-12 Cloudera, Inc. Merging multiple sorted lists in a distributed computing system
CN111352908B (zh) * 2020-02-28 2023-10-10 北京奇艺世纪科技有限公司 基于lsm的数据存储方法、装置、存储介质及计算机设备
CN113094372A (zh) 2021-04-16 2021-07-09 三星(中国)半导体有限公司 数据存取方法、数据存取控制装置及数据存取系统
CN114253950B (zh) * 2022-02-28 2022-06-03 北京奥星贝斯科技有限公司 管理数据库的方法和装置
CN116643300B (zh) * 2023-07-25 2023-10-10 齐鲁空天信息研究院 基于地图映射的卫星导航数据分布式实时处理方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917494B2 (en) * 2008-07-11 2011-03-29 Adobe Software Trading Company Limited System and method for a log-based data storage
CN102073697A (zh) * 2010-12-28 2011-05-25 中兴通讯股份有限公司 一种数据处理方法及装置
CN105468642A (zh) * 2014-09-09 2016-04-06 杭州海康威视数字技术股份有限公司 数据的存储方法及装置
CN107436738A (zh) * 2017-08-17 2017-12-05 北京理工大学 一种数据存储方法及系统
US9852139B1 (en) * 2012-07-02 2017-12-26 Veritas Technologies Llc Directory partitioning with concurrent directory access

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085936B1 (en) * 1999-08-30 2006-08-01 Symantec Corporation System and method for using login correlations to detect intrusions
JP3640580B2 (ja) * 1999-11-11 2005-04-20 富士通株式会社 ソート・マージ処理装置
US7958096B2 (en) * 2000-09-20 2011-06-07 Ndsu-Research Foundation System and method for organizing, compressing and structuring data for data mining readiness
US7174343B2 (en) * 2002-05-10 2007-02-06 Oracle International Corporation In-database clustering
US7423656B2 (en) * 2003-03-11 2008-09-09 National University Of Singapore Method and apparatus for generating morphing sequence
US7533363B2 (en) * 2004-03-29 2009-05-12 Takumi Technology Corporation System for integrated circuit layout partition and extraction for independent layout processing
US7461091B2 (en) * 2005-06-09 2008-12-02 Sap Aktiengesellschaft Controlling data transition between business processes in a computer application
EP2016694B1 (en) * 2006-05-09 2019-03-20 Cognio, Inc. System and method for identifying wireless devices using pulse fingerprinting and sequence analysis
US9641615B1 (en) * 2014-03-31 2017-05-02 EMC IP Holding Company LLC Allocating RAID storage volumes across a distributed network of storage elements
CN105528347B (zh) * 2014-09-28 2019-03-26 北京古盘创世科技发展有限公司 数据块储存方法、数据查询方法和数据修改方法
US10346434B1 (en) * 2015-08-21 2019-07-09 Amazon Technologies, Inc. Partitioned data materialization in journal-based storage systems
US10031935B1 (en) * 2015-08-21 2018-07-24 Amazon Technologies, Inc. Customer-requested partitioning of journal-based storage systems
CN107943412B (zh) * 2016-10-12 2021-10-22 阿里巴巴集团控股有限公司 一种分区分裂、删除分区中数据文件的方法、装置及系统
US10706106B2 (en) * 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10725988B2 (en) * 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
CN110032549B (zh) 2019-01-28 2023-10-20 北京奥星贝斯科技有限公司 分区分裂方法、装置、电子设备及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917494B2 (en) * 2008-07-11 2011-03-29 Adobe Software Trading Company Limited System and method for a log-based data storage
CN102073697A (zh) * 2010-12-28 2011-05-25 中兴通讯股份有限公司 一种数据处理方法及装置
US9852139B1 (en) * 2012-07-02 2017-12-26 Veritas Technologies Llc Directory partitioning with concurrent directory access
CN105468642A (zh) * 2014-09-09 2016-04-06 杭州海康威视数字技术股份有限公司 数据的存储方法及装置
CN107436738A (zh) * 2017-08-17 2017-12-05 北京理工大学 一种数据存储方法及系统

Also Published As

Publication number Publication date
US10684787B1 (en) 2020-06-16
EP3857402B1 (en) 2023-03-08
US11016690B2 (en) 2021-05-25
US11269535B2 (en) 2022-03-08
CN110032549A (zh) 2019-07-19
WO2020160035A1 (en) 2020-08-06
TWI738037B (zh) 2021-09-01
US20200301596A1 (en) 2020-09-24
TW202044064A (zh) 2020-12-01
EP3857402A1 (en) 2021-08-04
US20210271404A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
CN110032549B (zh) 分区分裂方法、装置、电子设备及可读存储介质
US10275184B2 (en) Framework for volatile memory query execution in a multi node cluster
US10002148B2 (en) Memory-aware joins based in a database cluster
EP3637280B1 (en) Data storage method and device, and storage medium
US9875259B2 (en) Distribution of an object in volatile memory across a multi-node cluster
US20160162562A1 (en) Database system, computer program product, and data processing method
US20150370647A1 (en) Directed backup for massively parallel processing databases
CN112163048A (zh) 基于ClickHouse实现OLAP分析的方法、装置
CN113742135A (zh) 数据备份方法、装置及计算机可读存储介质
CN104932986A (zh) 一种数据重分布方法及装置
CN110597912B (zh) 一种区块存储方法及装置
CN107391508B (zh) 数据加载方法和系统
KR20210024751A (ko) 이종 메모리 장치를 포함하는 그래프 처리 시스템 및 그래프 처리 시스템의 동작방법
CN105469173A (zh) 一种静态内存进行优化管理的方法
US11429311B1 (en) Method and system for managing requests in a distributed system
CN103905512A (zh) 一种数据处理方法和设备
CN112579550A (zh) 一种分布式文件系统的元数据信息同步方法及系统
CN117056303A (zh) 适用于军事行动大数据的数据存储方法及装置
CN116820758A (zh) 作业处理方法、装置、计算机设备、存储介质和程序产品
CN114153395B (zh) 一种对象存储数据生命周期管理方法、装置及设备
CN114969165A (zh) 数据查询请求的处理方法、装置、设备及存储介质
CN115858486A (zh) 数据处理方法以及相关设备
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN112783835A (zh) 索引管理方法、装置及电子设备
CN115840756B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210208

Address after: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Ant financial (Hangzhou) Network Technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Innovative advanced technology Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210908

Address after: 100000 unit 02, floor 901, unit 1, building 1, No. 1, Middle East Third Ring Road, Chaoyang District, Beijing

Applicant after: Beijing Aoxing Beisi Technology Co.,Ltd.

Address before: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310000

Applicant before: Ant financial (Hangzhou) Network Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant