CN116303753A - 分布式数据库的分片方法、装置、电子设备和存储介质 - Google Patents
分布式数据库的分片方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116303753A CN116303753A CN202111498445.3A CN202111498445A CN116303753A CN 116303753 A CN116303753 A CN 116303753A CN 202111498445 A CN202111498445 A CN 202111498445A CN 116303753 A CN116303753 A CN 116303753A
- Authority
- CN
- China
- Prior art keywords
- slicing
- sub
- strategy
- node
- fragment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 239000012634 fragment Substances 0.000 claims abstract description 62
- 238000010276 construction Methods 0.000 claims abstract description 57
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 239000004973 liquid crystal related substance Substances 0.000 claims 2
- 238000013467 fragmentation Methods 0.000 claims 1
- 238000006062 fragmentation reaction Methods 0.000 claims 1
- 238000005192 partition Methods 0.000 description 13
- 238000012795 verification Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013498 data listing Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库技术领域,公开了一种分布式数据库的分片方法、装置、电子设备和存储介质。方法包括:获取携带分片策略的数据表建表语句;分片策略用于指示各分片节点上分片键值的一个或多个指定区间;根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句,并将各子表建表语句分别下发至与子表建表语句对应的指定区间所在的分片节点,供分片节点根据收到的子表建表语句建立子表;在根据各分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据。在需要指定各个分片的区间范围、各个分片的区间范围不完全连续、各个分片的区间范围不完全递增或者各个节点不止存储一个分片的场景下支持基于范围的分片。
Description
技术领域
本申请实施例涉及数据库技术领域,特别涉及一种分布式数据库的分片方法、装置、电子设备和存储介质。
背景技术
分布式数据库的分片是指按照一定的规则,将全局数据集划分为相互独立且正交的数据子集,从而得到包含至少一个数据子集的分片,然后将分片分布到不同的节点上存储。其中,基于范围的分片(Range based sharding)作为一种分布式数据库的分片方法,由于其主要是根据给定的分片中数据的键值范围对全局数据进行划分,得到若干分片,一个键值范围内的数据构成的数据子集对应一个分片,然后将分片分别存储到不同的节点上,实现简单,因此,得到了非常广泛的应用。
然而,在键值范围不完全连续、键值范围不完全递增或者一个分片对应多个键值范围的场景下,基于范围的分片不再被支持。
发明内容
本申请实施例的主要目的在于提出一种分布式数据库的分片方法、装置、电子设备和存储介质,旨在实现能够支持在键值范围不完全连续、键值范围不完全递增或者一个分片对应多个键值范围的场景下进行基于范围的分片,以扩展基于范围的分片方式的业务场景,增强基于范围的分片方式的灵活性。
为实现上述目的,本申请实施例提供了一种分布式数据库的分片方法,包括:获取携带分片策略的数据表建表语句;其中,所述分片策略用于指示各分片节点上分片键值的一个或多个指定区间;根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句,并将各所述子表建表语句分别下发至与所述子表建表语句对应的所述指定区间所在的分片节点,供所述分片节点根据收到的所述子表建表语句建立子表;在根据各所述分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,所述元数据用于根据操作指令中的分片键值查询所述操作指令的目标分片节点上的目标子表。
为实现上述目的,本申请实施例还提出了一种分布式数据库的分片装置,包括:获取模块,用于获取携带分片策略的数据表建表语句;其中,所述分片策略用于指示各分片节点上分片键值的一个或多个指定区间;建表模块,用于根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句,并将各所述子表建表语句分别下发至与所述子表建表语句对应的所述指定区间所在的分片节点,供所述分片节点根据收到的所述子表建表语句建立子表;生成模块,用于在根据各所述分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,所述元数据用于根据操作指令中的分片键值查询所述操作指令的目标分片节点上的目标子表。
为实现上述目的,本申请实施例还提出了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的分布式数据库的分片方法。
为实现上述目的,本申请实施例还提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的分布式数据库的分片方法。
本申请实施例提出的分布式数据库的分片方法,在获取到携带一个或多个指定区间的分片策略的数据表建表语句后,将数据表建表语句拆分为与各指定区间一一对应的子表建表语句,并将各子表建表语句分别下发至与子表建表语句对应的指定区间所在的分片节点,供分片节点根据收到的子表建表语句建立子表,进而在根据各分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成用于根据操作指令中的分片键值查询操作指令的目标分片节点上的目标子表的元数据。将原有指定键值范围的上界而键值范围的下界由其他键值范围的上界确定的方式替换为直接指定整个区间的方式,从而不需要参考其他键值范围的上界,也就不需要满足分片对应的键值范围连续、键值范围递增以及一个分片只对应一个键值范围的前提条件,即克服了分片时对区间范围连续且递增、节点只能存储一个范围内的数据以及不能指定分片的区间范围的限制,实现了按照任意指定区间对全局数据进行划分建表,最终得到分片,提高分布式数据库分片策略的灵活性,扩大分布式数据库基于范围的分片的适用范围,能够满足更多的业务场景需求。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是本申请一实施例中提供的分布式数据库的分片方法的流程图;
图2是本申请另一实施例中提供的分布式数据库的分片装置的结构示意图;
图3是本申请另一实施例中提供的电子设备的结构示意图。
具体实施方式
由背景技术可知,亟需一种能够支持在键值范围不完全连续、键值范围不完全递增或者一个分片对应多个键值范围的场景下进行基于范围的分片的分布式数据库的分片方法。
经分析发现,出现上述问题的原因主要在于:当前基于范围的分片在给定键值范围时通常只给定了最大键值,即键值范围只明确了上界而未明确下界,因此,为了在对全局数据进行划分时能够准确地进行划分,提出了一种基于键值范围连续递增特性的确定下界的方式:将前一键值范围给定的上界为下一键值范围的下界。以基于values less than操作符描述键值范围为例,某两个分片对应的键值范围分别被定义为values lessthan10000和values less than20000是指一个分片划分到第1-10000条数据,另一个分片划分到第10001-20000条数据,以第一个键值范围的上界10000为第二个键值范围的下界。由此不难看出,基于上述确定下界的方式需要满足一定的前提条,即分片对应的键值范围连续且递增,否则无法确定第一个分片之外的其他分片对应的键值范围的下界,且一个分片只能划分到一个键值范围的数据,否则无法描述该分片上的不同键值范围的下界,最终导致无法对全局数据进行划分,后续由于无法确定需要操作的数据所在的分片导致不能对存储的分片数据进行查询、插入等操作。
为解决上述问题,本申请实施例提供了一种分布式数据库的分片方法,包括:获取携带分片策略的数据表建表语句;其中,所述分片策略用于指示各分片节点上分片键值的一个或多个指定区间;根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句,并将各所述子表建表语句分别下发至与所述子表建表语句对应的所述指定区间所在的分片节点,供所述分片节点根据收到的所述子表建表语句建立子表;在根据各所述分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,所述元数据用于根据操作指令中的分片键值查询所述操作指令的目标分片节点上的目标子表。
本申请实施例提出的分布式数据库的分片方法,在获取到携带一个或多个指定区间的分片策略的数据表建表语句后,将数据表建表语句拆分为与各指定区间一一对应的子表建表语句,并将各子表建表语句分别下发至与子表建表语句对应的指定区间所在的分片节点,供分片节点根据收到的子表建表语句建立子表,进而在根据各分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成用于根据操作指令中的分片键值查询操作指令的目标分片节点上的目标子表的元数据。将原有指定键值范围的上界而键值范围的下界由其他键值范围的上界确定的方式替换为直接指定整个区间的方式,从而不需要参考其他键值范围的上界,也就不需要满足分片对应的键值范围连续、键值范围递增以及一个分片只对应一个键值范围的前提条件,即克服了分片时对区间范围连续且递增、节点只能存储一个范围内的数据以及不能指定分片的区间范围的限制,实现了按照任意指定区间对全局数据进行划分建表,最终得到分片,提高分布式数据库分片策略的灵活性,扩大分布式数据库基于范围的分片的适用范围,能够满足更多的业务场景需求。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本申请实施例一方面提供了一种分布式数据库的分片方法,应用于中间件,如图1所示,其流程包括:
步骤101,获取携带分片策略的数据表建表语句;其中,分片策略用于指示各分片节点上分片键值的一个或多个指定区间。
本实施例中,数据表建表语句为用户发送的,可以通过中间件提供的交互界面上读取用户设置结果生成的数据表建表语句,也可以是用户终端发送过来的。如在结构化查询语言(Structured Query Language,SQL)数据库中,数据表建表语句为用户在交互界面输入的数据定义语言(Data Definition Languages,DDL)语句,以指定分片1的键值范围包括[boundleft0,boundright0)和[boundleft1,boundright1),分片2的键值范围包括(boundleft2,boundright2)、(boundleft3,boundright3]和[boundleft4,boundright4]。
需要说明的是,与现有的只指定键值范围的上界,而键值范围的下界需要基于其他键值范围的上界确定不同,本实施例指定了各个区间范围所在区间,包括上界和下界,且不对键值范围所在区间的形式进行限定,可以是闭区间、开区间、左闭右开区间、左开右闭区间。此外,在指定了多个区间的情况下,各个区间的形式也可以不完全相同,如指定的两个区间分别为闭区间和左闭右开区间等。
还需要说明的是,分片策略中指示的指定区间包含对待分片的全局数据的各分片对应的键值范围,而不是一个分片对应的键值范围。
步骤102,根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句,并将各子表建表语句分别下发至与子表建表语句对应的指定区间所在的分片节点,供分片节点根据收到的子表建表语句建立子表。
可以理解的是,中间件接收到的数据表建表语句包含多个分片的键值范围,而不同分片需要通知存储该分片的分片节点,以便分片节点能够创建相应的数据子表来存储数据,因此,需要对接收到的数据表建表语句进行拆分,以得到各个分片的键值范围,然后将各个分片的键值范围通知给各个分片节点。
特别地,由于同一分片可能还会对应多个键值范围,因此,为了避免互相干扰,还可以为将同一分片的不同键值范围也进行拆分,从而在分片节点中为不同的键值范围分别创建数据子表,以分别存储不同键值范围内的数据。如为每一个指定区间创建一个子表建表语句,供分片节点根据接收到的子表建表语句为指定区间单独建表,而不是为同一分片对应的若干指定区间创建一个子表。
在一些例子中,根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句可以通过如下方式实现:中间件调用语法解析器对数据表建表语句进行解析,以利用语法解析器将数据表建表语句拆分为子表建表语句。
需要说明的是,分片中的数据要求相互独立且正交,因此,为了避免分片时出现不独立、不正交的情况,因此,在一些例子中,在根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句之前,分布式数据库的分片方法还包括:对分片策略进行校验,其中,校验主要是检测指定区间之间是否出现范围重叠或者是否出现指定区间的左边界小于右边界的情况。只有在通过校验的情况下才执行根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句步骤,即在分片策略指示的各分片节点上的各指定区间均不重叠,且各指定区间的左边界均小于右边界情况下,再执行根据所述分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句。而在未通过校验的情况下,考虑到基于指定区间继续进行分片,会导致无法对全局数据进行划分形成数据子集,因此,可以判定建表失败,即在分片策略指示的各分片节点上的各指定区间存在重叠,或指定区间存在左边界存在小于右边界情况下,反馈建表失败结果,其中,反馈地方式可以是在为用户提供的交互界面上进行告警,或者,向用户终端发送相关信息等。
还需要说明的是,考虑到同一分片可能对应多个指定范围,即分片节点需要创建多个子表,而后续在对数据进行查询等操作时,通常需要确定待操作数据所在的子表,因此,在创建子表的过程中,为了便于后续根据待操作数据的键值确定所在的子表以对子表进行操作,还可以在生成子表名的过程中引入其对应的指定区间,如将某个子表命名为TABLE(10000-20000),其中,10000-20000为指定区间所指示的数据的键值范围。
步骤103,在根据各分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,元数据用于根据操作指令中的分片键值查询操作指令的目标分片节点上的目标子表。
本实施例中,数据表是指各个分片节点上的子表在逻辑上统一得到的存储全局数据的数据表。而数据表的元数据可以包括各指定范围、各分片与指定范围的对应关系等,以便后续对数据表进行查询、插入、删除等操作。
需要说明的是,对数据表进行查询、插入、删除等操作可以被分解为针对各个子表的查询、插入、删除等操作,此时,需要确定查询、插入、删除等操作的操作对象所在的子表,因此,需要元数据中的各个分片与指定范围之间的对应关系。
可以理解的是,分片节点创建子表时可能会受到节点资源、外在干扰等的影响,从而导致无法某个子表创建失败或者某个节点的子表均创建失败。而当有至少一个分片节点的至少一个子表建立失败时,其他子表即使正常建立,也会由于关注的是全局数据,导致正对全局数据的分片失败。也就是说,只有所有的子表建立成功才判定成功,继而在中间件上生成描述各个子表组成的全局数据的数据表的元数据。而在根据各分片节点反馈的子表建立结果确定存在子表建立失败的情况下,由于分片失败,因此,创建成功的子表不具备有效性,需要删除,避免占用资源,即在根据各分片节点反馈的子表建立结果确定存在子表建立失败的情况下,向子表建立成功的各分片节点下发删除指令,删除指令用于指示删除根据子表建表语句建立的子表。
还可以理解的是,当前创建的子表是基于当前的用户分片需求得到的,但是后续用户的分片需求可能会发生变化,如用户可能需要新增分片节点、在已有的分片节点上增加指定区间或者扩大已有的指定区间的区间范围等。为了适应上述分片需求的变化,在一些例子中,在生成数据表的元数据之后,分布式数据库的分片方法还包括:获取数据表的分片更新策略;分片更新策略用于指示更新的各分片节点上分片键值的一个或多个指定区间;根据分片更新策略执行以下操作之一或其任意组合:新增分片节点、在已有的分片节点上增加所述指定区间、扩大已有的所述指定区间的区间范围。
需要说明的是,上述分片更新改变了分片的结构,同时也改变了分片的相关信息,如对于已有区间段取值范围扩大操作,虽然不需要新建子表,但需要对子表名进行更新,或者,在分片更新成功的情况下,需要更新元数据信息等,而分片建表时创建的子表名与分片的相关信息有关,因此,更新分片后还需要更新分片的相关信息,如:建表时生成子表名的规则中使用了区间段的边界值,区间段取值范围扩大使得边界值发生了变化,则子表名也需要更新,或者,在分片更新成功的情况下,将表元数据信息中旧的分片信息删除,将新的分片信息存入元数据中等。
还需要说明的是,分片更新策略为用户发送的语句,该语句可能涉及到对分片对应的指定范围、分片数量等的变更信息,仍然可以由中间件调用语法解析器进行处理,以得到分片键、分片节点以及各分片节点上的区间段等信息并生成相应的指令,此处就不再一一赘述了。
需要说明的是,用户的分片需求发生变化时,仍然需要满足区间范围独立正交的条件,因此,在根据分片更新策略执行以下操作之一或其任意组合之前,分布式数据库的分片方法通常还需要再次校验,即分布式数据库的分片方法还包括:检测分片更新策略是否满足以下各条件:分片更新策略的分片键值与分片策略的分片键值一致、分片更新策略包括分片策略的所有指定区间的区间范围、分片策略指示的所有分片节点均存在于分片更新策略内、不存在分片策略内的指定区间被删除或区间范围缩小的情况。只有在通过校验的情况下,才能继续执行相应步骤,即在检测到分片更新策略满足各条件的情况下,再执行根据分片更新策略执行以下操作之一或其任意组合。而在为通过校验的情况下,判定校验失败,即在检测到分片更新策略不满足上述任一条件的情况下,反馈数据表的分片更新失败结果。
值得一提的是,随着业务数据增长,已有的分片可能已经无法满足要求,需要对分片进行更新。而上述分片更新主要是对分片结构进行调整更新,并未引起数据的迁移工作,实现了业务无感知的分布式数据库分片动态扩容,可以在数据不搬迁的前提下实现新增分片节点、已有分片节点增加区间段、已有区间段取值范围扩大,使得分片灵活性进一步提高。
而在一些例子中,元数据包括:数据表的分片键、分片节点信息、指定区间和子表名。而在生成数据表的元数据后,分布式数据库的分片方法还需要满足用户对数据表进行操作的需求,即还包括:接收数据表的操作指令,操作指令携带分片键值;根据数据表的元数据,查询携带的分片键值所属区间段所在的目标分片节点上的目标子表;向目标分片节点下发用于操作目标子表的操作指令。
值得一提的是,上述操作的实现能将指令精准地控制在某个或某些区间段子表内,不需要全表扫描,数据读写效率更高。
考虑到用户不止一个或者用户操作不止一次,为了避免当前操作中有其他操作导致当前操作失败的情况发生,还进行加锁。即在查询携带的分片键值所属区间段所在的目标分片节点上的目标子表后,分布式数据库的分片方法还包括:通过对目标子表进行加锁,禁止对目标子表的修改或对目标子表的除操作指令外的读写操作;在对目标子表的操作指令完成后,对目标子表进行解锁。其中,加的锁可以是元数据锁(Metadata Locking,MDL)元数据锁、读写锁等。
值得一提的是,加锁操作仅针对操作对象所在的子表上,对其他子表不产生影响,其他子表仍能无障碍地对外提供服务,使得单表并发能力得到提高。
可以理解的是,当操作涉及多个区间段,中间件可以使用多个线程与这些区间段对应的子表分别建立连接,并发操作这些子表,然后再对各子表的结果进行归并,数据处理速度更快、处理效率成倍提高。
此外,应当理解的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请实施例另一方面还提供了一种分布式数据库的分片装置,如图2所示,包括:
获取模块201,用于获取携带分片策略的数据表建表语句;其中,分片策略用于指示各分片节点上分片键值的一个或多个指定区间。
建表模块202,用于根据分片策略将数据表建表语句拆分为与各指定区间一一对应的子表建表语句,并将各子表建表语句分别下发至与子表建表语句对应的指定区间所在的分片节点,供分片节点根据收到的子表建表语句建立子表。
生成模块203,用于在根据各分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,元数据用于根据操作指令中的分片键值查询操作指令的目标分片节点上的目标子表。
不难发现,本实施例为与方法实施例相对应的装置实施例,本实施例可与方法实施例互相配合实施。方法实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在方法实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请实施例另一方面还提供了一种电子设备,如图3所示,包括:至少一个处理器301;以及,与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行,以使至少一个处理器301能够执行上述任一方法实施例所描述的分布式数据库的分片方法。
其中,存储器302和处理器301采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器301和存储器302的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器301处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传输给处理器301。
处理器301负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器302可以被用于存储处理器301在执行操作时所使用的数据。
本申请实施例另一方面还提供了一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述任一方法实施例所描述的分布式数据库的分片方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (11)
1.一种分布式数据库的分片方法,其特征在于,包括:
获取携带分片策略的数据表建表语句;其中,所述分片策略用于指示各分片节点上分片键值的一个或多个指定区间;
根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句,并将各所述子表建表语句分别下发至与所述子表建表语句对应的所述指定区间所在的分片节点,供所述分片节点根据收到的所述子表建表语句建立子表;
在根据各所述分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,所述元数据用于根据操作指令中的分片键值查询所述操作指令的目标分片节点上的目标子表。
2.根据权利要求1所述的分布式数据库的分片方法,其特征在于,在所述根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句之前,还包括:
对所述分片策略进行校验;
在所述分片策略指示的各分片节点上的各指定区间均不重叠,且各指定区间的左边界均小于右边界情况下,再执行所述根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句;
在所述分片策略指示的各分片节点上的各指定区间存在重叠,或所述指定区间存在左边界存在小于右边界情况下,反馈建表失败结果。
3.根据权利要求1所述的分布式数据库的分片方法,其特征在于,在所述生成数据表的元数据之后,还包括:
获取所述数据表的分片更新策略;所述分片更新策略用于指示更新的各分片节点上分片键值的一个或多个指定区间;
根据所述分片更新策略执行以下操作之一或其任意组合:新增分片节点、在已有的分片节点上增加所述指定区间、扩大已有的所述指定区间的区间范围。
4.根据权利要求3所述的分布式数据库的分片方法,其特征在于,在所述根据所述分片更新策略执行以下操作之一或其任意组合之前,还包括:
检测所述分片更新策略是否满足以下各条件:所述分片更新策略的分片键值与所述分片策略的分片键值一致、所述分片更新策略包括所述分片策略的所有指定区间的区间范围、所述分片策略指示的所有分片节点均存在于所述分片更新策略内、不存在所述分片策略内的指定区间被删除或区间范围缩小的情况;
在检测到所述分片更新策略满足所述各条件的情况下,再执行所述根据所述分片更新策略执行以下操作之一或其任意组合;
在检测到所述分片更新策略不满足任一所述条件的情况下,反馈所述数据表的分片更新失败结果。
5.根据权利要求1至4中任一项所述的分布式数据库的分片方法,其特征在于,所述方法还包括:
在根据各所述分片节点反馈的子表建立结果确定存在子表建立失败的情况下,向子表建立成功的各所述分片节点下发删除指令,所述删除指令用于指示删除根据所述子表建表语句建立的子表。
6.根据权利要求1至4中任一项所述的分布式数据库的分片方法,其特征在于,所述元数据包括:所述数据表的分片键、分片节点信息、指定区间和子表名;
在所述生成数据表的元数据后,还包括:
接收所述数据表的操作指令,所述操作指令携带分片键值;
根据所述数据表的元数据,查询所述携带的分片键值所属区间段所在的目标分片节点上的目标子表;
向所述目标分片节点下发用于操作所述目标子表的所述操作指令。
7.根据权利要求6所述的分布式数据库的分片方法,其特征在于,在所述查询所述携带的分片键值所属区间段所在的目标分片节点上的目标子表后,还包括:
通过对所述目标子表进行加锁,禁止对所述目标子表的修改或对所述目标子表的除所述操作指令外的读写操作;
在对所述目标子表的所述操作指令完成后,对所述目标子表进行解锁。
8.根据权利要求1至4中任一项所述的分布式数据库的分片方法,其特征在于,所述指定区间包括以下任一形式区间:
闭区间、开区间、左闭右开区间、左开右闭区间。
9.一种分布式数据库的分片装置,其特征在于,包括:
获取模块,用于获取携带分片策略的数据表建表语句;其中,所述分片策略用于指示各分片节点上分片键值的一个或多个指定区间;
建表模块,用于根据所述分片策略将所述数据表建表语句拆分为与各所述指定区间一一对应的子表建表语句,并将各所述子表建表语句分别下发至与所述子表建表语句对应的所述指定区间所在的分片节点,供所述分片节点根据收到的所述子表建表语句建立子表;
生成模块,用于在根据各所述分片节点反馈的子表建立结果确定各子表均建立成功的情况下,生成数据表的元数据,所述元数据用于根据操作指令中的分片键值查询所述操作指令的目标分片节点上的目标子表。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至9中任一项所述的分布式数据库的分片方法。
11.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的分布式数据库的分片方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111498445.3A CN116303753A (zh) | 2021-12-09 | 2021-12-09 | 分布式数据库的分片方法、装置、电子设备和存储介质 |
PCT/CN2022/136681 WO2023103991A1 (zh) | 2021-12-09 | 2022-12-05 | 分布式数据库的分片方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111498445.3A CN116303753A (zh) | 2021-12-09 | 2021-12-09 | 分布式数据库的分片方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303753A true CN116303753A (zh) | 2023-06-23 |
Family
ID=86729616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111498445.3A Pending CN116303753A (zh) | 2021-12-09 | 2021-12-09 | 分布式数据库的分片方法、装置、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116303753A (zh) |
WO (1) | WO2023103991A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664223B (zh) * | 2018-05-18 | 2021-07-02 | 百度在线网络技术(北京)有限公司 | 一种分布式存储方法、装置、计算机设备及存储介质 |
CN112988701A (zh) * | 2019-12-13 | 2021-06-18 | 中国电信股份有限公司 | 数据库管理方法、装置、系统和存储介质 |
CN111324606B (zh) * | 2020-01-23 | 2023-06-09 | 北京恒华伟业科技股份有限公司 | 数据分片的方法及装置 |
CN112380275B (zh) * | 2021-01-15 | 2021-07-23 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
-
2021
- 2021-12-09 CN CN202111498445.3A patent/CN116303753A/zh active Pending
-
2022
- 2022-12-05 WO PCT/CN2022/136681 patent/WO2023103991A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023103991A1 (zh) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068449B2 (en) | Data migration method, apparatus, and storage medium | |
US10303691B2 (en) | Column-oriented database processing method and processing device | |
EP3857400B1 (en) | Data storage apparatus, translation apparatus, and database access method | |
CN109189852B (zh) | 一种数据同步的方法及用于数据同步的装置 | |
US10534771B2 (en) | Database access method and apparatus, and database system | |
US8065323B2 (en) | Offline validation of data in a database system for foreign key constraints | |
US9104728B2 (en) | Query language to traverse a path in a graph | |
WO2018040722A1 (zh) | 表数据查询方法及装置 | |
US20080104141A1 (en) | Copy-on-write versioning of documents | |
CN111708804B (zh) | 数据处理方法、装置、设备及介质 | |
US11822540B2 (en) | Data read method and apparatus, computer device, and storage medium | |
US20090063527A1 (en) | Processing of database statements with join predicates on range-partitioned tables | |
CN103995854A (zh) | 一种设备跨版本升级方法和装置 | |
CN111026782B (zh) | 远程数据库对象的优化方法、装置、设备及存储介质 | |
US6983286B1 (en) | Method and apparatus for accessing data as it existed at a previous point in time | |
KR102174957B1 (ko) | 관계형 데이터베이스의 DML문장을 NoSQL 데이터베이스로 동기화하기 위한 트랜잭션 제어 방법 | |
CN111897824A (zh) | 数据操作方法、装置、设备和存储介质 | |
WO2022127866A1 (zh) | 数据处理方法、装置、电子设备、存储介质 | |
CN112650526B (zh) | 版本一致性的检测方法、装置、电子设备和介质 | |
CN116303753A (zh) | 分布式数据库的分片方法、装置、电子设备和存储介质 | |
CN111444208B (zh) | 一种数据更新方法及相关设备 | |
US20090132473A1 (en) | Apparatus, method, and computer program product for processing databases | |
CN111914028A (zh) | 一种基于图增量同步异构数据源数据关系的方法及装置 | |
CN112612647B (zh) | 日志并行重演方法、装置、设备及存储介质 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |