基于分布式实时数据库的层次索引方法

文档序号:10569916阅读:552来源:国知局
基于分布式实时数据库的层次索引方法
【专利摘要】本发明提供了基于分布式实时数据库的层次索引方法,属于数据库领域。包括获取客户端的数据操作请求,提取操作请求中的标签点,在哈希索引环形列表中确定目标数据存储服务器,进而使得目标数据存储服务器在B+树中进行层次索引,在确定操作位置后,进行数据操作。通过使用哈希索引环形列表可以保证实时数据库数据存储和检索较高效率的同时,还由于对每个标签点建立单独的B+树数据索引,使得标签点索引具有较高独立性,从而使得分布式实时数据库每个数据存储服务器之间具有较高的容错能力。
【专利说明】
基于分布式实时数据库的层次索弓I方法
技术领域
[0001]本发明属于数据库领域,特别涉及一种基于分布式实时数据库的层次索引方法。
【背景技术】
[0002]随着计算机技术的发展,出现了越来越多依赖数据高速存取的应用。由于此类应用主要用于实时监控设备的信息采集,由于采集到的信息具有非常高的采集频率和极强的时效性,因此需要采用实时数据库对采集到的信息进行存储及管理。
[0003]现有的实时数据库主要采用集中式管理,虽然能够提供较好的管理效率,但是在数据的存取速度以及数据容错性上,还是存在较为明显的缺陷。

【发明内容】

[0004]为了解决现有技术的问题,本发明提供了基于分布式实时数据库的层次索引方法,所述层次索引方法,包括:
[0005]设置在所述分布式实时数据库中的中心控制服务器接收客户端发送的数据操作操作请求,提取所述数据操作操作请求中指定的标签点,从预先构建的哈希索引环形列表中选取与所述标签点对应的目标数据存储服务器的相关元信息,将所述相关元信息发送至所述客户端;
[0006]所述客户端接收所述相关元信息,从所述相关元信息中提取所述目标数据存储服务器的IP地址和通信端口,将包含所述标签点的待操作数据通过所述通信端口发送至所述IP地址指向的所述目标数据存储服务器;
[0007]所述目标数据存储服务器提取所述标签点,根据所述标签点的名称确定所述标签点的哈希键值,根据所述哈希键值确定所述标签点结构信息在预先构建的标签点哈希表中的目标位置,根据所述目标位置在预先构建的标签点结构信息表中获取所述标签点所属的B+树根节点的位置;
[0008]根据所述索引树根节点的位置,结合预先存储的数据操作的历史时间,确定遍历下一层索引节点结构的指针,根据所述指针层次性的遍历所述B+树的节点,确定在所述B+树中与所述待操作数据对应的索引节点结构,将所述待操作数据挂载到所述索引节点结构处,修改所述指针并且向所述客户端反馈数据操作成功的消息;
[0009]其中,所述哈希索引环形列表的构建流程为:
[0010]步骤一,中心控制服务器获取标签点名称的校验值,按照预设的哈希算法获取到与所述校验值对应的哈希键值;
[0011 ]步骤二,所述中心控制服务器获取到全部标签点的哈希键值,将所述标签点归属的数据存储服务器的相关元信息以及所述标签点的哈希键值存储在列表中;
[0012]步骤三,将所述列表的表头和表尾相连,得到哈希索引环形图。
[0013]可选的,如果所述数据操作操作请求为所述分布式实时数据库的第一次数据操作操作时,对所述分布式实时数据库进行初始化处理。
[0014]可选的,所述相关元信息包括所述目标数据存储服务器的IP地址和通信端口。
[0015]可选的,在所述哈希索引环形列表中,按照顺时针方向选取与所述标签点对应的目标数据存储服务器的相关元信息。
[0016]可选的,在所述目标数据存储服务器中,存储有包含指针、数据操作的历史时间在内的B+树索引节点结构。
[0017]本发明提供的技术方案带来的有益效果是:
[0018]通过使用哈希索引环形列表可以保证实时数据库数据存储和检索较高效率的同时,还由于对每个标签点建立单独的B+树数据索引,使得标签点索引具有较高独立性,从而使得分布式实时数据库每个数据存储服务器之间具有较高的容错能力。
【附图说明】
[0019]为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是本发明提供的基于分布式实时数据库的层次索引方法的流程示意图;
[0021 ]图2是本发明提供的分布式实时数据库的结构示意图;
[0022]图3是本发明提供的哈希索引环形列表的结构示意图。
【具体实施方式】
[0023]为使本发明的结构和优点更加清楚,下面将结合附图对本发明的结构作进一步地描述。
[0024]实施例一
[0025]本发明提供了基于分布式实时数据库的层次索引方法,如图1所示,所述层次索引方法,包括:
[0026]步骤一,设置在分布式实时数据库中的中心控制服务器接收客户端发送的数据操作操作请求,提取数据操作操作请求中指定的标签点,从预先构建的哈希索引环形列表中选取与标签点对应的目标数据存储服务器的相关元信息,将相关元信息发送至客户端。
[0027]步骤二,客户端接收相关元信息,从相关元信息中提取目标数据存储服务器的IP地址和通信端口,将包含标签点的待操作数据通过通信端口发送至IP地址指向的目标数据存储服务器。
[0028]步骤三,目标数据存储服务器提取标签点,根据标签点的名称确定标签点的哈希键值,根据哈希键值确定标签点结构信息在预先构建的标签点哈希表中的目标位置,根据目标位置在预先构建的标签点结构信息表中获取标签点所属的B+树根节点的位置。
[0029]步骤四,根据索引树根节点的位置,结合预先存储的数据操作的历史时间,确定遍历下一层索引节点结构的指针,根据所述指针层次性的遍历所述B+树的节点,确定在B+树中与待操作数据对应的索引节点结构,将待操作数据挂载到索引节点结构处,修改指针并且向客户端反馈数据操作成功的消息。
[0030]在实施中,由于对数据库的操作分很多类型,在本实施例中以数据插入操作为例进行说明。
[0031]本实施例中的层次索引方法基于的分布式实时数据库主要包含两类节点,其一是中心控制服务器NameServer,整个系统只有一个(附图1中中心控制服务器NameServer使用了双机热备份的方式,因此图1中的中心控制服务器包含主服务器NameServer Active和备命名服务器NameServer Standby),主要存储系统相关元数据,如每个数据存储服务器节点信息,数据分片信息,访问控制信息等;其二是数据存储服务器DataServer,整个系统可以有多个,可以分步在不同的计算机,它主要用于分布式实时数据库数据的存储。客户端Client对数据的存储和检索首先向中心控制服务器NameServer发送请求,查询实际数据所在的数据存储服务器,然后再跟具体的数据存储服务器DataServer通信,实现数据的真正存储和检索。因而实际数据库数据的传输在客户端和数据存储服务器之间进行。
[0032]为便于理解分布式数据库的结构,构建如图2所示的分布式实时数据库。假设整个分布式实时数据库系统的框架结构图如附图1,包括7个DataServer和两个NameServer,两个NameServer采用双机热备的方式部署,系统运行时,只有NameServer Active对外提供服务;另外,假设取32位的环形空间,也即O?2~32-1次方的数值空间。同时,假设当前系统中存在17个TAG点,每个TAG点存放位置如附图1所示;TAG点根据PointName做Hash映射,DataServer根据所在机器的IP和对外提供服务的端口号做Hash映射,经过映射后他们在Hash环上面的部署情况如附图2所示。下面结合附图详细说明本发明的存储数据和检索数据的实施例。
[0033]步骤1、当Client需要向某个标签TAG点如Pll插入数据时,Client首先发送请求给NameServer,询问标签点名称PointName 为Pl I 的TAG 点所在的DataServer,Name Server 根据请求TAG点名称Pl I计算该标签点名称的MD5值,通过相同的Hash算法将该MD5值映射到环形Hash空间,并且按顺时针方向(Hash key值增大方向)寻找DataServer节点,发现Pll的点在DataServer6 上,于是 NameServer 将 DataServer6 相关元信息(如 DataServer6 的 IP 地址和端口号等)发送给请求的Client。
[0034]步骤2、C1 ient收到NameServer的回复后,解析数据包,取出Pl I点所在数据存储服务器DataServer6的IP地址和端口,然后将真正需要插入的数据发送到DataServer6。
[0035]步骤3、DataServer6收到Cl ient插入数据的请求后,解析数据包,取出TAG点PointName为P11,通过计算Pl I的哈希键值Hash value确定P11结构信息在标签点哈希表PointHashTable中的位置为j,对应结构信息为标签点结构信息PointConf igltem[j]如附图3所示。
[0036]步骤4、DataServer6确定Pll结构信息在PointHashTable中的位置后,从PointConf igltem[j]取出Pl I索引B+树的根节点所在位置RawHist。
[OO37 ] 步骤5、DataServer6从P11节点索引B+树根节点Roo t开始,对比数据操作的历史时间中的起始时刻StartTime和终止时刻EndTime确定遍历下一层IndexNode的指针Pointer,遍历B+树索引节点结构IndexNode,最后确定请求存储数据的实际插入或存放的数据节点结构DataNode,将数据经过压缩后,挂载到相应的IndexNode,并修改相应的指针。同时,DataServer6发送回复信息给Cl ient,返回插入数据成功。至此,整个数据插入过程结束。
[0038]当根据客户端的数据操作请求对分布式实时数据库进行删除、修改等操作时,具体的执行方式与上述步骤相同,仅仅是在操作指令内容以及对指针确定的索引节点结构进行挂载时的具体操作略有差异,本实施例不再对其他操作进行赘述。
[0039]需要注意的是,在上述步骤中,隐含了对分布式实时数据库的三层索引方法,为了便于理解,此处进行详细说明:
[0040]第一层:确定标签点存放的数据存储服务器。系统添加标签点的过程中,客户端发送加点请求给中心控制服务器,中心控制服务器根据请求标签点特征标识码(如点名,点ID)计算该标签点名称的MD5值,通过相同的哈希算法将该MD5值映射到环形哈希空间,并且按顺时针方向(哈希键值增大方向)寻找数据存储服务器节点,第一个成功节点即为该标签点存放位置;系统插入数据或查询数据时,首先向中心控制服务器发送请求,查找相应标签点在哪个数据存储服务器。
[0041]第二层:确定标签点数据B+树索引存放位置。在每个数据存储服务器内部,维护着一张存储每个标签点结构信息的标签点哈希表,记录着本数据存储服务器维护的所有标签点的点结构信息,标签点结构信息包括点名称,标签点ID,标签点B+树根节点所在位置等。客户端确定请求标签点所在数据存储服务器后,发送请求到标签点所在的数据存储服务器,如果是增加标签点,通过对标签点特征标识码(如点名,点ID等)做哈希将需要添加的标签点映射到标签点哈希表中的相应位置;如果是存储或检索数据,数据存储服务器通过对标签点名做哈希,取得标签点信息,从而获取B+树索引根节点所在位置。
[0042]第三层:确定存储或检索的标签点数据的实际存放位置。待确定标签点B+树索引所在位置后,如果请求是存储或者检索数据,系统从B+树根节点开始,对比每个索引节点索引的时间范围,确定遍历下一层索引节点的指针,如此层次性的搜索B+树索引节点,最后确定请求存储或检索数据的实际插入或存放的数据节点位置。
[0043]另外,在步骤一中提出了哈希索引环形列表的概念,又称之为环形哈希空间,是为了实现分布式实时数据库数据的高效存储和检索所构造的概念,通过将待映射的实体通过一定的哈希算法映射出N位的哈希键值,组成O?2 ~ N -1次方的数值空间,将该数值空间首
(O)尾(2~N-1)相连,构成环形的哈希空间。
[0044]为了便于理解,如图3所示的哈希索引环形列表的构建流程为:
[0045]步骤一,中心控制服务器获取标签点名称的校验值,按照预设的哈希算法获取到与校验值对应的哈希键值。
[0046]步骤二,中心控制服务器获取到全部标签点的哈希键值,将标签点归属的数据存储服务器的相关元信息以及标签点的哈希键值存储在列表中。
[0047]步骤三,将列表的表头和表尾相连,得到哈希索引环形图。
[0048]基于构建的哈希索引环形图,按着预设的方向旋转可以确定目标的索引关系,SP本实施例中标签点名称与标签点归属的数据存储服务器的对应关系。在本实施例中由于篇幅所限,仅列举出七个数据存储服务器的示例,其实在实际使用过程中,每个DataServer上存储的TAG点成千上万甚至几十万,DataServer的数量也会根据用户的具体存储需求不同体现出很大的数量。
[0049]可选的,如果数据操作操作请求为分布式实时数据库的第一次数据操作操作时,对分布式实时数据库进行初始化处理。
[0050]由于在数据插入或删除过程中,B+树可能会出现节点的分裂或合并,还有存储或检索过程中的错误处理机制,因此在第一次插入数据时,需要初始化B+树索引。
[0051]可选的,在哈希索引环形列表中,按照顺时针方向选取与标签点对应的目标数据存储服务器的相关元信息。
[0052]在实施中,为了提高索引效率,在哈希索引环形列表中按照顺时针方向即哈希键值增大的方向选取与标签点对应的目标数据存储服务器的相关元信息。
[0053]本发明提供了基于分布式实时数据库的层次索引方法,包括获取客户端的数据操作请求,提取操作请求中的标签点,在哈希索引环形列表中确定目标数据存储服务器,进而使得目标数据存储服务器在B+树中进行层次索引,在确定操作位置后,进行数据操作。通过使用哈希索引环形列表可以保证实时数据库数据存储和检索较高效率的同时,还由于对每个标签点建立单独的B+树数据索引,使得标签点索引具有较高独立性,从而使得分布式实时数据库每个数据存储服务器之间具有较高的容错能力。
[0054]需要说明的是:上述实施例提供的基于分布式实时数据库的层次索引方法进行数据库操作的实施例,仅作为该层次索引方法在实际应用中的说明,还可以根据实际需要而将上述层次索引方法在其他应用场景中使用,其具体实现过程类似于上述实施例,这里不再赘述。
[0055]以上所述仅为本发明的实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.基于分布式实时数据库的层次索引方法,其特征在于,所述层次索引方法,包括: 设置在所述分布式实时数据库中的中心控制服务器接收客户端发送的数据操作操作请求,提取所述数据操作操作请求中指定的标签点,从预先构建的哈希索引环形列表中选取与所述标签点对应的目标数据存储服务器的相关元信息,将所述相关元信息发送至所述客户端; 所述客户端接收所述相关元信息,从所述相关元信息中提取所述目标数据存储服务器的IP地址和通信端口,将包含所述标签点的待操作数据通过所述通信端口发送至所述IP地址指向的所述目标数据存储服务器; 所述目标数据存储服务器提取所述标签点,根据所述标签点的名称确定所述标签点的哈希键值,根据所述哈希键值确定所述标签点结构信息在预先构建的标签点哈希表中的目标位置,根据所述目标位置在预先构建的标签点结构信息表中获取所述标签点所属的B+树根节点的位置; 根据所述索引树根节点的位置,结合预先存储的数据操作的历史时间,确定遍历下一层索引节点结构的指针,根据所述指针层次性的遍历所述B+树的节点,确定在所述B+树中与所述待操作数据对应的索引节点结构,将所述待操作数据挂载到所述索引节点结构处,修改所述指针并且向所述客户端反馈数据操作成功的消息; 其中,所述哈希索引环形列表的构建流程为: 步骤一,中心控制服务器获取标签点名称的校验值,按照预设的哈希算法获取到与所述校验值对应的哈希键值; 步骤二,所述中心控制服务器获取到全部标签点的哈希键值,将所述标签点归属的数据存储服务器的相关元信息以及所述标签点的哈希键值存储在列表中; 步骤三,将所述列表的表头和表尾相连,得到哈希索引环形图。2.根据权利要求1所述的基于分布式实时数据库的层次索引方法,其特征在于: 如果所述数据操作操作请求为所述分布式实时数据库的第一次数据操作操作时,对所述分布式实时数据库进行初始化处理。3.根据权利要求1所述的基于分布式实时数据库的层次索引方法,其特征在于,所述相关元信息包括所述目标数据存储服务器的IP地址和通信端口。4.根据权利要求1所述的基于分布式实时数据库的层次索引方法,其特征在于,在所述哈希索引环形列表中,按照顺时针方向选取与所述标签点对应的目标数据存储服务器的相关元信息。5.根据权利要求1所述的基于分布式实时数据库的层次索引方法,其特征在于,在所述目标数据存储服务器中,存储有包含指针、数据操作的历史时间在内的B+树索引节点结构。
【文档编号】G06F17/30GK105930345SQ201610208956
【公开日】2016年9月7日
【申请日】2016年4月5日
【发明人】费冬虎, 李也白, 丁学峰, 陆生兵
【申请人】国网浙江省电力公司湖州供电公司, 国家电网公司, 国网浙江长兴县供电公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1