CN113420012B - 数据库节点管理方法、装置、数据库节点及存储介质 - Google Patents

数据库节点管理方法、装置、数据库节点及存储介质 Download PDF

Info

Publication number
CN113420012B
CN113420012B CN202110793535.9A CN202110793535A CN113420012B CN 113420012 B CN113420012 B CN 113420012B CN 202110793535 A CN202110793535 A CN 202110793535A CN 113420012 B CN113420012 B CN 113420012B
Authority
CN
China
Prior art keywords
node
global latch
database
array
latch 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
Application number
CN202110793535.9A
Other languages
English (en)
Other versions
CN113420012A (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.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database 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 Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN202110793535.9A priority Critical patent/CN113420012B/zh
Publication of CN113420012A publication Critical patent/CN113420012A/zh
Application granted granted Critical
Publication of CN113420012B publication Critical patent/CN113420012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/23Updating
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Abstract

本发明实施例公开了一种数据库节点管理方法、装置、数据库节点及存储介质,首先通过读取数组缓存,读取多组节点标识以及各节点标识相对应的数组成员编号;然后在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点;最后将数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识,并将当前全局闩节点的全局闩信息发送至目的全局闩节点。本发明实施例通过当前全局闩节点与目的全局闩节点间的动态调整,能够实现数据页全局闩信息的动态调整,从而减少节点间网络通信,提高更新效率。

Description

数据库节点管理方法、装置、数据库节点及存储介质
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据库节点管理方法、装置、数据库节点及存储介质。
背景技术
数据库一般会分配一片连续的内存用于数据页缓存,以提高数据访问性能,同一个数据页可能分布在不同节点的缓存中。共享存储数据库集群采用全局闩提供数据页的并发访问控制功能。对于某一个具体的数据页存放它的全局闩的这个节点称为全局闩节点(或全局闩主节点,Master EP)。闩(LATCH)是数据库管理系统中一种轻量级资源锁,用于快速、短时间锁定资源,防止多个用户同时访问、修改某个共享资源。
在共享存储数据库集群的一些场景下,需要更改数据页与全局闩节点之间的分配关系。例如,节点EP1访问数据页P1,但P1的全局闩节点EP是EP2,则EP1对P1的权限申请请求、数据页刷盘请求等都需要通过网络远程发送到EP2,EP2处理完后再响应EP1,会占用大量网络带宽影响系统整体性能;又如,在一些场景下需要主动停掉某一节点实例,剩余节点能够继续对外提供服务,比如硬件升级,软件版本升级等,这使得集群环境丢失了停机节点维护的部分全局闩信息,剩余节点都需要重构活动节点的全局闩信息才能满足各节点与数据页之间的关系。因此,更改全局闩节点的过程实现复杂,效率低下。
发明内容
本发明提供了一种数据库节点管理方法、装置、数据库节点及存储介质,以实现动态调整全局闩节点,减少节点间网络通信,提高更新效率。
第一方面,本发明实施例提供了一种数据库节点管理方法,该方法包括:
读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;
在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;
将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
第二方面,本发明实施例还提供了一种数据库节点管理装置,该装置包括:
数组读取模块,用于读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;
目的节点确定模块,用于在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;
节点更新模块,用于将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
第三方面,本发明实施例还提供了一种数据库节点,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述的数据库节点管理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明实施例中任一所述的数据库节点管理方法。
本发明实施例提供了一种数据库节点管理方法、装置、数据库节点及存储介质,首先通过读取数组缓存,读取多组节点标识以及各节点标识相对应的数组成员编号;然后在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点;最后将数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识,并将当前全局闩节点的全局闩信息发送至目的全局闩节点。该方法通过当前全局闩节点与目的全局闩节点间的动态调整,能够实现数据页全局闩信息的动态调整,从而减少节点间网络通信,提高更新效率。
附图说明
图1为本发明实施例一提供的一种数据库节点管理方法的流程示意图;
图2为本发明实施例二提供的一种数据库节点管理方法的流程示意图;
图3A为本发明实施例二提供的一种节点EPX的数组构造示意图;
图3B为本发明实施例二提供的一种全局闩节点替换后的节点EPX数组构造示意图;
图4为本发明实施例三提供的一种数据库节点管理方法的流程示意图;
图5为本发明实施例三提供的一种DRM结束后的节点EPX数组构造示意图;
图6为本发明实施例四提供的一种数据库节点管理装置的结构示意图;
图7为本发明实施例五提供的一种数据库节点的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对相应内容进行区分,并非用于限定顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
实施例一
图1为本发明实施例一提供的一种数据库节点管理方法的流程示意图,该方法可适用于针对共享存储数据库集群中各数据库节点,动态调整全局闩节点的情况,该方法可以由本发明实施例中的数据库节点管理装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在任何提供数据库节点管理功能的设备上。
如图1所示,本发明实施例一提供的一种数据库节点管理方法的流程示意图,该方法包括如下步骤:
S110、读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号。
其中,数组可以指有限个类型相同的元素的集合,数组长度可以指数组中元素的多少;例如,在本实施例中,数组可以为一种字节(Byte)类型数组,其中该Byte类型数组可表示为global_master_map[]。global_master_map[]缓存可以用于存储多组重复的节点标识,并以此来作为节点管理的依据,其中所缓存的节点标识数量可以根据global_master_map[]的长度决定;例如,若数据库集群中有M个节点,一组节点标识可以依次表示为0,1,…,M-1,则在global_master_map[]缓存中存储多组重复的节点标识可以指,将多组重复的节点标识,即0,1,…,M-1,0,1,…,M-1,…0,1…依次存储入global_master_map[]中,直至达到global_master_map[]的长度为止;其中,注意在本实施例中,对每组中节点标识的排列顺序不作限定,可以是从小到大排列,例如0,1,…,M-1,也可以是从大到小排列,例如M-1,…,1,0。global_master_map[]的长度可以根据所需访问数据页的数据量大小来决定;数据页(PAGE)可以指数据库中数据存储的基本单位,也可以指数据访问、修改、以及输入/输出(In/Out,I/O)的基本单位。
节点标识可以指节点名或节点号,例如可以表示为EP1、EP2或EP3等,且在本实施例中节点标识可以是动态更新的。数组成员编号可以用于将数组中的每个节点标识都对应一个编号,编号依次从左到右,范围为0~N-1,其中N可以指global_master_map[]的长度;并且数组成员编号是固定的,以便于后续节点的管理和分配。
数据库集群可以指一组服务器,该组服务器可以作为一个整体向用户提供一组网络资源,以用于数据的存储和处理等;其中集群中的每个服务器可以指每个数据库节点。在本实施例中,每个数据库节点均增加一个global_master_map[],将其作为节点管理的依据。
S120、在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点。
其中,全局闩可以指数据库管理系统中的一种内部数据结构,通常可以用来协调、管理字典缓存和数据库文件等资源的并发访问,以避免两个或多个节点同时访问修改同一个数据页造成的数据损坏缺失等情况;对于某一个具体的数据页而言,存放它的全局闩的这个节点称为全局闩节点。
全局闩节点更新条件可以包括两种情况,一种是所访问数据页的全局闩主节点不是当前节点;另一种是当前全局闩节点因其他原因而停机,其中停机可能会导致该节点中的部分全局闩节点信息丢失。相应的,一种情况下,当前全局闩节点可以指存放有所访问数据页的全局闩的节点,目的全局闩节点可以指执行该数据页访问的发起节点;另一种情况下,当前全局闩节点可以指即将停机的节点,目的全局闩节点可以指替代即将停机的节点管理相应全局闩的节点。
S130、将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
其中,为了避免后续全局闩收集和分发过程中出现并发问题,在满足全局闩节点更新条件的情况下,还需通知集群内的数据库节点暂停数据页访问请求操作。
在确定当前全局闩节点对应的目的全局闩节点之后,不仅需要将该当前数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识,并将当前全局闩节点的全局闩信息发送至目的全局闩节点;与此同时,因为每个数据库节点均包含一个global_master_map[]缓存用于数据库节点管理,所以还需要通知集群内的其他数据库节点将本地的数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识。
本发明实施例一提供的一种数据库节点管理方法,该方法首先通过读取数组缓存,读取多组节点标识以及各节点标识相对应的数组成员编号;然后在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点;最后将数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识,并将当前全局闩节点的全局闩信息发送至目的全局闩节点。该方法通过当前全局闩节点与目的全局闩节点间的动态调整,能够实现数据页全局闩信息的动态调整,从而减少节点间网络通信,提高更新效率。
实施例二
图2为本发明实施例二提供的一种数据库节点管理方法的流程示意图,本实施例是在上述实施例的基础上进行细化。在本实施例中,该方法具体包括如下步骤:
S210、初始化数组缓存,所述数组缓存中的每组节点标识按照相同顺序排列,所述数组缓存的长度为N,N为大于或等于M的整数,M为集群中的数据库节点总数。
其中,初始化数组缓存可以指依次将各个节点的节点标识填入数组中,直至达到数组缓存长度N为止。示例性的,当前集群包含M个数据库节点,在每个节点中均构建一个数组global_master_map[],其中所构建的每个global_master_map[]中均存储有多组节点标识,每组节点标识可以由M个数据库节点的节点标识组成,且每组节点标识均按照相同顺序排列,例如可以按照从小到大的顺序排列,即可以表示为0,1,2,…,M-1。图3A为本发明实施例二提供的一种节点EPX的数组构造示意图,如图3A所示,将某一数据库节点EPX作为当前全局闩节点,然后在节点EPX中构建一个global_master_map[],然后再将多组节点标识填入global_master_map[]中,直至达到数组缓存长度N为止;每组节点标识均按照0,1,2,…,EPX,…,M-1的相同顺序排列,其中在所构建的global_master_map[]中,不同位置的EPX可以表示节点EPX上存储的不同全局闩。需要注意的是,一个节点上可以存储0到多个全局闩。图3A中的下标0~N-1可以指global_master_map[]中的数组成员编号,也就是说,global_master_map[]中的每个节点标识都依次对应一个下标。
其中,初始化数组记录了数据页与数据库节点之间的对应关系。
可选的,数据页与数据库节点之间满足以下对应关系:对于一个数据页,该数据页对应的哈希随机掩码对所述数组缓存的长度取余,余数作为数组成员编号所对应的数据库节点为该数据页对应的全局闩节点。
其中,计算某一数据页所对应的全局闩节点的算法可以表示为global_master_map[(page_no^HASH_RANDOM_MASK)%N]。其中page_no可以指数据页的页号;HASH_RANDOM_MASK可以指哈希随机掩码,可以设置为某一固定的大质数或者是一个可根据数据页的数据量调整的数;^可以指异或运算符号;在本实施例中可以通过page_no与HASH_RANDOM_MASK的异或运算得到某一数据页所对应的哈希随机掩码,从而得到每个数据页对应的一个随机数,以保证全局闩分配的均匀性。%可以指取余运算符号,在本实施例中可以通过某一数据页所对应的哈希随机掩码对数组缓存的长度N取余,所计算的余数作为数组成员编号,数组中该数组成员编号所对应的数据库节点为该数据页对应的全局闩节点。在此基础上,可以保证将数据页对应的全局闩均匀分配到各个数据库节点。
S220、读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号。
S230、在接收到对所述当前全局闩节点锁定的数据页的访问请求的情况下,将发起所述访问请求的数据库节点作为所述目的全局闩节点。
其中,可以根据数组缓存的数据页与数据库节点之间的对应关系,来确定该数据页是否为当前全局闩节点锁定的数据页,如果是,则将发起访问请求的数据库节点(记为EPY)作为目的全局闩节点,以替代当前全局闩节点管理该数据页的全局闩信息。
S240、将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
其中,根据上述S210所述可将某一数据库节点EPX作为当前全局闩节点,假设对于被访问的数据页page_X,global_master_map[(page_X^HASH_RANDOM_MASK)%N]=EPX。示例性的,图3B为本发明实施例二提供的一种全局闩节点替换后的节点EPX数组构造示意图,如图3B所示,目的全局闩节点为EPY,其中global_master_map[]数组下标nth可以表示S210中所计算的余数,即(page_X^HASH_RANDOM_MASK)%N=nth。调整page_X的全局闩节点的具体步骤如下:
首先,通过节点EPX通知集群内的数据库节点暂停数据页访问请求操作;其次通过节点EPX扫描nth所对应的EPX节点全局闩缓存,收集nth的全局闩信息,并存储在obj_lst中,obj_lst可以指用于存储全局闩信息的一个文件目录;然后节点EPX将obj_lst中所保存的所有全局闩信息通过网络发送给节点EPY,节点EPY收到消息后将全局闩信息加入自身节点的全局闩缓存,同时节点EPX从自身全局闩缓存中移除obj_lst所保存的所有全局闩信息;之后,节点EPX修改所对应的节点标识为EPY,即修改global_master_map[nth]=EPY,并且同时通知集群内的所有其他数据库节点将本地的数组缓存中节点EPX的节点标识替换为节点EPY的节点标识;最后,在调整完page_X的全局闩节点之后,通过节点EPX通知集群内所有数据库节点恢复数据页请求操作。
注意在本实施例中,可以通过查询系统性能监控视图,选择那些访问量大且对应全局闩节点不是数据页访问发起节点的数据页来进行全局闩节点的调整。
本发明实施例二提供的一种数据库节点管理方法,具体化了通过数据页与数据库节点之间的对应关系以调整数据页的全局闩节点的方法,利用该方法能够将数据页的全局闩节点调整为发起数据页访问的节点,实现数据页全局闩信息的动态调整,从而避免因数据页的全局闩节点与发起数据页访问的节点之间的网络通信而占用大量网络带宽,进一步减少节点间网络通信,提高更新效率。
实施例三
图4为本发明实施例三提供的一种数据库节点管理方法的流程示意图,本实施例是在上述实施例的基础上进行细化。在本实施例中,该方法具体包括如下步骤:
S310、初始化数组缓存,所述数组缓存中的每组节点标识按照相同顺序排列,所述数组缓存的长度为N,N为大于或等于M的整数,M为集群中的数据库节点总数。
在本实施例中,初始化的数组缓存可以是指图3A所示的节点EPX所构造的数组global_master_map。
S320、读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号。
S330、在所述当前全局闩节点失效的情况下,从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点。
其中,失效可以指当前全局闩节点处于待停机状态,其节点中的全局闩信息可能会因节点停机而丢失。在本实施例中,当前全局闩节点可以指失效节点,即待停机节点;目的全局闩节点可以指替代即将停机的节点,来管理相应全局闩的节点。
可选的,从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点,包括:
循环执行扫描操作,直至遍历所述数组缓存中的全部数组成员编号,其中,每次循环针对于一个数组成员编号;
在每次循环过程中,所述扫描操作包括:针对一个数组成员编号,若该数组成员编号对应的节点标识为所述当前全局闩节点的节点标识,则从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点。
其中,按照数组成员编号,对集群中的每个数据库节点执行扫描操作,直至遍历数组缓存中的全部数组成员编号,是为了检测每次循环所针对的数组成员编号所对应的节点标识是否是失效的当前全局闩节点的节点标识,若是,则从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点。
例如,节点EPX是当前全局闩节点,也即失效的数据库节点,节点EPX所构建的长度为N的数组缓存内容为[EP0,EP1,…,EPX,EPN-1],可表示为ok_ep_arr_org=[EP0,EP1,…,EPX,EPN-1],节点EPX失效后,剩余的有效数据库节点数所组成的数组缓存的长度为N-1;将ok_ep_arr_org中失效的数据库节点(即EPX)剔除掉之后,剩余的有效数据库节点数所组成的数组缓存内容可表示为ok_ep_arr_new=[EP0,EP1,…,EPN-1]。
每次循环的目的是,判断一个数组成员编号在数组缓存ok_ep_arr_org中对应的全局闩节点是否为失效的数据库节点,如果是,则需要在剔除该失效节点的数组ok_ep_arr_new中选择一个有效数据库节点作为新的目的全局闩节点,替换失效的数据库节点。
循环次数记为count,设置count初始值为0,每一次循环结束后加1;相应的,被扫描的数组成员编号初始值为0,每一次循环结束后加1,在此基础上,在第一次循环中(count=0,数组成员编号为0),判断ok_ep_arr_org[0]的数据库节点EP0是否为失效的数据库节点,如果不是(即global_master_map[nth]!=EPX),则count+1、数组成员编号+1,进入下一次循环(count=1,数组成员编号为1),判断ok_ep_arr_org[1]的数据库节点EP1是否为失效的数据库节点;如果某次循环中数组成员编号在ok_ep_arr_org中对应的数据库节点为EPX(即global_master_map[nth]=EPX),则需要在ok_ep_arr_new中重新选择一个数据库节点作为新的目的全局闩节点。以此类推,直至遍历所有的数组成员编号。
可选的,从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点,包括:
循环次数对剩余有效节点数取余,将余数所对应的有效数据库节点作为该数组成员编号对应的目的全局闩节点。
循环次数对剩余有效数据库节点数取余的余数可以表示为count%(N-1),则在剩余有效数据库节点组成的数组ok_ep_arr_new中,该余数所对应的数据库节点即为目的全局闩节点,可表示为ok_ep_arr_new[count%(N-1)]。在此基础上,通过取余的方式,可以将数据页的全局闩信息均匀分配至剩余的N-1个有效的数据库节点上。
S340、将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
其中,将当前全局闩节点的全局闩信息分发至对应的目的全局闩节点的过程称为动态资源管理(Dynamic Resource Management,DRM),对当前全局闩节点EPX执行DRM的具体方法如下:首先设置数组成员编号初始值nth=0,且每循环一次结束后加1,即nth=nth+1;设置循环次数初始值count=0,且每循环一次结束后加1,即count=count+1;目的全局闩节点可以为剩余的有效数据库节点,目的全局闩节点可能有一个或多个,其数量取决于在原数组中有几个失效的全局闩节点。
在每次循环中,count在ok_ep_arr_new中所对应的有效数据库节点可作为数组成员编号nth对应的目的全局闩节点,目的全局闩节点可表示为EPY,则EPY=ok_ep_arr_new[count%(N-1)],假设某次循环中扫描出失效节点EPX,则上述表达式表示此次DRM需要将与该次count相应的nth所对应的EPX节点的全局闩信息动态分发到节点EPY,即将节点EPY替换掉失效节点EPX;循环执行DRM可以逐一将EPX的全局闩信息依次均匀分发到其他剩余的各有效数据库节点,也就是将剩余有效数据库节点依次均匀替换掉失效的EPX节点。例如,在循环过程中,若第一次出现global_master_map[nth1]=EPX,其中nth1可以表示在DRM循环过程中第一次出现节点EPX时,count所对应的nth,则把count在ok_ep_arr_new中所对应的有效数据库节点EP0分配到第一次出现的EPX上;若第二次出现global_master_map[nth2]=EPX,其中,nth2可以表示在DRM循环过程中第二次出现节点EPX时,count所对应的nth,则把count在ok_ep_arr_new中所对应的有效数据库节点EP1分配到第二次出现的EPX上;以此类推,不断循环直至nth=N-1,所有的EPX都依次被不同的有效数据库节点均匀替换掉为止;最后DRM结束后,节点EPX不再管理任何全局闩信息,此时节点EPX退出,剩余有效数据库节点也不需重构全局闩信息。在本实施例中,均可以按照上述实施例二的方法将有效数据库节点依次分配到数组中出现的EPX上。
图5为本发明实施例三提供的一种DRM结束后的节点EPX数组构造示意图,如图5所示,在循环过程中,nth1所对应的数组节点EPX分发到了ok_ep_arr_new中的节点EP0,nth2所对应的数组节点EPX分发到了ok_ep_arr_new中的节点EP1,以此类推,循环执行DRM结束后,数组中的EPX全局闩信息依次均匀分发到了EP0、EP1和EP2等剩余有效数据库节点。在本实施例中,若ok_ep_arr_org数组中失效节点EPX的个数超出剩余有效数据库节点数,则在分发完ok_ep_arr_new中的剩余有效数据库节点时,继续从ok_ep_arr_new中的第一个开始分发,以此类推,直至将ok_ep_arr_org中的失效节点EPX全部替换完为止。注意节点EPX构建的初始数组可以为图3A所示的数组,图5是根据图3A所示的数组经过DRM后变化而得的数组。
本发明实施例三提供的一种数据库节点管理方法,具体化了通过DRM以重构节点全局闩信息的方法,利用该方法能够将失效节点的全局闩信息全部分发到其他剩余有效数据库节点上,避免了节点失效导致的全局闩信息丢失等情况;该方法通过将失效节点的全局闩信息进行重构,既能够将维护失效节点的全局闩信息,还能够避免其他剩余有效数据库节点的全局闩信息重构,进一步优化了集群内节点失效维护逻辑,提高更新效率。
实施例四
图6为本发明实施例四提供的一种数据库节点管理装置的结构示意图,该装置可适用于通过共享存储数据库集群中各数据库节点对数据页进行访问、修改时,动态调整全局闩节点的情况,其中该装置可由软件和/或硬件实现,并一般集成在任何提供数据库节点管理功能的设备上。
如图6所示,该装置包括:数组读取模块410、目的节点确定模块420以及节点更新模块430。
其中,数组读取模块410,用于读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;
目的节点确定模块420,用于在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;
节点更新模块430,用于将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
本发明实施例四提供的一种数据库节点管理装置,首先通过数组读取模块读取数组缓存;然后通过目的节点确定模块确定当前全局闩节点对应的目的全局闩节点;最后通过节点更新模块将数组缓存中当前全局闩节点的节点标识替换为目的全局闩节点的节点标识,并将当前全局闩节点的全局闩信息发送至目的全局闩节点。该装置通过当前全局闩节点与目的全局闩节点间的动态调整,能够实现数据页全局闩信息的动态调整,从而减少节点间网络通信,提高更新效率。
可选的,所述装置还包括:
数组初始化模块,用于在读取数组缓存之前,初始化数组缓存,所述数组缓存中的每组节点标识按照相同顺序排列,所述数组缓存的长度为N,N为大于或等于M的整数,M为集群中的数据库节点总数。
可选的,目的节点确定模块420具体用于:
在接收到对所述当前全局闩节点锁定的数据页的访问请求的情况下,将发起所述访问请求的数据库节点作为所述目的全局闩节点。
可选的,在所述装置中,数据页与数据库节点之间满足以下对应关系:
对于一个数据页,该数据页对应的哈希随机掩码对所述数组缓存的长度取余,余数作为数组成员编号所对应的数据库节点为该数据页对应的全局闩节点。
可选的,目的节点确定模块420具体还用于:
在所述当前全局闩节点失效的情况下,从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点。
可选的,目的节点确定模块420具体还用于:
循环执行扫描操作,直至遍历所述数组缓存中的全部数组成员编号,其中,每次循环针对于一个数组成员编号;
在每次循环过程中,所述扫描操作包括:针对一个数组成员编号,若该数组成员编号对应的节点标识为所述当前全局闩节点的节点标识,则从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点。
可选的,目的节点确定模块420具体还用于:
循环次数对剩余有效节点数取余,将余数所对应的有效数据库节点作为该数组成员编号对应的目的全局闩节点。
上述数据库节点管理装置可执行本发明任意实施例所提供的数据库节点管理方法,具备执行方法相应的功能模块和有益效果。
实施例五
图7为本发明实施例五提供的一种数据库节点的结构示意图。如图7所示,本发明实施例五提供的数据库节点包括:一个或多个处理器41和存储装置42;该数据库节点中的处理器41可以是一个或多个,图5中以一个处理器41为例;存储装置42用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器41执行,使得所述一个或多个处理器41实现如本发明实施例中任一项所述的数据库节点管理方法。
所述数据库节点还可以包括:输入装置43和输出装置44。
数据库节点中的处理器41、存储装置42、输入装置43和输出装置44可以通过总线或其他方式连接,图7中以通过总线连接为例。
该数据库节点中的存储装置42作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例一、二或三所提供数据库节点管理方法对应的程序指令/模块(例如,附图6所示的数据库节点管理装置中的模块,包括:数组读取模块410、目的节点确定模块420以及节点更新模块430)。处理器41通过运行存储在存储装置42中的软件程序、指令以及模块,从而执行数据库节点的各种功能应用以及数据处理,即实现上述方法实施例中数据库节点管理方法。
存储装置42可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据数据库节点的使用所创建的数据等。此外,存储装置42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至数据库节点。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于接收输入的数字或字符信息,以及产生与数据库节点的用户设置以及功能控制有关的键信号输入。输出装置44可包括显示屏等显示设备。
并且,当上述数据库节点所包括一个或者多个程序被所述一个或者多个处理器41执行时,程序进行如下操作:读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
实施例六
本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行数据库节点管理方法,该方法包括:读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点。
可选的,该程序被处理器执行时还可以用于执行本发明任意实施例所提供的数据库节点管理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (7)

1.一种数据库节点管理方法,其特征在于,包括:
读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;
在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;
将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点;
其中,在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,包括:在所述当前全局闩节点失效的情况下,从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点;
所述从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点,包括:循环执行扫描操作,直至遍历所述数组缓存中的全部数组成员编号,其中,每次循环针对于一个数组成员编号;在每次循环过程中,所述扫描操作包括:针对一个数组成员编号,若该数组成员编号对应的节点标识为所述当前全局闩节点的节点标识,则从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点;
所述从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点,包括:循环次数对剩余有效节点数取余,将余数所对应的有效数据库节点作为该数组成员编号对应的目的全局闩节点。
2.根据权利要求1所述的方法,其特征在于,在读取数组缓存之前,还包括:
初始化数组缓存,所述数组缓存中的每组节点标识按照相同顺序排列,所述数组缓存的长度为N,N为大于或等于M的整数,M为集群中的数据库节点总数。
3.根据权利要求1所述的方法,其特征在于,数据页与数据库节点之间满足以下对应关系:
对于一个数据页,该数据页对应的哈希随机掩码对所述数组缓存的长度取余,余数作为数组成员编号所对应的数据库节点为该数据页对应的全局闩节点。
4.根据权利要求1所述的方法,其特征在于,在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,包括:
在接收到对所述当前全局闩节点锁定的数据页的访问请求的情况下,将发起所述访问请求的数据库节点作为所述目的全局闩节点。
5.一种数据库节点管理装置,其特征在于,包括:
数组读取模块,用于读取数组缓存,所述数组缓存中存储多组节点标识,各所述节点标识依次对应于一个数组成员编号;
目的节点确定模块,用于在满足全局闩节点更新条件的情况下,确定当前全局闩节点对应的目的全局闩节点,其中,所述当前全局闩节点与所述目的全局闩节点为集群中不同的数据库节点;
节点更新模块,用于将所述数组缓存中所述当前全局闩节点的节点标识替换为所述目的全局闩节点的节点标识,并将所述当前全局闩节点的全局闩信息发送至所述目的全局闩节点;
其中,所述目的节点确定模块具体用于:在所述当前全局闩节点失效的情况下,从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点;
所述从集群的数据库节点中选取相应数量的数据库节点,分别作为与所述当前全局闩节点对应的至少一个数组成员编号对应的目的全局闩节点,包括:循环执行扫描操作,直至遍历所述数组缓存中的全部数组成员编号,其中,每次循环针对于一个数组成员编号;在每次循环过程中,所述扫描操作包括:针对一个数组成员编号,若该数组成员编号对应的节点标识为所述当前全局闩节点的节点标识,则从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点;
所述从集群的数据库节点中选取一个数据库节点,作为该数组成员编号对应的目的全局闩节点,包括:循环次数对剩余有效节点数取余,将余数所对应的有效数据库节点作为该数组成员编号对应的目的全局闩节点。
6.一种数据库节点,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的数据库节点管理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的数据库节点管理方法。
CN202110793535.9A 2021-07-14 2021-07-14 数据库节点管理方法、装置、数据库节点及存储介质 Active CN113420012B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110793535.9A CN113420012B (zh) 2021-07-14 2021-07-14 数据库节点管理方法、装置、数据库节点及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110793535.9A CN113420012B (zh) 2021-07-14 2021-07-14 数据库节点管理方法、装置、数据库节点及存储介质

Publications (2)

Publication Number Publication Date
CN113420012A CN113420012A (zh) 2021-09-21
CN113420012B true CN113420012B (zh) 2024-04-09

Family

ID=77720964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110793535.9A Active CN113420012B (zh) 2021-07-14 2021-07-14 数据库节点管理方法、装置、数据库节点及存储介质

Country Status (1)

Country Link
CN (1) CN113420012B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200414682A (en) * 2002-11-08 2004-08-01 Ibm High performance, low power differential latch
US8176022B1 (en) * 2006-08-26 2012-05-08 Radames Garcia Locking protocol using dynamic locks and dynamic shared memory
CN109063132A (zh) * 2018-08-02 2018-12-21 上海达梦数据库有限公司 闩锁请求方法、闩锁授权方法、装置及终端设备
CN109408519A (zh) * 2018-11-08 2019-03-01 上海达梦数据库有限公司 一种数据页的访问方法、装置、服务器及存储介质
CN111444147A (zh) * 2020-03-30 2020-07-24 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
CN112395141A (zh) * 2020-11-25 2021-02-23 上海达梦数据库有限公司 一种数据页管理方法、装置、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032637B2 (en) * 2007-12-26 2011-10-04 Symantec Corporation Balanced consistent hashing for distributed resource management
US10108653B2 (en) * 2015-03-27 2018-10-23 International Business Machines Corporation Concurrent reads and inserts into a data structure without latching or waiting by readers
US20200073876A1 (en) * 2018-08-30 2020-03-05 Qliktech International Ab Scalable indexing architecture
US12001460B2 (en) * 2019-08-08 2024-06-04 International Business Machines Corporation Performing a write-prioritized tree copy

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200414682A (en) * 2002-11-08 2004-08-01 Ibm High performance, low power differential latch
US8176022B1 (en) * 2006-08-26 2012-05-08 Radames Garcia Locking protocol using dynamic locks and dynamic shared memory
CN109063132A (zh) * 2018-08-02 2018-12-21 上海达梦数据库有限公司 闩锁请求方法、闩锁授权方法、装置及终端设备
CN109408519A (zh) * 2018-11-08 2019-03-01 上海达梦数据库有限公司 一种数据页的访问方法、装置、服务器及存储介质
CN111444147A (zh) * 2020-03-30 2020-07-24 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
CN112395141A (zh) * 2020-11-25 2021-02-23 上海达梦数据库有限公司 一种数据页管理方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
多处理器系统下SQL Server性能瓶颈的排查与改善;王罡;茅维华;;武汉大学学报(理学版)(第S1期);全文 *
虚拟现实技术在核电站在役检查管理系统中的应用;周国正;张学粮;颜安和;;应用科技;20130528(第03期);全文 *

Also Published As

Publication number Publication date
CN113420012A (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
CN111444147B (zh) 一种数据页创建方法、装置、终端设备及存储介质
US20140279840A1 (en) Read Mostly Instances
US9830333B1 (en) Deterministic data replication with conflict resolution
US8666958B2 (en) Approaches to reducing lock communications in a shared disk database
US11288237B2 (en) Distributed file system with thin arbiter node
CN104038520A (zh) 一种多版本分布式资源管理方法和系统
US9785697B2 (en) Methods and apparatus for implementing a distributed database
CN107180082A (zh) 一种基于多级缓存机制的数据更新系统及方法
CN115617520A (zh) 资源参数配置方法及装置、电子设备和存储介质
CN113420012B (zh) 数据库节点管理方法、装置、数据库节点及存储介质
US8341368B2 (en) Automatic reallocation of structured external storage structures
Chakraborty et al. SHMEMPMI--Shared memory based PMI for improved performance and scalability
US10922001B2 (en) Vector-based storage management
CN110457307A (zh) 元数据管理系统、用户集群创建方法、装置、设备和介质
CN112395339A (zh) 系统间数据准入校验方法、装置、计算机设备和存储介质
CN110781137A (zh) 分布式系统的目录读取方法、装置、服务器和存储介质
US11711220B1 (en) System and methods for computation, storage, and consensus in distributed systems
CN109005465A (zh) 弹幕消息分发方法、装置、设备及存储介质
CN114398410A (zh) 一种连续编号生成方法、装置、服务器集群及存储介质
CN112000482B (zh) 一种内存管理的方法、装置、电子设备及存储介质
CN108810644B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN114217986A (zh) 数据处理方法、装置、设备、存储介质及产品
CN113779052A (zh) 数据更新方法、装置、设备及存储介质
CN112527464A (zh) 基于区块链的虚拟机内存自动扩容系统和方法
US10120897B2 (en) Interception of database queries for delegation to an in memory data grid

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