掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及计算机技术领域,特别涉及一种数据库管理方法、装置、设备及可读存储介质。

背景技术

OVSDB数据库(Open vSwitch Database,开放虚拟交换机数据库)与客户端通过ovsdb协议(open vswitch database management protocol,开放虚拟交换机数据库管理协议)进行通信。

若OVSDB数据库中的任一父节点(OVSDB数据库中记录的某一个表)创建了新子节点(表的某一个列),那么在进行表关联处理时,就需要创建当前父节点包括所有子节点的上下文信息来进行处理。假设新建一个子节点后,当前父节点包括N个子节点,那么需要创建N个上下文信息进行表关联处理,且需要以N进行循环处理。也就是:新建一个子节点后,数据库的流程处理复杂度为O(N

因此,如何降低OVSDB数据库的处理复杂度,是本领域技术人员需要解决的问题。

发明内容

有鉴于此,本申请的目的在于提供一种数据库管理方法、装置、设备及可读存储介质,以降低OVSDB数据库的处理复杂度。其具体方案如下:

第一方面,本申请提供了一种数据库管理方法,包括:

若OVSDB数据库中的任一父节点创建了新子节点,则记录所述父节点的当前子节点信息;

获取所述父节点的历史子节点信息;所述历史子节点信息包括:创建所述新子节点之前,所述父节点的所有子节点信息;

对比所述历史子节点信息和所述当前子节点信息,以确定所述新子节点,并创建所述新子节点的上下文信息进行相应处理。

优选地,所述记录所述父节点的当前子节点信息,包括:

利用位图记录当前所述父节点包括的每个子节点对应的标识信息和相应位图标记,以获得所述当前子节点信息。

优选地,所述对比所述历史子节点信息和所述当前子节点信息,以确定所述新子节点,包括:

利用二分查找法查询所述历史子节点信息和所述当前子节点信息,以确定同时出现在所述历史子节点信息和所述当前子节点信息中的目标子节点;

将所述当前子节点信息中除所述目标子节点以外的其他节点,确定为所述新子节点。

优选地,所述利用二分查找法对比查询所述历史子节点信息和所述当前子节点信息,以确定同时出现在所述历史子节点信息和所述当前子节点信息中的目标子节点,包括:

以所述历史子节点信息为基准,利用所述二分查找法在所述当前子节点信息中查询并标记所述目标子节点。

优选地,所述利用二分查找法对比查询所述历史子节点信息和所述当前子节点信息,以确定同时出现在所述历史子节点信息和所述当前子节点信息中的目标子节点,包括:

以所述当前子节点信息为基准,利用所述二分查找法在所述历史子节点信息中查询并标记所述目标子节点。

优选地,还包括:

若同步所述OVSDB数据库中的配置信息至客户端,则所述客户端判断当前同步的类型是否为初始同步;若是,则从所述OVSDB数据库中读取所述配置信息,并在所述配置信息中查询具有父子关联关系的第一信息,一次性解析所述第一信息。

优选地,还包括:

针对所述配置信息中的不具有父子关联关系的第二信息,所述客户端逐一解析所述第二信息。

第二方面,本申请提供了一种数据库管理装置,包括:

记录模块,用于若OVSDB数据库中的任一父节点创建了新子节点,则记录所述父节点的当前子节点信息;

获取模块,用于获取所述父节点的历史子节点信息;所述历史子节点信息包括:创建所述新子节点之前,所述父节点的所有子节点信息;

处理模块,用于对比所述历史子节点信息和所述当前子节点信息,以确定所述新子节点,并创建所述新子节点的上下文信息进行相应处理。

第三方面,本申请提供了一种数据库管理设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序,以实现前述公开的数据库管理方法。

第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据库管理方法。

通过以上方案可知,本申请提供了一种数据库管理方法,包括:若OVSDB数据库中的任一父节点创建了新子节点,则记录所述父节点的当前子节点信息;获取所述父节点的历史子节点信息;所述历史子节点信息包括:创建所述新子节点之前,所述父节点的所有子节点信息;对比所述历史子节点信息和所述当前子节点信息,以确定所述新子节点,并创建所述新子节点的上下文信息进行相应处理。

可见,本申请在OVSDB数据库中的任一父节点创建了新子节点后,记录父节点的当前子节点信息,并将当前子节点信息与当前父节点在创建新子节点之前的所有子节点信息进行对比,从而可确定出当前新建了哪些新子节点,然后只创建新子节点的上下文信息进行相应处理,故只需要针对新子节点进行表关联处理,无需考虑该父节点下的旧子节点,因此降低了流程处理的复杂度和OVSDB数据库的处理复杂度。

相应地,本申请提供的一种数据库管理装置、设备及可读存储介质,也同样具有上述技术效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种数据库管理方法流程图;

图2为本申请公开的另一种数据库管理方法流程图

图3为本申请公开的一种SDN网络版本的基础框架示意图;

图4为本申请公开的一种数据库管理装置示意图;

图5为本申请公开的一种数据库管理设备示意图;

图6为本申请公开的另一种数据库管理设备示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,若OVSDB数据库中的任一父节点(OVSDB数据库中记录的某一个表)创建了新子节点(表的某一个列),那么在进行表关联处理时,就需要创建当前父节点包括所有子节点的上下文信息来进行处理。假设新建一个子节点后,当前父节点包括N个子节点,那么需要创建N个上下文信息进行表关联处理,且需要以N进行循环处理。也就是:新建一个子节点后,数据库的流程处理复杂度为O(N

参见图1所示,本申请实施例公开了一种数据库管理方法,包括:

S101、若OVSDB数据库中的任一父节点创建了新子节点,则记录父节点的当前子节点信息。

在本实施例中,客户端通过ovsdb协议管理OVSDB数据库,该OVSDB数据库用于记录配置信息。即:OVSDB数据库中的某一个表中记录的就是配置信息,一个表又包括多个列。若某一个表为父节点,其包括的多个列即为其子节点。若创建子节点,还需要进行表关联处理,以将新建的子节点写入到相应父节点的列中。

在一种具体实施方式中,记录父节点的当前子节点信息,包括:利用位图记录当前父节点包括的每个子节点对应的标识信息(如UUID)和相应位图标记,以获得当前子节点信息。例如:当前父节点包括的2个子节点,那么位图中记录这2个子节点的UUID(UniversallyUnique Identifier,通用唯一识别码)和相应位图标记(初始为默认值,如0)。UUID用于区分同一父节点下的不同子节点。同一父节点下的不同子节点的UUID有固定顺序(如按照A、B、C、D……英文字母表排列),那么在位图中也按照此固定顺序记录UUID)和相应位图标记。当然,还可以用表格或其他方式记录历史子节点信息和当前子节点信息。

S102、获取父节点的历史子节点信息。

其中。历史子节点信息包括:创建新子节点之前,父节点的所有子节点信息。当然,历史子节点信息也利用位图记录,同样记录父节点包括的每个子节点对应的标识信息和相应位图标记,其与当前子节点信息相比,只是记录的时刻不同。

S103、对比历史子节点信息和当前子节点信息,以确定新子节点,并创建新子节点的上下文信息进行相应处理。

在本实施例中,基于新子节点的上下文信息进行表关联处理,如进行引用计数的增加或减少等,具体可参照现有相关技术。

在一种具体实施方式中,对比历史子节点信息和当前子节点信息,以确定新子节点,包括:利用二分查找法查询历史子节点信息和当前子节点信息,以确定同时出现在历史子节点信息和当前子节点信息中的目标子节点;将当前子节点信息中除目标子节点以外的其他节点,确定为新子节点。

具体的,可以先找出历史子节点信息和当前子节点信息中共同记录的子节点(即目标子节点),这些共同记录的子节点即为在创建新子节点之前,父节点原有的子节点,因此排除这些共同记录的子节点,就能确定出当前新建了哪些新子节点。

其中,利用二分查找法对比查询历史子节点信息和当前子节点信息,以确定同时出现在历史子节点信息和当前子节点信息中的目标子节点,包括:以历史子节点信息为基准,利用二分查找法在当前子节点信息中查询并标记目标子节点。

其中,利用二分查找法对比查询历史子节点信息和当前子节点信息,以确定同时出现在历史子节点信息和当前子节点信息中的目标子节点,包括:以当前子节点信息为基准,利用二分查找法在历史子节点信息中查询并标记目标子节点。

可见,本申请实施例在OVSDB数据库中的任一父节点创建了新子节点后,记录父节点的当前子节点信息,并将当前子节点信息与当前父节点在创建新子节点之前的所有子节点信息进行对比,从而可确定出当前新建了哪些新子节点,然后只创建新子节点的上下文信息进行相应处理,故只需要针对新子节点进行表关联处理,无需考虑该父节点下的旧子节点,因此降低了流程处理的复杂度和OVSDB数据库的处理复杂度。

参见图2所示,本申请实施例公开了另一种数据库管理方法,包括:

S201、同步OVSDB数据库中的配置信息至客户端。

同步OVSDB数据库中的配置信息至客户端包括:初始同步和正常同步。初始同步即:需要将OVSDB数据库中的所有配置信息全部同步至客户端。正常同步即:OVSDB数据库中新增了配置信息,需要将新增的配置信息同步至客户端。新增的配置信息一般较少,故一般不存在同步缓慢的问题。

若OVSDB数据库中的所有配置信息的数据量较大,那么同步过程会比较漫长(同步10万条配置,需要30分钟以上),故同步效率缓慢,无法满足当前系统中对于配置恢复的性能时间要求。

S202、客户端判断当前同步的类型是否为初始同步;若是,则执行S203;若否,则执行默认操作。

默认操作即:按照正常同步流程同步配置信息至客户端,也就是逐一解析各条配置信息,以完成同步。在此过程中,当解析表内某一条配置信息时,就需要重复解析其前面的各条配置信息,因此默认操作存在循环处理的问题,但由于总体数据量较少,故该问题暂可以忽略。

S203、客户端从OVSDB数据库中读取配置信息,并在配置信息中查询具有父子关联关系的第一信息,一次性解析第一信息。

S204、针对配置信息中的不具有父子关联关系的第二信息,客户端逐一解析第二信息。

由于初始同步需要同步的数据量较大,故为避免解析表内某一条配置信息时,重复解析其前面的各条配置信息,本实施例对具有父子关联关系的第一信息进行一次性解析,从而可避免重复解析过程,因此可以提高同步效率,降低同步时间。

为了更好的介绍本申请,现结合具体网络基础框架分析如下。参见图3所示,本申请实施例公开了SDN网络版本的基础框架,包括:控制器、控制面(包括配置中心)、数据面。控制面使用控制器跟数据面进行配置处理,主要使用的协议就是ovsdb,控制器作为client端将配置写入OVSDB数据库,平台从OVSDB数据库获取变化的配置。

SDN网络中的协议按照功能可以分为管理层面协议与控制层面协议。以SDN控制器为界限,按照可编程接口的层级可以分为南向接口与北向接口。OpenFlow协议严格的来说,是一种控制层面的南向接口协议,而OVSDB管理协议,是管理层面的南向接口协议。控制器基于ovsdb协议可以管理开源的虚拟交换机(Open vSwitch,OVS)和OVSDB数据库。

在图3所示的基础框架下,存在如下问题:

1、bj_dhcp6_lease_info作为OVSDB数据库中的租约表(一个子节点),其父节点为vr->bj_dhcp6_lease_infos,写入一条租约(配置信息)到OVSDB数据库时,也同步需要写入到对应的列中,即:写入其父节点的相应列中。此时需要进行表关联处理,即:需要创建当前父节点包括所有子节点的上下文信息来进行处理,数据库的流程处理复杂度较高。

2、若进行初始同步,客户端解析具有父子关联关系的配置信息时,也存在同样的复杂度问题。

针对问题1,本申请针对同一父节点记录两个位图来解决,具体如下:

在新建子节点后,进行表关联处理之前,创建一个新位图,里面记录当前父节点包括的所有子节点的UUID和位图标记。同时,用旧位图记录新建子节点之前的、父节点包括的所有子节点的UUID和位图标记。新位图和旧位图中的位图标记默认为0。

以位图标记少的位图为基准,利用二分法查找位图标记多的位图,若在位图标记多的位图里查找到另一位图中记录的UUID,则将新位图和旧位图中的相应的位图标记均置1;否则,位图标记保持为0。

在进行表关联处理时,若位图标记为1,则跳过该子节点;若位图标记为0,则创建相应子节点的上下文信息,以进行表关联处理。

如:新建子节点前,子节点包括:[ca351d64-e7ba-4acf-a33c-8b16af823ca1,f5301fb8-db6f-4860-be28-5ad2fa3cdb87]。新建子节点后,子节点包括:[ca351d64-e7ba-4acf-a33c-8b16af823ca1,d60dbee3-2118-4949-a002-fd87fb3b8e24,f5301fb8-db6f-4860-be28-5ad2fa3cdb87]。

可见,新增了“d60dbee3-2118-4949-a002-fd87fb3b8e24”。

若用位图记录,那么初始时,新位图中的位图标记为000,旧位图中的位图标记为00,更新旧位图和新位图后,新位图中的位图标记为101,旧位图中的位图标记为11。那么按照更新后的新位图即可确定新的子节点,跳过之前两个旧节点,不重复处理旧表项,降低时间复杂度,达到优化性能的目的。经实验验证:写入4000条,处理时间由1分40秒下降到40秒。

针对问题2,本申请按照如下处理逻辑解决:

若客户端接收到配置同步消息,则首先判断是否为初始同步消息,若是,则判断是否需要同步具有父子关联关系的配置信息;满足以上条件时,一次性申请全部的父表处理列,以便对具有父子关联关系的配置信息进行一次性解析处理,从而避免频繁重复操作,将时间复杂度降低为O(N)。经实验验证:同步10万的表项时,时间由30分钟下降到8秒,且成线性关系。其中,客户端与OVSDB数据库通过ovsdb_idl_row_reparse_backrefs接口进行数据同步。

可见,本实施例通过对写入前后的子节点信息做位图,并根据UUID去查找,在旧位图和新位图中都存在时,认为不属于新建子节点,跳过此项,只处理新增的部分,将时间复杂度降低为O(N),提升了写入性能。客户端初始同步时,修改处理逻辑,对具有父子关联关系的配置信息,一次性处理父表内存,子表直接关联,将时间复杂度降低为O(N),提升了性能。

下面对本申请实施例提供的一种数据库管理装置进行介绍,下文描述的一种数据库管理装置与上文描述的一种数据库管理方法可以相互参照。

参见图4所示,本申请实施例公开了一种数据库管理装置,包括:

记录模块401,用于若OVSDB数据库中的任一父节点创建了新子节点,则记录所述父节点的当前子节点信息;

获取模块402,用于获取所述父节点的历史子节点信息;所述历史子节点信息包括:创建所述新子节点之前,所述父节点的所有子节点信息;

处理模块403,用于对比所述历史子节点信息和所述当前子节点信息,以确定所述新子节点,并创建所述新子节点的上下文信息进行相应处理。

在一种具体实施方式中,记录模块具体用于:

利用位图记录当前父节点包括的每个子节点对应的标识信息和相应位图标记,以获得当前子节点信息。

在一种具体实施方式中,处理模块包括:

查询单元,用于利用二分查找法查询历史子节点信息和当前子节点信息,以确定同时出现在历史子节点信息和当前子节点信息中的目标子节点;

确定单元,用于将当前子节点信息中除目标子节点以外的其他节点,确定为新子节点。

在一种具体实施方式中,查询单元具体用于:

以历史子节点信息为基准,利用二分查找法在当前子节点信息中查询并标记目标子节点。

在一种具体实施方式中,查询单元具体用于:

以当前子节点信息为基准,利用二分查找法在历史子节点信息中查询并标记目标子节点。

在一种具体实施方式中,还包括:

同步模块,用于若同步OVSDB数据库中的配置信息至客户端,则客户端判断当前同步的类型是否为初始同步;若是,则从OVSDB数据库中读取配置信息,并在配置信息中查询具有父子关联关系的第一信息,一次性解析第一信息。

在一种具体实施方式中,还包括:

解析模块,用于针对配置信息中的不具有父子关联关系的第二信息,客户端逐一解析第二信息。

其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

可见,本实施例提供了一种数据库管理装置,该装置提高了业务系统的访问安全性,控制效率更高也易于实现,为后续运维工作也提供了诸多便利。

下面对本申请实施例提供的一种数据库管理设备进行介绍,下文描述的一种数据库管理设备与上文描述的一种数据库管理方法及装置可以相互参照。

参见图5所示,本申请实施例公开了一种数据库管理设备,包括:

存储器501,用于保存计算机程序;

处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。

请参考图6,图6为本实施例提供的另一种数据库管理设备示意图,该数据库管理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在数据库管理设备301上执行存储介质330中的一系列指令操作。

数据库管理设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。

在图6中,应用程序342可以是执行数据库管理方法的程序,数据344可以是执行数据库管理方法所需的或产生的数据。

上文所描述的数据库管理方法中的步骤可以由数据库管理设备的结构实现。

下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据库管理方法、装置及设备可以相互参照。

一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据库管理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。

需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120113023117