CN112231400B - 分布式数据库的访问方法、装置、设备及存储介质 - Google Patents
分布式数据库的访问方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112231400B CN112231400B CN202011031133.7A CN202011031133A CN112231400B CN 112231400 B CN112231400 B CN 112231400B CN 202011031133 A CN202011031133 A CN 202011031133A CN 112231400 B CN112231400 B CN 112231400B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- field
- database
- storage node
- 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
Links
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/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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及一种分布式数据库的访问方法、装置、设备及存储介质,其中该分布式数据库至少基于数据的第一字段和第二字段进行数据分片,在接收到数据查询请求时,若数据查询请求中的索引条件为第一字段上的第一分库键,则根据第一字段对应的第一路由关系确定得到目标路由到的第一存储节点,若数据查询请求中的索引条件为第二字段上的第二分库键,则根据第二字段对应的第二路由关系,确定得到目标路由到的第一存储节点,从而通过将数据查询请求路由到第一存储节点上,查询获得相应的数据。本公开实施例提供的方案能够提高数据查询效率。
Description
技术领域
本公开实施例涉及分布式存储技术领域,尤其涉及一种分布式数据库的访问方法、装置、设备及存储介质。
背景技术
相关技术通常按照数据库系统表中的某一个字段将数据库中的数据切分为多个数据分片,然后将多个数据分片分散到多个存储节点上进行存储。在进行数据查询时,只要根据数据分片所依据的字段就可以快速锁定相应数据所在的存储节点,然而,实际中常常存在查询请求中不携带该字段的情况,这种情况需要在所有节点中执行查询操作,查询效率较低,尤其在高并发的情况下,在所有节点中执行查询操作,会对整个数据库集群造成较大的处理压力,中央处理器(Central Processing Unit,简称CPU)的使用率也会显著提高,导致数据库整体性能下降。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种分布式数据库的访问方法、装置、设备及存储介质。
本公开实施例第一方面提供了一种分布式数据库的访问方法,该分布式数据库至少基于第一字段和第二字段对数据进行分片,其中,基于第一字段分片得到第一路由关系,基于第二字段分片得到第二路由关系,该方法包括:接收数据查询请求,该数据查询请求中包括索引条件;当索引条件为第一字段上的第一分库键时,基于第一路由关系,确定目标路由到的第一存储节点;当索引条件为第二字段上的第二分库键时,基于第二路由关系,确定目标路由到的第一存储节点;将数据查询请求路由到第一存储节点,以在第一存储节点中执行数据查询操作。
本公开实施例第二方面提供了一种分布式数据库的访问装置,该分布式数据库至少基于第一字段和第二字段对数据进行分片,其中基于第一字段分片得到第一路由关系,基于第二字段分片得到第二路由关系,该装置包括:
第一接收模块,用于接收数据查询请求,该数据查询请求中包括索引条件。
第一确定模块,用于当索引条件为第一字段上的第一分库键时,基于第一路由关系,确定目标路由到的第一存储节点。
第二确定模块,用于当索引条件为第二字段上的第二分库键时,基于第二路由关系,确定目标路由到的第一存储节点。
路由模块,用于将数据查询请求路由到第一存储节点,以在第一存储节点中执行数据查询操作。
本公开实施例第三方面提供了一种分布式数据库的中间件服务器,该分布式数据库至少基于第一字段和第二字段对数据进行分片,其中,基于第一字段分片得到第一路由关系,基于第二字段分片得到第二路由关系,中间件服务器中包括:存储器和处理器,存储器中存储有计算机程序,当计算机程序被处理器执行时,实现上述第一方面的方法。
本公开实施例第四方面提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,当该计算机程序被处理器执行时,实现上述第一方面的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例,至少基于数据的第一字段和第二字段对分布式数据库的数据进行分片,当接收到数据查询请求时,若数据查询请求中的索引条件为第一字段上的第一分库键,则根据第一字段对应的第一路由关系确定得到目标路由到的第一存储节点,若数据查询请求中的索引条件为第二字段的第二分库键,则根据第二字段对应的第二路由关系,确定得到目标路由到的第一存储节点,从而通过将数据查询请求路由到第一存储节点上,就可以查找获得相应的数据。由于本公开实施例中的分布式数据库被配置为至少基于第一字段和第二字段进行数据分片,因而,至少可以获得第一字段对应的第一路由关系和第二字段对应的第二路由关系,这样只要索引条件中携带第一字段或者第二字段上的分库键就能够快速确定出数据所在的存储节点,从而提高了数据查询效率,尤其是在分布式数据库大规模集群中操作高并发的情况下,能够有效降低分布式数据库的处理压力,减少对CPU资源的挤占,提升了分布式数据库的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种分布式数据库的系统架构图;
图2是本公开实施例提供的一种分布式数据库的访问方法的流程图;
图3是本公开实施例提供的另一种分布式数据库的访问方法的流程图;
图4是本公开实施例提供的又一种分布式数据库的访问方法的流程图;
图5是本公开实施例提供的又一种分布式数据库的访问方法的流程图;
图6是本公开实施例提供的又一种分布式数据库的访问方法的流程图;
图7是本公开实施例提供的一种分布式数据库的访问装置的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种分布式数据库的系统架构图,如图1所示,该分布式数据库包括终端设备、中间件服务器和N个存储节点,N为大于或等于2的整数。其中,终端设备用于向中间件服务器发送数据库访问请求,并接收中间件服务器反馈的数据库访问结果,数据库访问请求例如可以是数据查询请求、数据插入请求、数据删除请求和数据更新请求中的一种。数据库访问结果例如可以是数据查询结果、数据插入结果、数据删除结果和数据更新结果中的一种。终端设备例如可以是手机、平板电脑、笔记本电脑、可穿戴设备、汽车、服务器等具有数据存储和数据访问功能的设备。中间件服务器用于基于数据的两个及以上的字段对分布式数据库的数据进行分片处理,并且每基于一个字段进行分片,都能得到一个相应的路由关系,该路由关系用于记录该字段上的分库键指向的存储节点,比如分库键A指向存储节点B,则表示分库键A对应的数据存储在存储节点B上。中间件服务器对每个分片方式对应的路由关系进行维护,当接收到终端设备的数据库访问请求时,根据数据库访问请求中携带的索引条件,比如某个字段上的分库键,查找相应的路由关系得到该分库键对应的存储节点,通过对该存储节点进行访问得到数据库访问结果,该数据库访问结果将被反馈给终端设备。存储节点1至存储节点N可以被具体为具有数据存储功能和数据处理功能的主机。存储节点1至存储节点N用于存储分布式数据库的数据分片,并根据中间件服务器转发的数据访问请求进行相应的数据库访问操作。
当然图1提供的系统架构仅为本公开实施例的一个示例性的架构,而不是唯一架构,比如,在其他实施例中上述终端设备的数量也可以是多个,每个终端设备在分布式数据库中的交互方式与图1中单个终端设备的交互方式类似,在这里不再赘述。
参见图1,由于图1的架构中分布式数据库被配置为基于两个及以上的字段进行数据分片,因此,在执行数据访问操作时,只要数据访问请求中的索引条件为这些字段中的任意一个,就能够根据该字段对应的路由关系,确定出数据所在的存储节点,从而降低了在分布式数据库的所有存储节点上执行访问操作的概率,提高了数据库的访问效率。尤其是在数据库操作高并发的情况下,能够有效降低分布式数据库的处理压力,减少对CPU资源的挤占,提升了分布式数据库的性能。
为了更好的理解本公开实施例的技术方案,下面结合示例性的实施例对本公开实施例的技术方案进行说明。
图2是本公开实施例提供的一种分布式数据库的访问方法的流程图,该方法适用于一种分布式数据库,该分布式数据库至少以第一字段和第二字段进行数据分片,其中,基于第一字段进行数据分片得到第一字段上的分库键与存储节点之间的第一路由关系,基于第二字段进行数据分片得到第二字段上的分库键与存储节点之间的第二路由关系。如图2所示,该方法包括:
步骤201、接收数据查询请求,所述数据查询请求中包括索引条件,其中,若所述索引条件为所述第一字段上的第一分库键则执行步骤202,若所述索引条件为所述第二字段上的第二分库键,则执行步骤203。
步骤202、基于所述第一路由关系,确定目标路由到的第一存储节点。
步骤203、基于所述第二路由关系,确定目标路由到的第一存储节点。
步骤204、将所述数据查询请求路由到所述第一存储节点,以在所述第一存储节点中执行数据查询操作。
在本实施例中,基于一个字段分片得到的路由关系可由一个对应的系统表进行维护,基于多个字段分片得到的路由关系可以由多个系统表进行维护,例如,表1是本公开实施例提供的一种分布式数据库的系统表。
表1
示例的,表1被具体为包括F1、F2、F3、F4、F5五个字段和备注栏。其中,F1可以示例性的理解为本实施例所称的第一字段,F2可以示例性的理解为本实施例所称的第二字段。表1的备注栏用于记录F1分库键的数据所在的存储节点。比如表1表示,F1字段的分库键为1的数据存储在存储节点1上,F1字段的分库键为2的数据存储在存储节点2上,F1字段的分库键为3的数据存储在存储节点3上、F1字段的分库键为4的数据存储在存储节点4上,F1字段的分库键为5的数据存储在存储节点5上。同时表1的行还记录了F1字段的分库键与F2、F3、F4、F5取值之间的对应关系,比如当F1字段的分库键为1时,对应F2的取值为21、F3的取值为31、F4的取值为41、F5的取值为51。
表2是本公开实施例提供的另一种系统表。表2中的“Fname”栏用于记录F2字段的分库键、“Storage”栏用于记录数据所在存储节点的字段表示形式,该“Storage”字段的位数可以根据需要进行设定,一般情况下,“Storage”字段的位数可以被设置为等于分布式数据库中存储节点的数量,“Storage”字段的每一位对应一个存储节点,当“Storage”字段的某一位取1时,表示数据存储在该位对应的存储节点上,比如,在表2中,F2字段的分库键21对应的“Storage”字段为“00001”,表示分库键21的数据存储在存储节点1上。备注栏用于对“Storage”字段表示的存储节点进行描述。
表2
参见表1当接收到的数据查询请求中索引条件为F1字段的分库键时,则根据表1查询该分库键的数据所在的存储节点,比如当数据查询请求中F1字段的分库键为3时,根据表1可以查询到数据存储在存储节点3中,根据存储节点3的路由信息即可将数据查询请求路由到存储节点3,从而从存储节点3中查询得到相应的数据。
参见表2当接收到的数据查询请求中索引条件为F2字段的分库键时,则根据表2查询该分库键的数据所在的存储节点,比如当数据查询请求中F2字段的分库键为23时,根据表2可以查询到数据存储在存储节点3中,根据存储节点3的路由信息即可将数据查询请求路由到存储节点3,从而从存储节点3中查询得到相应的数据。
或者,在本实施例的另一种实施例方式中,表1中还可以包括F2字段的分库键与存储节点之间的对应关系,当接收到的数据查询请求中索引条件为F2字段的分库键时,也可以根据表1查询到相应的存储节点。也就是说,在这种方式中表1(可以理解为第一系统表)中可以包括由第一字段分片得到的第一路由关系、第一路由关系中的每条记录对应的第二字段的取值以及该取值与存储节点的对应关系。当数据查询请求中索引条件为第二字段的分库键时也可以根据第一系统表查询到相应的存储节点。
当然上述仅是以表1和表2进行的示例性说明,并不是对本公开的唯一限定,实际上在其他实施例中每个系统表的具体形式可以根据需要进行设定,而不必局限于本申请表1和表2所示的形式。
本实施例,至少基于数据的第一字段和第二字段对分布式数据库的数据进行分片,当接收到数据查询请求时,若数据查询请求中的索引条件为第一字段上的第一分库键,则根据第一字段对应的第一路由关系确定得到目标路由到的第一存储节点,若数据查询请求中的索引条件为第二字段的第二分库键,则根据第二字段对应的第二路由关系,确定得到目标路由到的第一存储节点,从而通过将数据查询请求路由到第一存储节点上,查找获得相应的数据。由于本实施例中的分布式数据库被配置为至少基于第一字段和第二字段进行数据分片,因而,至少可以获得第一字段对应的第一路由关系和第二字段对应的第二路由关系,这样只要索引条件中携带第一字段或者第二字段上的分库键就能够快速确定出数据所在的存储节点,从而提高了数据查询效率,尤其是在分布式数据库大规模集群中操作高并发的情况下,能够有效降低分布式数据库的处理压力,减少对CPU资源的挤占,提升了分布式数据库的性能。
图3是本公开实施例提供的另一种分布式数据库的访问方法的流程图,如图3所示,该方法包括如下步骤:
步骤301、接收数据插入请求,所述数据插入请求包括目标插入的第一数据。
步骤302、根据所述第一数据在所述第一字段上的第三分库键以及预设的路由规则,将所述第一数据插入所述第三分库键对应的第二存储节点进行存储。
步骤303、根据所述第一数据在所述第二字段上的第四分库键以及所述预设的路由规则,将所述第一数据插入所述第四分库键对应的第三存储节点进行存储。
步骤304、在所述第一路由关系中插入所述第三分库键与所述第二存储节点之间的路由关系,以及在所述第二路由关系中插入所述第四分库键与所述第三存储节点之间的路由关系。
举例来说,假如下面这条数据为数据插入请求中携带的第一数据:
参见上述表1,上述数据中的6可以理解为表1中F1字段上的值,即本实施例所称的第三分库键;26可以理解为表1中F2字段上的值,即本实施例所称的第四分库键;36可以理解为表1中F3字段上的值、46可以理解为表1中F4字段的值;56可以理解为表1中F5字段的值;“F1:存储节点1,F2:存储节点2”为表1中的备注信息。
根据预设的路由规则,F1字段上分库键为6的数据应该插入存储节点1,F2字段上分库键为26的数据应该插入存储节点2,则将分库键为6的数据分别插入到存储节点1和存储节点2中存储。于此同时,根据分库键6与存储节点1之间的对应关系,以及分库键26与存储节点2之间的对应关系更新上述表1和表2,得到表3和表4。这样在查询分库键为6的数据时,就可以根据表3或者表4从存储节点1或者存储节点2获得相应的数据。
再例如,再次插入如下一条数据:
则将该条数据插入表3中得到表5。
表3
表4
进一步的,参见表5,F1=7的这条数据中,F2=21,以F2进行分片时,该条数据存储在存储节点2上。而根据表4可知,F2字段上分库键为21的数据还存储在存储节点1上,因此,可得知,F2字段上分库键为21的数据被存储在存储节点1和存储节点2上。据此对表4进行更新可得到表6。当然上述仅是示例说明并不是对本公开实施例的唯一限定。实际上,分布式数据库中可以基于两个以上的字段进行数据分片,得到两个以上的系统表,那么在数据插入时,除了需要根据路由规则,将数据插入相应的存储节点,还应该对全部的系统表进行更新,以确保能够基于所有的分片字段,查找到相应的数据。其中各系统表的更新方式可以参见上述表1和表2的更新方式,在这里不再赘述。
表5
表6
本实施例在插入数据时根据预设的路由规则和数据中的分库键,将数据插入相应的存储节点,并相应的更新系统表将分库键和存储节点之间的路由关系添加到系统表中,能够确保基于全部的分片字段均可以查找到数据所在的存储节点。提高了数据的查询效率。
图4是本公开实施例提供的又一种分布式数据库的访问方法的流程图,如图4所示,该方法包括:
步骤401、接收数据删除请求,所述数据删除请求中包括目标删除的第二数据。
步骤402、根据所述第二数据在所述第一字段上的第五分库键以及所述第一路由关系,从所述第五分库键对应的第四存储节点上删除所述第二数据。
步骤403、根据所述第二数据在所述第二字段上的第六分库键以及所述第二路由关系,从所述第六分库键对应的第五存储节点上删除所述第二数据。
步骤404、从所述第一路由关系中删除所述第五分库键与所述第四存储节点之间的路由关系,以及从所述第二路由关系中删除所述第六分库键与所述第五存储节点之间的路由关系。
举例来说,假设如下这条数据为目标删除的第二数据:
参见表3,F1字段上分库键为6的数据存储在节点1上,参见表4,F2字段上分库键为26的数据存储在节点2上,则从存储节点1上删除分库键6对应的数据,从存储节点2上删除分库键26对应的数据。于此同时需要从表3中删除分库键6对应的记录,从表4中删除分库键26对应的记录。当然这里仅为示例说明而不是对本公开的唯一限定。
本实施例在从存储节点中删除数据的同时将该数据在所有系统表中的记录都删除,能够避免误查询,减少系统表中的记录数量,提高查询效率。
图5是本公开实施例提供的又一种分布式数据库的访问方法的流程图,在本实施例中,分布式数据库包括第一系统表和第二系统表,其中,第一系统表中包括基于第一字段分片得到的第一路由关系、第一路由关系中每个第一字段的取值与第二字段的取值之间的对应关系,以及第二字段取得每个取值时,数据所在的存储节点的信息,第二系统表中包括基于第二字段分片得到的第二路由关系。如图5所示,该方法包括:
步骤501、接收第一更新请求,所述第一更新请求中包括第一字段上的第一原始分库键和目标更新得到的第七分库键。
步骤502、将所述第一系统表中的所述第一原始分库键更新为所述第七分库键。
示例的,参见表1,假设第一更新请求中包括的第一原始分库键为F1=1,目标更新得到的第七分库键为F1=6,则将表1中F1=1的分库键更新为F1=6,得到表7。
表7
本实施例在进行数据更新时根据更新请求中携带的第一字段的原始分库键和目标更新得到的分库键,对第一字段上的分库键进行更新能够确保更新后的数据能够被快速查询到,提高了数据的查询效率。
图6是本公开实施例提供的又一种分布式数据库的访问方法的流程图,在本实施例中,分布式数据库包括第一系统表和第二系统表,其中,第一系统表中包括基于第一字段分片得到的第一路由关系、第一路由关系中每个第一字段的取值与第二字段的取值之间的对应关系,以及第二字段取得每个取值时,数据所在的存储节点的信息,第二系统表中包括基于第二字段分片得到的第二路由关系。如图6所示,该方法包括:
步骤601、接收第二更新请求,所述第二更新请求中包括所述第一字段上的第八分库键以及在取得所述第八分库键时所述第二字段上对应的第九分库键。
步骤602、基于所述第一系统表,确定当所述第一字段取得所述第八分库键时,所述第二字段上对应的第二原始分库键,以及所述第二原始分库键对应的第六存储节点。
步骤603、将所述第一系统表中所述第八分库键对应的所述第二原始分库键更新为所述第九分库键。
步骤604、从所述第二系统表中删除所述第二原始分库键与所述第六存储节点之间的路由关系,并插入所述第九分库键与所述第六存储节点之间的路由关系。
举例来说,假如第二更新请求的语句为“UpdatetestsetF2=36whereF1=4”,该语句表示,将原系统表中F1=4(即第八分库键)时对应的F2的分库键更新为36(第九分库键)。假设原系统表为表5,根据表5可知,原系统表中F1=4时,F2=24(即第二原始分库键),则表5中将F1=4时,F2=24的值更新为F2=36,得到表8。
进一步的,根据表5和表6可知,原F2=24时的数据存储在存储节点4中,这样在更新后F2=36时的数据,即原F2=24时的数据存储在存储节点4(即第六存储节点)中,据此更新表6将表6中F2=24的记录删除,插入F2=36的记录可得到表9。
再例如,第二更新请求的语句为“Updatetestsetf2=37where f1=7”,该语句表示,将原系统表中F1=7(即第八分库键)时对应的F2的分库键更新为37(即第九分库键)。假设原系统表为表8,根据表8可知,原系统表中F1=7时,F2=21(即第二原始分库键),则表8中将F1=7时,F2=21的值更新为F2=37,得到表10。
表8
表9
进一步的,根据表8和表9可知,原F2=21时对应的F1上的分库键有两个,一个为1另一个为7,F2=21的数据存储在存储节点1和存储节点2上。其中,F1=7时,F2=21的数据存储在存储节点2上,F1=1时,F2=21的数据存储在存储节点1上,由此可知,将F1=7时,F2=21的值修改为F2=37之后,F2=37的数据,存储在存储节点2(即第六存储节点)上,而F1=1,F2=21的值仍旧存储在存储节点1上。因此更新表8将表8中F1=7,F2=21的记录删除,插入F1=7,F2=37的记录可得到表10。更新表9将表9中F2=21时对应的存储节点更新为存储节点1。添加F2=37时对应的存储节点为存储节点2得到表11。
表10
表11
本实施例在进行数据更新的同时,对第一系统表和第二系统表进行更新,能够确保更新后的数据能够被快速查询到,提高了数据的查询效率。
图7是本公开实施例提供的一种分布式数据库的访问装置的结构示意图,其中,该分布式数据库至少基于第一字段和第二字段对数据进行分片,其中基于第一字段分片得到第一路由关系,基于第二字段分片得到第二路由关系。如图7所示,访问装置70包括:
第一接收模块71,用于接收数据查询请求,所述数据查询请求中包括索引条件;
第一确定模块72,用于当所述索引条件为所述第一字段上的第一分库键时,基于所述第一路由关系,确定目标路由到的第一存储节点;
第二确定模块73,用于当所述索引条件为所述第二字段上的第二分库键时,基于所述第二路由关系,确定目标路由到的第一存储节点;
路由模块74,用于将所述数据查询请求路由到所述第一存储节点,以在所述第一存储节点中执行数据查询操作。
在一种实施方式中,装置70还包括:
第二接收模块,用于接收数据插入请求,所述数据插入请求包括目标插入的第一数据;
第一数据插入模块,用于根据所述第一数据在所述第一字段上的第三分库键以及预设的路由规则,将所述第一数据插入所述第三分库键对应的第二存储节点进行存储;
第二数据插入模块,用于根据所述第一数据在所述第二字段上的第四分库键以及所述预设的路由规则,将所述第一数据插入所述第四分库键对应的第三存储节点进行存储;
路由关系插入模块,用于在所述第一路由关系中插入所述第三分库键与所述第二存储节点之间的路由关系,以及在所述第二路由关系中插入所述第四分库键与所述第三存储节点之间的路由关系。
在一种实施方式中,装置70还包括:
第三接收模块,用于接收数据删除请求,所述数据删除请求中包括目标删除的第二数据;
第一删除模块,用于根据所述第二数据在所述第一字段上的第五分库键以及所述第一路由关系,从所述第五分库键对应的第四存储节点上删除所述第二数据;
第二删除模块,用于根据所述第二数据在所述第二字段上的第六分库键以及所述第二路由关系,从所述第六分库键对应的第五存储节点上删除所述第二数据;
路由关系删除模块,用于从所述第一路由关系中删除所述第五分库键与所述第四存储节点之间的路由关系,以及从所述第二路由关系中删除所述第六分库键与所述第五存储节点之间的路由关系。
在一种实施方式中,所述分布式数据库中包括第一系统表和第二系统表;其中,
所述第一系统表中包括所述第一路由关系、第一路由关系中每个第一字段的取值与第二字段的取值之间的对应关系,以及第二字段取得每个取值时,数据所在的存储节点的信息;
所述第二系统表中包括所述第二路由关系。
在一种实施方式中,装置70还包括:
第四接收模块,用于接收第一更新请求,所述第一更新请求中包括第一字段上的第一原始分库键和目标更新得到的第七分库键;
第一更新模块,用于将所述第一系统表中的所述第一原始分库键更新为所述第七分库键。
在一种实施方式中,装置70还包括:
第五接收模块,用于接收第二更新请求,所述第二更新请求中包括所述第一字段上的第八分库键以及在取得所述第八分库键时所述第二字段上对应的第九分库键;
第三确定模块,用于基于所述第一系统表,确定当所述第一字段取得所述第八分库键时,所述第二字段上对应的第二原始分库键,以及所述第二原始分库键对应的第六存储节点;
第二更新模块,用于将所述第一系统表中所述第八分库键对应的所述第二原始分库键更新为所述第九分库键;
第三更新模块,用于从所述第二系统表中删除所述第二原始分库键与所述第六存储节点之间的路由关系,并插入所述第九分库键与所述第六存储节点之间的路由关系。
本实施例提供的装置能够执行上述任一实施例的方法,其执行方式和有益效果类似,在这里不再赘述。
本公开实施例还提供一种分布式数据库的中间件服务器,该分布式数据库至少基于第一字段和第二字段对数据进行分片,其中,基于所述第一字段分片得到第一路由关系,基于所述第二字段分片得到第二路由关系,所述中间件服务器包括:存储器和处理器,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,可以实现上述任一实施例的方法。
本公开实施例还提供一种计算机可读存储介质,该存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述任一实施例的方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种分布式数据库的访问方法,其特征在于,所述分布式数据库至少基于第一字段和第二字段对数据进行分片,其中基于所述第一字段分片得到第一路由关系,基于所述第二字段分片得到第二路由关系,所述方法包括:
接收数据查询请求,所述数据查询请求中包括索引条件;
若所述索引条件为所述第一字段上的第一分库键,基于所述第一路由关系,确定目标路由到的第一存储节点;
若所述索引条件为所述第二字段上的第二分库键,基于所述第二路由关系,确定目标路由到的第一存储节点;
将所述数据查询请求路由到所述第一存储节点,以在所述第一存储节点中执行数据查询操作;
所述分布式数据库中包括第一系统表和第二系统表;其中,
所述第一系统表中包括所述第一路由关系、所述第一路由关系中每个第一字段的取值与第二字段的取值之间的对应关系,以及所述第二字段取得每个取值时,数据所在的存储节点的信息;
所述第二系统表中包括所述第二路由关系。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收数据插入请求,所述数据插入请求包括目标插入的第一数据;
根据所述第一数据在所述第一字段上的第三分库键以及预设的路由规则,将所述第一数据插入所述第三分库键对应的第二存储节点进行存储;
根据所述第一数据在所述第二字段上的第四分库键以及所述预设的路由规则,将所述第一数据插入所述第四分库键对应的第三存储节点进行存储;
在所述第一路由关系中插入所述第三分库键与所述第二存储节点之间的路由关系,以及在所述第二路由关系中插入所述第四分库键与所述第三存储节点之间的路由关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收数据删除请求,所述数据删除请求中包括目标删除的第二数据;
根据所述第二数据在所述第一字段上的第五分库键以及所述第一路由关系,从所述第五分库键对应的第四存储节点上删除所述第二数据;
根据所述第二数据在所述第二字段上的第六分库键以及所述第二路由关系,从所述第六分库键对应的第五存储节点上删除所述第二数据;
从所述第一路由关系中删除所述第五分库键与所述第四存储节点之间的路由关系,以及从所述第二路由关系中删除所述第六分库键与所述第五存储节点之间的路由关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第一更新请求,所述第一更新请求中包括第一字段上的第一原始分库键和目标更新得到的第七分库键;
将所述第一系统表中的所述第一原始分库键更新为所述第七分库键。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二更新请求,所述第二更新请求中包括所述第一字段上的第八分库键以及在取得所述第八分库键时所述第二字段上对应的第九分库键;
基于所述第一系统表,确定当所述第一字段取得所述第八分库键时,所述第二字段上对应的第二原始分库键,以及所述第二原始分库键对应的第六存储节点;
将所述第一系统表中所述第八分库键对应的所述第二原始分库键更新为所述第九分库键;
从所述第二系统表中删除所述第二原始分库键与所述第六存储节点之间的路由关系,并插入所述第九分库键与所述第六存储节点之间的路由关系。
6.一种分布式数据库的访问装置,其特征在于,所述分布式数据库至少基于第一字段和第二字段对数据进行分片,其中基于所述第一字段分片得到第一路由关系,基于所述第二字段分片得到第二路由关系,所述装置包括:
第一接收模块,用于接收数据查询请求,所述数据查询请求中包括索引条件;
第一确定模块,用于当所述索引条件为所述第一字段上的第一分库键时,基于所述第一路由关系,确定目标路由到的第一存储节点;
第二确定模块,用于当所述索引条件为所述第二字段上的第二分库键时,基于所述第二路由关系,确定目标路由到的第一存储节点;
路由模块,用于将所述数据查询请求路由到所述第一存储节点,以在所述第一存储节点中执行数据查询操作;
所述分布式数据库中包括第一系统表和第二系统表;其中,
所述第一系统表中包括所述第一路由关系、所述第一路由关系中每个第一字段的取值与第二字段的取值之间的对应关系,以及所述第二字段取得每个取值时,数据所在的存储节点的信息;
所述第二系统表中包括所述第二路由关系。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收数据插入请求,所述数据插入请求包括目标插入的第一数据;
第一数据插入模块,用于根据所述第一数据在所述第一字段上的第三分库键以及预设的路由规则,将所述第一数据插入所述第三分库键对应的第二存储节点进行存储;
第二数据插入模块,用于根据所述第一数据在所述第二字段上的第四分库键以及所述预设的路由规则,将所述第一数据插入所述第四分库键对应的第三存储节点进行存储;
路由关系插入模块,用于在所述第一路由关系中插入所述第三分库键与所述第二存储节点之间的路由关系,以及在所述第二路由关系中插入所述第四分库键与所述第三存储节点之间的路由关系。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三接收模块,用于接收数据删除请求,所述数据删除请求中包括目标删除的第二数据;
第一删除模块,用于根据所述第二数据在所述第一字段上的第五分库键以及所述第一路由关系,从所述第五分库键对应的第四存储节点上删除所述第二数据;
第二删除模块,用于根据所述第二数据在所述第二字段上的第六分库键以及所述第二路由关系,从所述第六分库键对应的第五存储节点上删除所述第二数据;
路由关系删除模块,用于从所述第一路由关系中删除所述第五分库键与所述第四存储节点之间的路由关系,以及从所述第二路由关系中删除所述第六分库键与所述第五存储节点之间的路由关系。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第四接收模块,用于接收第一更新请求,所述第一更新请求中包括第一字段上的第一原始分库键和目标更新得到的第七分库键;
第一更新模块,用于将所述第一系统表中的所述第一原始分库键更新为所述第七分库键。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第五接收模块,用于接收第二更新请求,所述第二更新请求中包括所述第一字段上的第八分库键以及在取得所述第八分库键时所述第二字段上对应的第九分库键;
第三确定模块,用于基于所述第一系统表,确定当所述第一字段取得所述第八分库键时,所述第二字段上对应的第二原始分库键,以及所述第二原始分库键对应的第六存储节点;
第二更新模块,用于将所述第一系统表中所述第八分库键对应的所述第二原始分库键更新为所述第九分库键;
第三更新模块,用于从所述第二系统表中删除所述第二原始分库键与所述第六存储节点之间的路由关系,并插入所述第九分库键与所述第六存储节点之间的路由关系。
11.一种分布式数据库的中间件服务器,其特征在于,所述分布式数据库至少基于第一字段和第二字段对数据进行分片,其中,基于所述第一字段分片得到第一路由关系,基于所述第二字段分片得到第二路由关系,所述中间件服务器包括:存储器和处理器,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011031133.7A CN112231400B (zh) | 2020-09-27 | 2020-09-27 | 分布式数据库的访问方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011031133.7A CN112231400B (zh) | 2020-09-27 | 2020-09-27 | 分布式数据库的访问方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112231400A CN112231400A (zh) | 2021-01-15 |
CN112231400B true CN112231400B (zh) | 2024-07-23 |
Family
ID=74108870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011031133.7A Active CN112231400B (zh) | 2020-09-27 | 2020-09-27 | 分布式数据库的访问方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231400B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204535B (zh) * | 2021-05-20 | 2024-02-02 | 中国工商银行股份有限公司 | 路由方法及装置、电子设备和计算机可读存储介质 |
CN115599801A (zh) * | 2022-09-13 | 2023-01-13 | 浙江大华技术股份有限公司(Cn) | 一种数据查询方法、系统、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005621A (zh) * | 2015-07-23 | 2015-10-28 | 张真 | 一种大数据分布式存储及并行索引系统的构建方法 |
CN110457363A (zh) * | 2019-07-05 | 2019-11-15 | 中国平安人寿保险股份有限公司 | 基于分布式数据库的查询方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135269B2 (en) * | 2011-12-07 | 2015-09-15 | Egnyte, Inc. | System and method of implementing an object storage infrastructure for cloud-based services |
US11314720B2 (en) * | 2017-03-01 | 2022-04-26 | Oracle International Corporation | Global consistency with recency in distributed database management systems |
CN108628942B (zh) * | 2018-03-27 | 2020-07-31 | 深圳市网心科技有限公司 | 区块链节点设备、分布式数据库的数据读取及写入方法 |
US10891271B2 (en) * | 2018-05-25 | 2021-01-12 | Oracle International Corporation | Optimized execution of queries involving early terminable database operators |
CN111414392B (zh) * | 2020-03-25 | 2022-08-05 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
CN111597238A (zh) * | 2020-06-10 | 2020-08-28 | 北京明朝万达科技股份有限公司 | 一种基于数据库的动态展示表格数据的方法及装置 |
-
2020
- 2020-09-27 CN CN202011031133.7A patent/CN112231400B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005621A (zh) * | 2015-07-23 | 2015-10-28 | 张真 | 一种大数据分布式存储及并行索引系统的构建方法 |
CN110457363A (zh) * | 2019-07-05 | 2019-11-15 | 中国平安人寿保险股份有限公司 | 基于分布式数据库的查询方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112231400A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11468027B2 (en) | Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor | |
US8429133B2 (en) | Partial key indexes | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
CN111538724B (zh) | 管理索引的方法 | |
CN106991102B (zh) | 倒排索引中键值对的处理方法及处理系统 | |
CN105488050A (zh) | 一种数据库多索引方法、装置及系统 | |
US20100223240A1 (en) | System and method for composite record keys ordered in a flat key space for a distributed database | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN112231398B (zh) | 数据存储方法、装置、设备及存储介质 | |
US20160103858A1 (en) | Data management system comprising a trie data structure, integrated circuits and methods therefor | |
CN110928882B (zh) | 一种基于改进红黑树的内存数据库索引方法及系统 | |
CN112231400B (zh) | 分布式数据库的访问方法、装置、设备及存储介质 | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
US20230252012A1 (en) | Method for indexing data | |
CN115935020A (zh) | 一种图数据存储方法和装置 | |
US11010381B2 (en) | Method for managing index | |
CN116150093B (zh) | 一种对象存储列举对象的实现方法及电子设备 | |
CN115809248B (zh) | 数据查询方法和装置以及存储介质 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
CN111858609A (zh) | 区块链模糊查询方法及装置 | |
CN112835905B (zh) | 一种数组类型列的索引方法、装置、设备以及存储介质 | |
US11132266B2 (en) | Method, device, and computer program product for managing application system | |
CN115481096A (zh) | 元数据处理方法、装置、设备及介质 | |
CN113626473A (zh) | 数据信息查询方法和装置 | |
CN114398373A (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 |