一种改进数据库的定位方法及系统与流程

文档序号:14990680发布日期:2018-07-20 22:09阅读:131来源:国知局

本发明涉及电力调度系统,具体涉及一种改进数据库的定位方法及系统。



背景技术:

在现有电力调度技术领域中,要实现实时数据的定位与访问,首先,需要对整型关键字基于预先定义的规则进行解析;然后,按照现有配置对应的ip地址来定位到数据存储的实时库节点;最后,调用实时库的远程网络接口进行访问,现有的设计只支持8个字节的长整型关键字进行解析与定位,不利于新业务需求的扩展。

现有电力调度系统中的实时数据依托于数据库,数据库采用长整型为关键字,并用关键字来实现数据库资源定位和数据的增删改查,关键字类型单一不利于数据库功能的扩展;同时限制于单机内存的大小和数据内容加载规模的大小,总体上降低了数据访问的性能。



技术实现要素:

为了解决现有技术中所存在的上述不足,本发明提供一种改进数据库的定位方法及系统。

本发明提供的技术方案是:一种改进数据库的定位方法,包括:

基于哈希函数计算待查询数据的哈希值;

在哈希环形地址空间上根据所述待查数据的哈希值与预先设定的数据库的哈希值进行匹配,获得所述待查询数据对应的数据库的哈希值;

解析所述数据库的哈希值得到所述待查询数据对应的数据库。

优选的,所述预先设定的数据库的构建,包括:

基于哈希函数计算每个数据库对应的哈希值和每个数据对应的哈希值;

按照数据库对应的哈希值将所述数据库映射到所述哈希环形地址空间上;

根据数据库的哈希值计算每个数据库在所述哈希环形地址空间上的储存范围;

将每个数据对应的哈希值映射在所述哈希环形地址空间上;

根据数据库的储存范围将数据储存于所述数据的哈希值对应的数据库中。

优选的,所述根据数据库的哈希值计算每个数据库在所述哈希环形地址空间上的储存范围,包括:

基于数据库对应的哈希值排序;

在所述哈希环形地址空间的顺时针方向,如果所述数据库为第一个数据库,则数据库对应的范围包括:所述数据库对应的哈希值之前的范围和最后一个数据对应的哈希值之后的范围;

否则数据库对应的范围包括:所述数据库对应的哈希值和所述数据库前一个数据库对应的哈希值之间的范围。

优选的,所述按照数据库对应的哈希值将所述数据库映射到所述哈希环形地址空间上,包括:

所述将所述数据库的端口号或所述数据库所在的机器的ip地址或唯一的别名通过哈希算法映射到所述哈希环形地址空间上。

优选的,所述哈希环形地址空间为数字头尾相连的形成的一个闭合环形的数字空间。

优选的,所述数据库采用d5000实时库。

基于同一发明构思,本发明还提供了一种改进数据库的定位系统,包括:

计算模块:用于基于哈希函数计算待查询数据的哈希值;

查询数据库模块:用于在哈希环形地址空间上根据所述待查数据的哈希值与预先设定的数据库的哈希值进行匹配,获得所述待查询数据对应的数据库的哈希值;

解析模块:用于解析所述数据库的哈希值得到所述待查询数据对应的数据库。

优选的,所述查询数据库模块,包括:

计算哈希值子模块:用于基于哈希函数计算每个数据库对应的哈希值和每个数据对应的哈希值;

映射数据库子模块:用于按照数据库对应的哈希值将所述数据库映射到所述哈希环形地址空间上;

划分存储范围子模块:用于根据数据库的哈希值计算每个数据库在所述哈希环形地址空间上的储存范围;

映射数据子模块:用于将每个数据对应的哈希值映射在所述哈希环形地址空间上;

存储子模块:用于根据数据库的储存范围将数据储存于所述数据的哈希值对应的数据库中。

优选的,所述划分存储范围子模块,包括:

排序单元:用于基于数据库对应的哈希值排序;

数据库存储范围单元:用于在所述哈希环形地址空间的顺时针方向,如果所述数据库为第一个数据库,则数据库对应的范围包括:所述数据库对应的哈希值之前的范围和最后一个数据对应的哈希值之后的范围;否则数据库对应的范围包括:所述数据库对应的哈希值和所述数据库前一个数据库对应的哈希值之间的范围。

优选的,所述映射数据库子模块,包括:

映射数据库单元:用于将所述数据库的端口号或所述数据库所在的机器的ip地址或唯一的别名通过哈希算法映射到所述哈希环形地址空间上。

与最接近的现有技术相比,本发明提供的技术方案具有以下有益效果:

本发明提供的技术方案,根据计算得到待查询数据的哈希值,根据待查数据的哈希值和预先设定的数据库的存储范围查找预先存储所述待查询数据对应的数据库;然后,调用远程网络接口访问存储所述哈希值的数据库,能够实现对多类型的关键字进行解析和定位,而且提升了查找速度,数据存储规模也由单机扩展为多机,理论上只要集群中的机器够多,可以实现数据内存上无限扩容。

本发明提供的技术方案,实现多机数据内存的共享,加快了数据的访问效率,同时扩大了内存的存储规模,实现了数据的快速访问。

本发明提供的技术方案,提高了通过关键字查找数据库资源定位的速率,使数据库中的数据进行增删改查更加方便了。

附图说明

图1为本发明改进数据库的定位方法流程图;

图2为本发明的环形地址空间示意图;

图3为本实施例中d5000实时库对环形地址空间的划分示意图;

图4为本实施例中待查询数据通过哈希值寻址的示意图。

具体实施方式

为了更好地理解本发明,下面结合说明书附图和实例对本发明的内容做进一步的说明。

图1为改进数据库的定位方法的流程图,如图1所示,定位流程如下:

基于哈希函数计算待查询数据的哈希值;

在哈希环形地址空间上根据所述待查数据的哈希值与预先设定的数据库的哈希值进行匹配,获得所述待查询数据对应的数据库的哈希值;

解析所述数据库的哈希值得到所述待查询数据对应的数据库。

本实施例中,提供了利用哈希算法改进数据库的具体定位方法,包括以下步骤:

首先,划分环形哈希地址空间。

按照常用的hash算法来将对应的关键字哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。

如图2所示,本实施例中可以将这些数字头尾相连,形成一个闭合的环形。

其次,将数据库通过哈希映射到环形地址空间上。

计算每个数据库对应的哈希值;

按照哈希值将所述数据库映射到所述哈希环形地址空间上;

根据数据库的哈希值计算每个数据库在所述哈希环形地址空间上的储存范围。

本实施例中以d5000实时库为例,每个d5000实时库对应一台机器,将d5000实时库通过hash算法映射到环形地址空间上,设定实时数据库有n个,其中n>1,n为正整数。

本实施例中还可以采用一致性哈希算法的分布式集群中将新的机器加入,一般情况下,将d5000实时库的端口号或所述d5000实时库所在的机器的ip或者机器唯一的别名作为输入值得到哈希值,这些哈希值将环形哈希地址空间划分为多个存储范围;

基于数据库对应的哈希值排序,在所述哈希环形地址空间的顺时针方向,如果所述数据库为第一个数据库,则数据库对应的范围包括:所述数据库对应的哈希值之前的范围和最后一个数据对应的哈希值之后的范围;

否则数据库对应的范围包括:所述数据库对应的哈希值和所述数据库前一个数据库对应的哈希值之间的范围。

在本实施例中,基于环形地址空间的顺时针方向,第1个d5000实时库对应的存储范围为:环形地址空间上顺时针最后一个d5000实时库对应的哈希值和所述第1个d5000实时库对应的哈希值之间的哈希值;

第i个d5000实时库对应的存储范围为:所述第i个d5000实时库对应的哈希值和第i-1个d5000实时库对应的哈希值之间的哈希值,其中i∈n,且i>1。

如图3所述,本实施例中提供了node1,node2,node3三台机器,通过hash算法得到对应的哈希值,映射到环中,

hash(node1)=n1;

hash(node2)=n2;

hash(node3)=n3;

然后,将待查询的数据通过哈希映射预先存储到对应的数据库中。

本实施例中提供了四个对象object1、object2、object3、object4需要存储,将四个对象通过某一特定的hash函数计算出对应的哈希值,

hash(object1)=k1;

hash(object2)=k2;

hash(object3)=k3;

hash(object4)=k4;

以顺时针的方向计算,将所有对象存储到离自己最近的机器中。此时object1存储在n1上,object2、object3存储在n2上,object4存储在n3上。

如图4所示,进行寻址时,将待查数据的哈希值与d5000实时库的存储范围依次进行比较,直到找到哈希值在d5000实时库的存储范围内,则该d5000实时库为在待查询数据对应的d5000实时库。

最后解析d5000实时库的哈希值得到待查询数据对应的d5000实时库,调用实时库的远程网络接口去该d5000实时库对应的机器上进行数据操作。

本实施中提供了用代码实现寻址过程:

基于同一发明构思,本实施例还提供了一种利用哈希算法改进数据库的定位系统,包括:

计算模块:用于基于哈希函数计算待查询数据的哈希值;

查询数据库模块:用于在哈希环形地址空间上根据所述待查数据的哈希值与预先设定的数据库的哈希值进行匹配,获得所述待查询数据对应的数据库的哈希值;

解析模块:用于解析所述数据库的哈希值得到所述待查询数据对应的数据库。

实施例中,所述查询数据库模块,包括:

计算哈希值子模块:用于基于哈希函数计算每个数据库对应的哈希值和每个数据对应的哈希值;

映射数据库子模块:用于按照数据库对应的哈希值将所述数据库映射到所述哈希环形地址空间上;

划分存储范围子模块:用于根据数据库的哈希值计算每个数据库在所述哈希环形地址空间上的储存范围;

映射数据子模块:用于将每个数据对应的哈希值映射在所述哈希环形地址空间上;

存储子模块:用于根据数据库的储存范围将数据储存于所述数据的哈希值对应的数据库中。

实施例中,所述划分存储范围子模块,包括:

排序单元:用于基于数据库对应的哈希值排序;

数据库存储范围单元:用于在所述哈希环形地址空间的顺时针方向,如果所述数据库为第一个数据库,则数据库对应的范围包括:所述数据库对应的哈希值之前的范围和最后一个数据对应的哈希值之后的范围;否则数据库对应的范围包括:所述数据库对应的哈希值和所述数据库前一个数据库对应的哈希值之间的范围。

实施例中,所述映射数据库子模块,包括:

映射数据库单元:用于将所述数据库的端口号或所述数据库所在的机器的ip地址或唯一的别名通过哈希算法映射到所述哈希环形地址空间上。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

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