WO2023202394A1 - 分区表建立、针对分区表的数据写入、读取方法及装置 - Google Patents

分区表建立、针对分区表的数据写入、读取方法及装置 Download PDF

Info

Publication number
WO2023202394A1
WO2023202394A1 PCT/CN2023/087010 CN2023087010W WO2023202394A1 WO 2023202394 A1 WO2023202394 A1 WO 2023202394A1 CN 2023087010 W CN2023087010 W CN 2023087010W WO 2023202394 A1 WO2023202394 A1 WO 2023202394A1
Authority
WO
WIPO (PCT)
Prior art keywords
partition
data row
primary key
logical
data
Prior art date
Application number
PCT/CN2023/087010
Other languages
English (en)
French (fr)
Inventor
杨佳伟
谢振江
赵裕众
孙坚运
李洪嵚
刘基雄
Original Assignee
北京奥星贝斯科技有限公司
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 北京奥星贝斯科技有限公司 filed Critical 北京奥星贝斯科技有限公司
Publication of WO2023202394A1 publication Critical patent/WO2023202394A1/zh

Links

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/2282Tablespace storage structures; Management thereof
    • 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

Abstract

本说明书实施例提供一种分区表建立、针对分区表的数据写入、读取方法及装置,在分区表建立方法中,接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则。第一分区表为无主键表,分区规则至少指示,将第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目。基于各属性列创建第一分区表,并根据分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区,该物理分区具有全局唯一的分区标识。针对第一分区表添加合成主键作为隐藏主键,该合成主键由物理分区的分区标识和分区级的自增长标识构成。

Description

分区表建立、针对分区表的数据写入、读取方法及装置
本申请要求于2022年04月18日提交中国国家知识产权局、申请号为202210402300.7、申请名称为“分区表建立、针对分区表的数据写入、读取方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本说明书一个或多个实施例涉及数据库领域,尤其涉及一种分区表建立、针对分区表的数据写入、读取方法及装置。
背景技术
目前,很多现代数据库均通过日志结构的合并树(The Log-Structured-Merge Tree,LSM-tree)来存储数据。在LSM-tree的存储架构中,数据是按照键值(Key-Value)对的方式组织的,这里的键(Key)通常取自数据表的主键。然而,数据库中又不乏存在一些无主键表,对于该无主键表中的数据,如何基于LSM-tree实现存储就成为要解决的问题。
发明内容
本说明书一个或多个实施例描述了一种分区表建立、针对分区表的数据写入、读取方法及装置,可以针对无主键表生成有效的主键,进而可以实现通过LSM-Tree来存储数据。
第一方面,提供了一种分区表建立方法,包括:
接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则;所述第一分区表为无主键表,所述分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目;
基于所述各属性列创建所述第一分区表,并根据所述分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区;所述物理分区具有全局唯一的分区标识;
针对所述第一分区表添加合成主键作为隐藏主键;所述合成主键由物理分区的分区标识和分区级的自增长标识构成。
第二方面,提供了一种针对分区表的数据写入方法,包括:
获取待写入第一分区表的第一数据行,以及所述第一分区表的当前分区规则;所述当 前分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目;
根据所述第一数据行的对应于所述分区键的第一属性值,以及当前分区规则,确定所述第一数据行所属的目标逻辑分区;
根据逻辑分区与物理分区的映射关系,确定对应于所述目标逻辑分区的目标物理分区;所述目标物理分区具有全局唯一的分区标识;
将所述目标物理分区的分区标识以及所述第一数据行的自增长标识作为合成主键值,添加到所述第一数据行中;
将添加合成主键值后的第一数据行存储到所述第一分区表中。
第三方面,提供了一种针对分区表的数据读取方法,包括:
获取待读取的第一数据行的对应于分区键的第一属性值;
至少根据所述分区键的第一属性值,确定所述第一数据行的合成主键值;所述合成主键值包括所述第一数据行所属的目标物理分区的分区标识,以及所述第一数据行的自增长标识;所述目标物理分区具有全局唯一的分区标识;
基于所述合成主键值,从所述第一分区表中读取所述第一数据行。
第四方面,提供了一种分区表建立装置,包括:
接收单元,用于接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则;所述第一分区表为无主键表,所述分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目;
创建单元,用于基于所述各属性列创建所述第一分区表,并根据所述分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区;所述物理分区具有全局唯一的分区标识;
添加单元,用于针对所述第一分区表添加合成主键作为隐藏主键;所述合成主键由物理分区的分区标识和分区级的自增长标识构成。
第五方面,提供了一种针对分区表的数据写入装置,包括:
获取单元,用于获取待写入第一分区表的第一数据行,以及所述第一分区表的当前分区规则;所述当前分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目;
确定单元,用于根据所述第一数据行的对应于所述分区键的第一属性值,以及当前分区规则,确定所述第一数据行所属的目标逻辑分区;
所述确定单元,还用于根据逻辑分区与物理分区的映射关系,确定对应于所述目标逻辑分区的目标物理分区;所述目标物理分区具有全局唯一的分区标识;
添加单元,用于将所述目标物理分区的分区标识以及所述第一数据行的自增长标识作为合成主键值,添加到所述第一数据行中;
存储单元,用于将添加合成主键值后的第一数据行存储到所述第一分区表中。
第六方面,提供了一种针对分区表的数据读取装置,包括:
获取单元,用于获取待读取的第一数据行的对应于分区键的第一属性值;
确定单元,用于至少根据所述分区键的第一属性值,确定所述第一数据行的合成主键值;所述合成主键值包括所述第一数据行所属的目标物理分区的分区标识,以及所述第一数据行的自增长标识;所述目标物理分区具有全局唯一的分区标识;
读取单元,用于基于所述合成主键值,从所述第一分区表中读取所述第一数据行。
第七方面,提供了一种计算机存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一、第二或第三方面的方法。
第八方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一、第二或第三方面的方法。
本说明书一个或多个实施例提供的分区表建立、针对分区表的数据写入、读取方法及装置,对于无主键表,为其添加合成主键作为隐藏主键,这里的合成主键由物理分区的分区标识和分区级的自增长标识构成。由此可以解决无主键表中的数据无法通过LSM-Tree进行存储的问题。此外,由于物理分区的分区标识全局唯一,从而可以确保在针对无主键表的分区(包括逻辑分区和物理分区)执行分区合并、分区交换等分区管理操作之后,合成主键的唯一性。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的分区表建立方法流程图;
图3示出添加合成主键后的第一分区表示意图;
图4示出第一分区表的索引表示意图;
图5示出根据一个实施例的针对分区表的数据写入方法流程图;
图6示出根据一个实施例的针对分区表的数据读取方法流程图;
图7示出根据一个实施例的分区表建立装置示意图;
图8示出根据一个实施例的针对分区表的数据写入装置示意图;
图9示出根据一个实施例的针对分区表的数据读取装置示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
目前,传统数据库采用的存储架构通常不要求数据表具有主键。数据表的索引表中记录的是索引列以及数据行的行标识(ROWID)。然而,在针对数据表进行分区分裂、分区合并以及分区交换之后,数据行的行标识会发生变化,这使得索引表失效,需要重新构建。
在MySQL InnoDB中,针对无主键表,通常会为其添加一个表级的自增列作为隐藏主键。然而,在针对无主键表进行分区交换(通常在两个表之间进行)时,可能会存在表内主键冲突(或者不唯一)的问题,进而需要重写数据。可见,该种添加隐藏主键的方法不支持分区交换。
以TiDB、CockroachDB为代表的分布式数据库,通过LSM-Tree来存储数据,其添加隐藏主键的方法如下:
在TiDB中,针对无主键表,也会为其添加一个隐藏的自增列作为隐藏主键,这个自增列可以根据一个配置项来控制跨越的分区数量。这里的自增列可以为表级的,也可以为分区级的。然而如果配置为表级的,那么可能会存在分区交换后,主键冲突的问题。如果配置为分区级的,那么可能会存在分区合并后,分区内存在两个主键相同的问题。可见,该种添加主键的方法不能同时支持分区合并和分区交换。
在CockroachDB中,针对无主键表,将SQL执行节点ID和时间戳作为隐藏主键。该种方法在一些极端场景下无法保证主键唯一性。例如,在短时间内生成的大量隐藏主键。而且,在将SQL执行节点ID作为隐藏主键的一部分时,在集群运行时间较长,宕机重启比较多的场景中,SQL执行节点ID可能会超过无主键表的隐藏主键可以保存的范围。
由于上述各种添加隐藏主键的方法均存在相应的缺点,为此,本申请的发明人提出,对于无主键表,为其添加合成主键作为隐藏主键,这里的合成主键由物理分区的分区标识和分区级的自增长标识构成。由此可以解决无主键表中的数据无法通过LSM-Tree进行存 储的问题。此外,由于物理分区的分区标识全局唯一,从而可以确保在针对无主键表的分区(包括逻辑分区和物理分区)执行分区合并、分区交换等分区管理操作之后,合成主键的唯一性。也即本方案,不需要重写数据,即可实现针对无主键表的分区管理操作。
图1为本说明书披露的一个实施例的实施场景示意图。图1中,数据库系统可以接收用于创建分区表的SQL语句。该SQL语句可以指示待创建的分区表t1的属性列C1和C2以及分区规则。其中,分区规则可以指示,将分区表t1中有待写入的数据行划分为逻辑分区的分区键C1以及分区的数目:4。此外,还可以指示hash分区法。
执行上述SQL语句,以创建分区表t1,并针对分区表t1,创建对应的4个逻辑分区以及4个物理分区。在创建分区表t1之后,可以为其添加合成主键作为隐藏主键,该合成主键由物理分区的分区标识和分区级的自增长标识构成。
应理解,图1只是一种示例性说明,在实际应用中,上述分区方法也可以为Range分区法等,且分区的数目也可以其它数目,本说明书对此不作限定。
图2示出根据一个实施例的分区表建立方法流程图。该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图2所示,所述方法可以包括如下步骤。
步骤202,接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则。
这里的第一建表指令,可以为结构化查询语言(Structured Query Language,SQL)语句,也可以为诸如Transact-SQL等具有与SQL类似功能的其他数据库语言的语句。
上述第一分区表是指可以划分为多个逻辑分区的数据表,其中的每个逻辑分区对应于第一分区表的一个子集,且针对各逻辑分区用户可操作。在本说明书实施例中,上述第一分区表为无主键表。
上述分区规则至少指示,将第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区(包括逻辑分区和物理分区)的第一数目。其中的分区键通常由分区表的各属性列中的至少一列构成。
此外,分区规则还可以指示分区方法,这里的分区方法可以包括以下中的一种:哈希(Hash)分区法、区间(Range)分区法以及列表(list)分区法等。
其中,在分区方法为Range分区法时,分区规则还可以指示对应于每个分区的区间范围等。在分区方法为list分区法时,分区规则还可以指示对应于每个分区的属性值的集合等。
步骤204,基于各属性列创建第一分区表,并根据分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区。
这里的物理分区与逻辑分区一一对应。与逻辑分区不同的是,物理分区是实际存储数据的分区,即用于存储划分到对应逻辑分区的子集中的数据,其具有全局唯一的分区标识,且对于用户不可见。
此外,还可以建立逻辑分区与物理分区之间的映射关系。以图1为例来说,所建立的映射关系可以如表1所示。
表1
步骤206,针对第一分区表添加合成主键作为隐藏主键,该合成主键由物理分区的分区标识和分区级的自增长标识构成。
其中,上述分区级的自增长标识,通过在分区内按照自增编号方式依次对划分到该分区内的数据进行编号得到。
图3示出添加合成主键后的第一分区表示意图。图3中,真实列1-真实列N为第一分区表中的各属性列,分区标识和自增长标识为针对第一分区表添加的合成主键。
需要说明,由于物理分区的分区标识是全局唯一的,因此,在将物理分区的分区标识和分区级的自增长标识作为合成主键时,可以确保在针对第一分区表执行分区合并、分区交换或者分区分裂等分区管理操作的情况下,主键的唯一性或者有效性。应理解,在主键不失效的情况下,就可以不用重写数据。也就是说,针对上述第一分区表,不需要重写数据,即可实现对应的分区管理操作。
此外,在针对无主键表(即第一分区表)添加合成主键之后,可以解决无主键表中的数据无法通过LSM-Tree进行存储的问题。
还需要说明,在实际应用中,上述第一建表指令还可以包括第一分区表的索引列。在第一建表指令还包括索引列的情况下,还可以基于第一分区表的索引列、合成主键(也即隐藏主键)以及分区键,创建对应于第一分区表的索引表。
图4示出第一分区表的索引表示意图。应理解,基于图4中的分区键(也称主表分区键)和合成主键可以在第一分区表中唯一地确定一个数据行。具体地,基于分区键可以在第一分区表中定位出某个分区,在该分区内,基于合成主键可以唯一地确定出一个数据行。
应理解,图4只是一种示例性说明,在实际应用中,图4示出的索引表中还可以包括用于对索引表划分分区的分区键(索引表分区键)等,本说明书对此不作限定。
另外,由于在对第一分区表执行分区管理操作的情况下,第一分区表的合成主键也可以始终保持唯一,从而在将该合成主键添加到索引表时,可以确保索引列的有效性。也就是说,在本方案中,在针对第一分区表执行分区合并和分区分裂时,无需重建索引,由此可以节约计算资源。
以上是针对第一分区表建立方法的说明,应理解,在建立第一分区表后,可以向其中写入数据,以下对数据的写入方法进行说明。
图5示出根据一个实施例的针对分区表的数据写入方法流程图。该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图5所示,所述方法可以包括如下步骤。
步骤502,获取待写入第一分区表的第一数据行,以及第一分区表的当前分区规则。
需要说明,上述当前分区规则可以是第一分区表对应的建表指令中携带的初始的分区规则,也可以是在针对第一分区表执行分区合并、分区分裂或者分区交换等分区管理操作后,修改的分区规则。
上述当前分区规则至少指示,将第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目。
此外,上述当前分区规则还可以指示分区方法,这里的分区方法可以包括以下中的一种:哈希(Hash)分区法、区间(Range)分区法以及列表(list)分区法等。
在分区方法为Range分区法时,当前分区规则还可以指示对应于每个分区的当前区间范围等。这里的当前区间范围可以是指初始的区间范围或者修改的区间范围(执行分区管理操作时修改)。在分区方法为list分区法时,当前分区规则还可以指示对应于每个分区的当前属性值的集合等。
步骤504,根据第一数据行的对应于分区键的第一属性值,以及当前分区规则,确定第一数据行所属的目标逻辑分区。
以分区方法为Hash分区法为例,可以将上述第一属性值对分区的第一数目取模,得到取模结果。将第一分区表对应的各逻辑分区中,对应分区编号与取模结果相匹配的逻辑分区作为第一数据行所属的目标逻辑分区。
再以分区方法为Range分区法为例,可以从第一分区表对应的各逻辑分区中,选取出第一属性值落入到对应区间范围的逻辑分区,将选取出的逻辑分区作为第一数据行所属的 目标逻辑分区。
步骤506,根据逻辑分区与物理分区的映射关系,确定对应于目标逻辑分区的目标物理分区,该目标物理分区具有全局唯一的分区标识。
比如,基于如表1示出的映射关系,就可以确定出对应的目标物理分区。
步骤508,将目标物理分区的分区标识以及第一数据行的自增长标识作为合成主键值,添加到第一数据行中。
其中,第一数据行的自增长标识是通过将对应于目标逻辑分区的当前数据编号加1得到的。举例来说,假设第一分区表中已划分到目标逻辑分区的数据行为5个,且第5个数据行的数据编号为:005,那么第一数据行的自增长标识可以为:006。
步骤510,将添加合成主键值后的第一数据行存储到第一分区表中。
应理解,在为第一数据行添加合成主键值(即隐藏主键或合成主键的取值)之后,就可以通过LSM-tree来存储该第一数据行。此外,由于物理分区的分区标识是全局唯一的,从而可以确保在针对第一分区表执行分区管理操作的情况下,第一数据行的主键的唯一性。
可选地,针对上述第一分区表,还可以接收针对第一分区表进行分区管理操作的操作指令;其中,这里的分区管理操作包括以下中的一种:分区合并、分区交换以及分区分裂等。根据该操作指令,修改当前分区规则。
以分区方法为Hash分区法为例来说,若分区管理操作为分区合并或分区分裂,那么修改当前分区规则可以包括,调整分区的第一数目。
以图1为例来说,假设将逻辑分区1和逻辑分区2合并,那么可以将分区的第一数目从4调整为3。
以分区方法为Range分区法为例来说,若分区管理操作为分区合并或分区分裂,那么修改当前分区规则可以包括,调整分区的第一数目以及至少部分分区的区间范围。
举例来说,假设针对第一分区表划分有3个逻辑分区,其该3个逻辑分区对应的区间范围分别为:(0,100)、(100,200)、(200,300),那么在将前两个分区合并后,可以将分区的第一数目从3调整为2,且对应的区间范围调整为:(0,200)和(200,300)。
需要说明,通过执行上述操作指令,可以分别对各逻辑分区以及各物理分区执行对应的分区管理操作,从而已经存储到第一分区表的数据行所属的逻辑分区也会相应的发生变化。
应理解,在修改当前分区规则之后,可以基于修改后的当前分区规则,向第一分区表 写入新的数据行。具体如下:
获取待写入第一分区表的第二数据行,以及修改后的当前分区规则。根据第二数据行的对应于分区键的第二属性值,以及修改后的当前分区规则,将第二数据行存储到第一分区表中。
这里,第二数据行的存储方法可以参照上述第一数据行的存储方法,本说明书在此不复赘述。
需要说明,在第一分区表具有索引表时,那么在执行步骤510之后,还可以执行如下步骤:
基于第一数据行的对应于索引列的索引值、合成主键值以及分区键的第一属性值,更新第一分区表的索引表。
由于第一数据行的合成主键值在针对第一分区表执行分区管理操作的情况下也是唯一的,从而在将其更新到索引表时,可以确保索引表的有效性。
以上是对向第一分区表中写入数据的方法说明,以下对从第一分区表中读取数据的方法进行说明。
图6示出根据一个实施例的针对分区表的数据读取方法流程图。该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。如图6所示,所述方法可以包括如下步骤。
步骤602,获取待读取的第一数据行的对应于分区键的第一属性值。
在一个示例中,可以接收查询指令,该查询指令可以包括分区键的第一属性值。这里的查询指令例如可以为用于查询第一分区表的SELECT语句。
在另一个示例中,上述查询指令还可以包括第一数据行的对应于索引列的索引值。
步骤604,至少根据获取的分区键的第一属性值,确定第一数据行的合成主键值。
该合成主键值包括第一数据行所属的目标物理分区的分区标识,以及第一数据行的自增长标识,其中,目标物理分区的分区标识是全局唯一的。
在一个示例中,若第一分区表不具有索引表,那么可以根据第一属性值,查询第一分区表,以确定第一数据行的合成主键值。
在另一个示例中,若第一分区表具有索引表,那么可以先获取第一数据行的对应于索引列的索引值。之后,根据索引值和第一属性值,查询第一分区表的索引表,得到第一数据行的合成主键值。
在一个例子中,可以从上述查询指令中获取第一数据行的对应于索引列的索引值。
应理解,上述基于分区键的第一属性值,确定第一数据行的合成主键值的过程也可以理解为是定位分区的过程。
步骤606,基于合成主键值,从第一分区表中读取第一数据行。
应理解,在基于分区键的第一属性中定位出分区后,在该分区内,基于合成主键值可以唯一地确定出第一数据行。
总之,在本说明书实施例中,基于合成主键值,可以从第一分区表中唯一地确定出一个数据行。
综上,本说明书实施例提供的针对分区表的数据读取方法,可以确保在针对第一分区表执行分区管理操作的情况下,也可以基于合成主键值,唯一地读取到一个数据行,也就是说,添加到数据行的合成主键值始终是有效的。由于该合成主键值是有效的,从而在将其添加到索引表中时,可以确保索引表的有效性。
与上述分区表建立方法对应地,本说明书一个实施例还提供的一种分区表建立装置,如图7所示,该装置可以包括:
接收单元702,用于接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则。该第一分区表为无主键表,该分区规则至少指示,将第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目。
上述分区规则还指示分区方法,该分区方法包括以下中的一种:哈希分区法、区间分区法以及列表分区法。
创建单元704,用于基于各属性列创建第一分区表,并根据分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区,该物理分区具有全局唯一的分区标识。
添加单元706,用于针对第一分区表添加合成主键作为隐藏主键,该合成主键由物理分区的分区标识和分区级的自增长标识构成。
可选地,上述第一建表指令还包括索引列;
创建单元704,还用于基于索引列、合成主键以及分区键,创建对应于第一分区表的索引表。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的分区表建立装置,可以针对无主键表生成有效的主键,进而可以实现通过LSM-Tree来存储数据。
与上述针对分区表的数据写入方法对应地,本说明书一个实施例还提供的一种针对分区表的数据写入装置,如图8所示,该装置可以包括:
获取单元802,用于获取待写入第一分区表的第一数据行,以及第一分区表的当前分区规则,该当前分区规则至少指示,将第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目。
确定单元804,用于根据第一数据行的对应于分区键的第一属性值,以及当前分区规则,确定第一数据行所属的目标逻辑分区。
确定单元804,还用于根据逻辑分区与物理分区的映射关系,确定对应于目标逻辑分区的目标物理分区,该目标物理分区具有全局唯一的分区标识。
添加单元806,用于将目标物理分区的分区标识以及第一数据行的自增长标识作为合成主键值,添加到第一数据行中。
存储单元808,用于将添加合成主键值后的第一数据行存储到第一分区表中。
可选地,当前分区规则还指示分区方法,且该分区方法为哈希分区法;
确定单元804具体用于:
将第一属性值对第一数目取模,得到取模结果;
将第一分区表对应的各逻辑分区中,对应分区编号与取模结果相匹配的逻辑分区作为目标逻辑分区。
可选地,当前分区规则还指示分区方法,且分区方法为区间分区法;
确定单元804具体用于:
从第一分区表对应的各逻辑分区中,选取出第一属性值落入到对应区间范围的逻辑分区;
将选取出的逻辑分区作为目标逻辑分区。
可选地,该装置还可以包括:
接收单元810,用于接收针对第一分区表进行分区管理操作的操作指令;其中,分区管理操作包括以下中的一种:分区合并、分区交换以及分区分裂;
修改单元812,用于根据操作指令,修改当前分区规则。
可选地,获取单元802,还用于获取待写入第一分区表的第二数据行,以及修改后的当前分区规则;
存储单元808,还用于根据第二数据行的对应于分区键的第二属性值,以及修改后的当前分区规则,将第二数据行存储到第一分区表中。
可选地,该装置还可以包括:
更新单元814,用于基于第一数据行的对应于索引列的索引值、合成主键值以及分区键的第一属性值,更新第一分区表的索引表。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的针对分区表的数据写入装置,可以针对数据行添加有效的合成主键值,进而可以通过LSM-Tree来进行存储。
与上述针对分区表的数据读取方法对应地,本说明书一个实施例还提供的一种针对分区表的数据读取装置,如图9所示,该装置可以包括:
获取单元902,用于获取待读取的第一数据行的对应于分区键的第一属性值。
确定单元904,用于至少根据分区键的第一属性值,确定第一数据行的合成主键值,该合成主键值包括第一数据行所属的目标物理分区的分区标识,以及第一数据行的自增长标识,该目标物理分区具有全局唯一的分区标识。
确定单元904具体用于:
接收数据查询指令,其中至少包括第一数据行的对应于索引列的索引值;
根据索引值和所述第一属性值,查询第一分区表的索引表,得到第一数据行的合成主键值。其中,索引表用于记录第一分区表的索引列、合成主键以及分区键的对应关系。
读取单元906,用于基于合成主键值,从第一分区表中读取第一数据行。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的针对分区表的数据读取装置,在针对第一分区表执行分区管理操作的情况下,基于合成主键值,可以唯一地读取到一个数据行。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2、图5或图6所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2、图5或图6所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例 的部分说明即可。
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。

Claims (24)

  1. 一种分区表建立方法,包括:
    接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则;所述第一分区表为无主键表,所述分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目;
    基于所述各属性列创建所述第一分区表,并根据所述分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区;所述物理分区具有全局唯一的分区标识;
    针对所述第一分区表添加合成主键作为隐藏主键;所述合成主键由物理分区的分区标识和分区级的自增长标识构成。
  2. 根据权利要求1所述的方法,其中,所述第一建表指令还包括索引列;所述方法还包括:
    基于所述索引列、所述合成主键以及所述分区键,创建对应于所述第一分区表的索引表。
  3. 根据权利要求1所述的方法,其中,所述分区规则还指示分区方法;所述分区方法包括以下中的一种:哈希分区法、区间分区法以及列表分区法。
  4. 一种针对分区表的数据写入方法,包括:
    获取待写入第一分区表的第一数据行,以及所述第一分区表的当前分区规则;所述当前分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目;
    根据所述第一数据行的对应于所述分区键的第一属性值,以及当前分区规则,确定所述第一数据行所属的目标逻辑分区;
    根据逻辑分区与物理分区的映射关系,确定对应于所述目标逻辑分区的目标物理分区;所述目标物理分区具有全局唯一的分区标识;
    将所述目标物理分区的分区标识以及所述第一数据行的自增长标识作为合成主键值,添加到所述第一数据行中;
    将添加合成主键值后的第一数据行存储到所述第一分区表中。
  5. 根据权利要求4所述的方法,其中,所述当前分区规则还指示分区方法,且所述分区方法为哈希分区法;
    所述确定所述第一数据行所属的目标逻辑分区,包括:
    将所述第一属性值对所述第一数目取模,得到取模结果;
    将所述第一分区表对应的各逻辑分区中,对应分区编号与所述取模结果相匹配的逻辑分区作为所述目标逻辑分区。
  6. 根据权利要求4所述的方法,其中,所述当前分区规则还指示分区方法,且所述分区方法为区间分区法;
    所述确定所述第一数据行所属的目标逻辑分区,包括:
    从所述第一分区表对应的各逻辑分区中,选取出所述第一属性值落入到对应区间范围的逻辑分区;
    将选取出的逻辑分区作为所述目标逻辑分区。
  7. 根据权利要求4所述的方法,还包括:
    接收针对所述第一分区表进行分区管理操作的操作指令;其中,所述分区管理操作包括以下中的一种:分区合并、分区交换以及分区分裂;
    根据所述操作指令,修改所述当前分区规则。
  8. 根据权利要求7所述的方法,还包括:
    获取待写入所述第一分区表的第二数据行,以及修改后的当前分区规则;
    根据所述第二数据行的对应于所述分区键的第二属性值,以及修改后的当前分区规则,将所述第二数据行存储到所述第一分区表中。
  9. 根据权利要求4所述的方法,还包括:
    基于所述第一数据行的对应于索引列的索引值、所述合成主键值以及所述分区键的第一属性值,更新所述第一分区表的索引表。
  10. 一种针对分区表的数据读取方法,包括:
    获取待读取的第一数据行的对应于分区键的第一属性值;
    至少根据所述分区键的第一属性值,确定所述第一数据行的合成主键值;所述合成主键值包括所述第一数据行所属的目标物理分区的分区标识,以及所述第一数据行的自增长标识;所述目标物理分区具有全局唯一的分区标识;
    基于所述合成主键值,从第一分区表中读取所述第一数据行。
  11. 根据权利要求10所述的方法,其中,所述确定所述第一数据行的合成主键值,包括:
    接收数据查询指令,其中至少包括所述第一数据行的对应于索引列的索引值;
    根据所述索引值和所述第一属性值,查询所述第一分区表的索引表,得到所述第一数据行的合成主键值;其中,所述索引表用于记录所述第一分区表的索引列、合成主键以及 分区键的对应关系。
  12. 一种分区表建立装置,包括:
    接收单元,用于接收第一建表指令,其中至少包括待创建的第一分区表的各属性列以及分区规则;所述第一分区表为无主键表,所述分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键以及分区的第一数目;
    创建单元,用于基于所述各属性列创建所述第一分区表,并根据所述分区规则创建对应的第一数目个逻辑分区以及各逻辑分区分别对应的物理分区;所述物理分区具有全局唯一的分区标识;
    添加单元,用于针对所述第一分区表添加合成主键作为隐藏主键;所述合成主键由物理分区的分区标识和分区级的自增长标识构成。
  13. 根据权利要求12所述的装置,其中,所述第一建表指令还包括索引列;
    所述创建单元,还用于基于所述索引列、所述合成主键以及所述分区键,创建对应于所述第一分区表的索引表。
  14. 根据权利要求12所述的装置,其中,所述分区规则还指示分区方法;所述分区方法包括以下中的一种:哈希分区法、区间分区法以及列表分区法。
  15. 一种针对分区表的数据写入装置,包括:
    获取单元,用于获取待写入第一分区表的第一数据行,以及所述第一分区表的当前分区规则;所述当前分区规则至少指示,将所述第一分区表中有待写入的数据行划分为逻辑分区所依据的分区键及分区的第一数目;
    确定单元,用于根据所述第一数据行的对应于所述分区键的第一属性值,以及当前分区规则,确定所述第一数据行所属的目标逻辑分区;
    所述确定单元,还用于根据逻辑分区与物理分区的映射关系,确定对应于所述目标逻辑分区的目标物理分区;所述目标物理分区具有全局唯一的分区标识;
    添加单元,用于将所述目标物理分区的分区标识以及所述第一数据行的自增长标识作为合成主键值,添加到所述第一数据行中;
    存储单元,用于将添加合成主键值后的第一数据行存储到所述第一分区表中。
  16. 根据权利要求15所述的装置,其中,所述当前分区规则还指示分区方法,且所述分区方法为哈希分区法;
    所述确定单元具体用于:
    将所述第一属性值对所述第一数目取模,得到取模结果;
    将所述第一分区表对应的各逻辑分区中,对应分区编号与所述取模结果相匹配的逻辑分区作为所述目标逻辑分区。
  17. 根据权利要求15所述的装置,其中,所述当前分区规则还指示分区方法,且所述分区方法为区间分区法;
    所述确定单元具体用于:
    从所述第一分区表对应的各逻辑分区中,选取出所述第一属性值落入到对应区间范围的逻辑分区;
    将选取出的逻辑分区作为所述目标逻辑分区。
  18. 根据权利要求15所述的装置,还包括:
    接收单元,用于接收针对所述第一分区表进行分区管理操作的操作指令;其中,所述分区管理操作包括以下中的一种:分区合并、分区交换以及分区分裂;
    修改单元,用于根据所述操作指令,修改所述当前分区规则。
  19. 根据权利要求18所述的装置,
    所述获取单元,还用于获取待写入所述第一分区表的第二数据行,以及修改后的当前分区规则;
    所述存储单元,还用于根据所述第二数据行的对应于所述分区键的第二属性值,以及修改后的当前分区规则,将所述第二数据行存储到所述第一分区表中。
  20. 根据权利要求15所述的装置,还包括:
    更新单元,用于基于所述第一数据行的对应于索引列的索引值、所述合成主键值以及所述分区键的第一属性值,更新所述第一分区表的索引表。
  21. 一种针对分区表的数据读取装置,包括:
    获取单元,用于获取待读取的第一数据行的对应于分区键的第一属性值;
    确定单元,用于至少根据所述分区键的第一属性值,确定所述第一数据行的合成主键值;所述合成主键值包括所述第一数据行所属的目标物理分区的分区标识,以及所述第一数据行的自增长标识;所述目标物理分区具有全局唯一的分区标识;
    读取单元,用于基于所述合成主键值,从第一分区表中读取所述第一数据行。
  22. 根据权利要求21所述的装置,其中,所述确定单元具体用于:
    接收数据查询指令,其中至少包括所述第一数据行的对应于索引列的索引值;
    根据所述索引值和所述第一属性值,查询所述第一分区表的索引表,得到所述第一数据行的合成主键值;其中,所述索引表用于记录所述第一分区表的索引列、合成主键以及 分区键的对应关系。
  23. 一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项所述的方法。
  24. 一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
PCT/CN2023/087010 2022-04-18 2023-04-07 分区表建立、针对分区表的数据写入、读取方法及装置 WO2023202394A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210402300.7A CN114490674B (zh) 2022-04-18 2022-04-18 分区表建立、针对分区表的数据写入、读取方法及装置
CN202210402300.7 2022-04-18

Publications (1)

Publication Number Publication Date
WO2023202394A1 true WO2023202394A1 (zh) 2023-10-26

Family

ID=81489487

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/087010 WO2023202394A1 (zh) 2022-04-18 2023-04-07 分区表建立、针对分区表的数据写入、读取方法及装置

Country Status (2)

Country Link
CN (1) CN114490674B (zh)
WO (1) WO2023202394A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117633024A (zh) * 2024-01-23 2024-03-01 天津南大通用数据技术股份有限公司 一种基于预处理优化join的数据库优化方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490674B (zh) * 2022-04-18 2022-07-05 北京奥星贝斯科技有限公司 分区表建立、针对分区表的数据写入、读取方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859808B1 (en) * 2001-05-31 2005-02-22 Oracle International Corporation Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers
CN104067216A (zh) * 2011-06-27 2014-09-24 亚马逊科技公司 用于实施可扩展数据存储服务的系统和方法
CN107247734A (zh) * 2017-05-05 2017-10-13 上海斐讯数据通信技术有限公司 一种分布式数据库主键生成方法及系统
CN113590613A (zh) * 2021-07-13 2021-11-02 上海一谈网络科技有限公司 数据表分区方法、装置、计算机设备和存储介质
US20210374138A1 (en) * 2018-10-18 2021-12-02 Sindice Limited Distributed join index for shared-nothing and log-structured databases
CN114490674A (zh) * 2022-04-18 2022-05-13 北京奥星贝斯科技有限公司 分区表建立、针对分区表的数据写入、读取方法及装置
CN115794813A (zh) * 2022-11-01 2023-03-14 北京奥星贝斯科技有限公司 数据行标识的生成方法与查询、分区交换方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876983B (zh) * 2009-04-30 2012-11-28 国际商业机器公司 数据库分区方法与系统
US8572091B1 (en) * 2011-06-27 2013-10-29 Amazon Technologies, Inc. System and method for partitioning and indexing table data using a composite primary key
CN104794123B (zh) * 2014-01-20 2018-07-27 阿里巴巴集团控股有限公司 一种为半结构化数据构建NoSQL数据库索引的方法及装置
US9779121B2 (en) * 2014-06-27 2017-10-03 Sap Se Transparent access to multi-temperature data
CN107085570B (zh) * 2016-02-14 2020-08-14 华为技术有限公司 数据处理方法、应用服务器和路由器
CN111427887A (zh) * 2020-03-17 2020-07-17 中国邮政储蓄银行股份有限公司 一种快速扫描HBase分区表的方法、装置、系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859808B1 (en) * 2001-05-31 2005-02-22 Oracle International Corporation Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers
CN104067216A (zh) * 2011-06-27 2014-09-24 亚马逊科技公司 用于实施可扩展数据存储服务的系统和方法
CN107247734A (zh) * 2017-05-05 2017-10-13 上海斐讯数据通信技术有限公司 一种分布式数据库主键生成方法及系统
US20210374138A1 (en) * 2018-10-18 2021-12-02 Sindice Limited Distributed join index for shared-nothing and log-structured databases
CN113590613A (zh) * 2021-07-13 2021-11-02 上海一谈网络科技有限公司 数据表分区方法、装置、计算机设备和存储介质
CN114490674A (zh) * 2022-04-18 2022-05-13 北京奥星贝斯科技有限公司 分区表建立、针对分区表的数据写入、读取方法及装置
CN115794813A (zh) * 2022-11-01 2023-03-14 北京奥星贝斯科技有限公司 数据行标识的生成方法与查询、分区交换方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117633024A (zh) * 2024-01-23 2024-03-01 天津南大通用数据技术股份有限公司 一种基于预处理优化join的数据库优化方法
CN117633024B (zh) * 2024-01-23 2024-04-23 天津南大通用数据技术股份有限公司 一种基于预处理优化join的数据库优化方法

Also Published As

Publication number Publication date
CN114490674A (zh) 2022-05-13
CN114490674B (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
WO2023202394A1 (zh) 分区表建立、针对分区表的数据写入、读取方法及装置
US10872101B2 (en) Distributed database processing method and device
CN109906448B (zh) 用于促进可插拔数据库上的操作的方法、设备和介质
US9734223B2 (en) Difference determination in a database environment
US9268834B2 (en) Distributed SQL query processing using key-value storage system
US9418094B2 (en) Method and apparatus for performing multi-stage table updates
CN112363979B (zh) 一种基于图数据库的分布式索引方法和系统
JP2020502626A (ja) データベース・システムにおけるテスト・データの形成及び動作
US20160147809A1 (en) Exporting and Importing Database Tables in a Multi-User Database Environment
US10452655B2 (en) In-memory cursor duration temp tables
JP2020140699A (ja) データを記憶およびクエリするための方法、装置、設備、および媒体
US11392567B2 (en) Just-in-time multi-indexed tables in a shared log
CN111143368B (zh) 一种关系型数据库数据对比方法及系统
CN110188114B (zh) 一种数据操作的优化方法、装置、系统、设备和存储介质
US11327999B2 (en) Reorganization of partition by growth space with LOB columns
CN113495872A (zh) 分布式数据库中的事务处理方法及系统
US20190340278A1 (en) Document store export/import
CN112000666B (zh) 一种面向列的数据库管理系统
CN114116907A (zh) 一种数据库的同步方法、装置、电子设备和存储介质
CN114840561A (zh) 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质
US20170031909A1 (en) Locality-sensitive hashing for algebraic expressions
US9087085B2 (en) Pre-assimilation values and post-assimilation values in hardware instance identifiers
US10353920B2 (en) Efficient mirror data re-sync
US11907217B2 (en) Database object validation for reusing captured query plans
US11914598B2 (en) Extended synopsis pruning in database management systems

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23791050

Country of ref document: EP

Kind code of ref document: A1