一种分布式数据库的控制方法及系统与流程

文档序号:11199317阅读:531来源:国知局
一种分布式数据库的控制方法及系统与流程

本发明涉及数据库技术领域,更具体地说,涉及一种分布式数据库的控制方法及系统。



背景技术:

键值分布式数据库查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询。其中,level数据库是一个谷歌实现的非常高效的键值分布式数据库,而rocks数据库则是在level数据库进行改进得到的产物。rocks数据库的能够充分利用闪存的较高的每秒进行读写(i/o)操作的次数性能,同时也能利用多核服务器的计算性能,脸书目前已经在rocks数据库的github(一个面向开源及私有软件项目的托管平台)页面上发布了rocks数据库在fusion-io(一个做数据库的公司)服务器上的跑分基准测试结果,脸书声称其速度比谷歌的level数据库快很多。rocks数据库本身是基于文件系统的,不能直接操作物理块设备,但rocks数据库将系统相关的处理抽象成env,默认的env是posixenv,直接对接本地文件系统,用户可用继承实现envwrapper接口,为rocks数据库提供底层系统的封装。

然而,rocks数据库一般运行在宿主机的文件系统之上(比如xfs),存在文件系统自身的日志信息和rocks数据库的预写日志系统的冗余写的问题。在现有技术中,并没有用于解决这个问题的技术方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式数据库的控制方法,挂载一个文件系统,使数据库在文件系统上运行,通过文件系统可将数据保存在物理块设备上,直接操作物理块设备,解决了冗余写的问题。

为实现上述目的,本发明提供如下技术方案:

一种分布式数据库的控制方法,所述方法包括以下步骤:

初始化物理块设备;

挂载文件系统,所述文件系统用于运行所述数据库;

基于所述文件系统的对象创建第一类的对象,所述第一类为第二类的继承类,所述第二类为所述数据库的对外开发的类;

将所述第一类的对象发送至所述数据库;

运行所述数据库。

优选地,所述初始化物理块设备包括:

格式化所述物理块设备;

生成超级块的元数据信息及预写日志文件的元数据信息;

生成操作符;

将所述操作符存储至所述预写日志文件中;

将所述超级块及所述预写日志文件存储至所述物理块设备。

优选地,所述挂载文件系统包括:

读取所述物理块设备中的所述超级块,基于所述超级块生成存放所述文件系统的元数据信息;

基于所述存放所述文件系统的元数据信息读取所述预写日志文件;

基于所述预写日志文件及所述操作符生成目录的元数据及文件的元数据;

加载所述目录的元数据及所述文件的元数据;

建立所述预写日志文件的对象。

优选地,基于所述存放所述文件系统的元数据信息读取所述预写日志文件包括:

基于所述存放所述文件系统的元数据信息中的偏移量、长度及所在逻辑快设备读取所述预写日志文件。

一种分布式数据库的控制装置,所述控制装置包括系统处理器、物理块管理装置及运行处理器,其中:

所述物理块管理装置及所述系统处理器初始化物理块设备;

所述物理块管理装置及所述系统处理器挂载文件系统,所述文件系统用于运行所述数据库;

所述系统处理器基于所述文件系统的对象创建第一类的对象,所述第一类为第二类的继承类,所述第二类为所述数据库的对外开发的类;

所述运行处理器将所述第一类的对象发送至所述数据库;

所述系统处理器及所述运行处理器运行所述数据库。

优选地,所述物理块管理装置包括空间管理处理器及读写处理器;所述初始化物理块设备包括:

所述空间管理处理器格式化所述物理块设备;

所述系统处理器生成超级块的元数据信息及预写日志文件的元数据信息;

所述系统处理器生成操作符;

所述系统处理器将所述操作符存储至所述预写日志文件中;

所述读写处理器将所述超级块及所述预写日志文件存储至所述物理块设备。

优选地,所述物理块管理装置包括空间管理处理器及读写处理器;所述挂载文件系统包括:

所述读写处理器读取所述物理块设备中的所述超级块,所述系统处理器基于所述超级块生成存放所述文件系统的元数据信息;

所述读写处理器基于所述存放所述文件系统的元数据信息读取所述预写日志文件;

所述系统处理器基于所述预写日志文件及所述操作符生成目录的元数据及文件的元数据;

所述系统处理器加载所述目录的元数据及所述文件的元数据;

所述系统处理器建立所述预写日志文件的对象。

优选地,基于所述存放所述文件系统的元数据信息读取所述预写日志文件包括:

所述读写处理器基于所述存放所述文件系统的元数据信息中的偏移量、长度及所在逻辑快设备读取所述预写日志文件。

从上述技术方案可以看出,本发明公开了一种分布式数据库的控制方法,所述方法包括初始化物理块设备,挂载文件系统,文件系统用于运行数据库,基于文件系统的对象创建第一类的对象,第一类为第二类的继承类,第二类为数据库的对外开发的类,将第一类的对象发送至数据库,运行数据库。挂载一个文件系统,使数据库在文件系统上运行,通过文件系统可将数据保存在物理块设备上,直接操作物理块设备,解决了冗余写的问题。

附图说明

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

图1为本发明公开的一种分布式数据库的控制方法的实施例1的流程图;

图2为本发明公开的另一种分布式数据库的控制方法的实施例2的流程图;

图3为本发明公开的另一种分布式数据库的控制方法的实施例2的流程图;

图4为本发明公开的一种分布式数据库的控制系统的实施例1的结构示意图;

图5为本发明公开的一种分布式数据库的控制系统的实施例2的结构示意图;

图6为本发明公开的一种分布式数据库的控制系统的实施例3的结构示意图。

具体实施方式

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

如图1所示,本发明公开的一种分布式数据库的控制方法的实施例1的流程图,本方法包括以下步骤:

s101、初始化物理块设备;

为便于rocks数据库的运行,系统开机后,将物理块设备初始化,其中物理块设备可包括非易失性随机访问存储器、固态硬盘及机械硬盘。

s102、挂载文件系统,文件系统用于运行数据库;

为了支撑inspurfs,定义基础数据结构超级块信息、inode信息、文件系统的扩展信息(记录快的信息),其中超级块存放通用唯一识别码、版本号、块大小、预写日志文件的元数据等信息;inode信息存放文件的inode号、大小、创建时间、所在物理块设备等信息;文件系统的扩展信息(记录快的信息)存放文件内容在物理块设备的偏移及长度。

s103、基于文件系统的对象创建第一类的对象,第一类为第二类的继承类,第二类为数据库的对外开发的类;

rocks数据库::envwrapper为rocks数据库的对外开发的类,rocks数据库::envwrapper即为第二类,第一类为inspurrocksenv,inspurrocksenv是继承rocks数据库::envwrapper的实现类。基于文件系统的对象创建第一类的对象,即创建inspurrocksenv的对象。

s104、将第一类的对象发送至数据库;

将第一类的对象发送至数据库,即将inspurrocksenv的对象发送至rocks数据库。

s105、运行数据库;

将inspurrocksenv的对象发送至rocks数据库,即可运行所述rocks数据库。

本发明公开了一种分布式数据库的控制方法,所述方法包括初始化物理块设备,挂载文件系统,文件系统用于运行数据库,基于文件系统的对象创建第一类的对象,第一类为第二类的继承类,第二类为数据库的对外开发的类,将第一类的对象发送至数据库,运行数据库。挂载一个文件系统,使数据库在文件系统上运行,通过文件系统可将数据保存在物理块设备上,直接操作物理块设备,解决了冗余写的问题。

如图2所示,为本发明在所述实施例的基础上公开的另一种分布式数据库的控制方法的实施例2的流程图,本方法包括以下步骤:

s201、格式化物理块设备;

读取物理设备块设备的大小,初始化物理设备块设备的空间分配情况。

s202、生成超级块的元数据信息及预写日志文件的元数据信息;

s203、生成操作符;

生成操作符(op),其中op为操作码。

s204、将操作符存储至预写日志文件中;

将操作符(op)存储至预写日志文件,用于后续的文件系统的挂载。

s205、将超级块及预写日志文件存储至物理块设备;

将超级块及预写日志文件存储至物理块设备,存储后,可清空相关的内存数据。

如图3所示,为本发明在所述实施例的基础上公开的另一种分布式数据库的控制方法的实施例3的流程图,本方法包括以下步骤:

s301、读取物理块设备中的超级块,基于超级块生成存放文件系统的元数据信息;

读取物理块设备中的超级块,在物理块设备存放预写日志文件偏移4096处,解析出存放文件系统的元数据信息。

s302、基于存放文件系统的元数据信息读取预写日志文件;

基于存放文件系统的元数据信息,读取预写日志文件。其中,可基于存放文件系统的元数据信息中的偏移量、长度及所在逻辑快设备读取预写日志文件。

s303、基于预写日志文件及操作符生成目录的元数据及文件的元数据;

读取预写日志文件后,基于操作符(op)恢复出目录的元数据(dir_map)及文件的元数据(file_map)。

s304、加载目录的元数据及文件的元数据;

将目录的元数据(dir_map)及文件的元数据(file_map)加载在内存中。

s305、建立预写日志文件的对象;

建立预写日志文件的对象,用于后序的预写日志文件信息的处理。

如图4所示,为本发明公开的一种分布式数据库的控制装置的实施例1的结构示意图,所述控制装置包括系统处理器102、物理块管理装置101及运行处理器103,其中:

物理块管理装置101及系统处理器102初始化物理块设备;

为便于rocks数据库的运行,系统开机后,将物理块设备初始化,其中物理块设备可包括非易失性随机访问存储器、固态硬盘及机械硬盘。

物理块管理装置101及系统处理器102挂载文件系统,文件系统用于运行数据库;

为了支撑inspurfs,定义基础数据结构超级块信息、inode信息、文件系统的扩展信息(记录快的信息),其中超级块存放通用唯一识别码、版本号、块大小、预写日志文件的元数据等信息;inode信息存放文件的inode号、大小、创建时间、所在物理块设备等信息;文件系统的扩展信息(记录快的信息)存放文件内容在物理块设备的偏移及长度。

系统处理器102基于文件系统的对象创建第一类的对象,第一类为第二类的继承类,第二类为数据库的对外开发的类;

rocks数据库::envwrapper为rocks数据库的对外开发的类,rocks数据库::envwrapper即为第二类,第一类为inspurrocksenv,inspurrocksenv是继承rocks数据库::envwrapper的实现类。基于文件系统的对象创建第一类的对象,即创建inspurrocksenv的对象。

运行处理器103将第一类的对象发送至数据库;

将第一类的对象发送至数据库,即将inspurrocksenv的对象发送至rocks数据库。

系统处理器102及运行处理器103运行数据库;

将inspurrocksenv的对象发送至rocks数据库,即可运行rocks数据库。

本发明公开了一种分布式数据库的控制方法,方法包括初始化物理块设备,挂载文件系统,文件系统用于运行数据库,基于文件系统的对象创建第一类的对象,第一类为第二类的继承类,第二类为数据库的对外开发的类,将第一类的对象发送至数据库,运行数据库。挂载一个文件系统,使数据库在文件系统上运行,通过文件系统可将数据保存在物理块设备上,直接操作物理块设备,解决了冗余写的问题。

如图5所示,为本发明在上述实施例的基础上公开的另一种分布式数据库的控制装置的实施例2的结构示意图,所述控制装置包括系统处理器201、空间管理处理器202及读写处理器203,物理块管理装置包括空间管理处理器202及读写处理器203;所述控制装置包括:

空间管理处理器202格式化物理块设备;

读取物理设备块设备的大小,初始化物理设备块设备的空间分配情况。

系统处理器201生成超级块的元数据信息及预写日志文件的元数据信息;

系统处理器201生成操作符;

生成操作符(op),其中op为操作码。

系统处理器201将操作符存储至预写日志文件中;

将操作符(op)存储至预写日志文件,用于后续的文件系统的挂载。

读写处理器203将超级块及预写日志文件存储至物理块设备;

将超级块及预写日志文件存储至物理块设备,存储后,可清空相关的内存数据。

如图6所示,为本发明在上述实施例的基础上公开的另一种分布式数据库的控制装置的实施例3的结构示意图,所述控制装置包括系统处理器301、空间管理处理器302及读写处理器303,物理块管理装置包括空间管理处理器302及读写处理器303;所述控制装置包括:

读写处理器303读取物理块设备中的超级块,系统处理器301基于超级块生成存放文件系统的元数据信息;

读取物理块设备中的超级块,在物理块设备存放预写日志文件偏移4096处,解析出存放文件系统的元数据信息。

读写处理器303基于存放文件系统的元数据信息读取预写日志文件;

基于存放文件系统的元数据信息,读取预写日志文件。其中,可基于存放文件系统的元数据信息中的偏移量、长度及所在逻辑快设备读取预写日志文件。

系统处理器301基于预写日志文件及操作符生成目录的元数据及文件的元数据;

读取预写日志文件后,基于操作符(op)恢复出目录的元数据(dir_map)及文件的元数据(file_map)。

系统处理器301加载目录的元数据及文件的元数据;

将目录的元数据(dir_map)及文件的元数据(file_map)加载在内存中。

系统处理器301建立预写日志文件的对象;

建立预写日志文件的对象,用于后序的预写日志文件信息的处理。

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1