一种基于HBase的海量网管数据索引设计方法

文档序号:6624312阅读:197来源:国知局
一种基于HBase的海量网管数据索引设计方法【专利摘要】本发明提供了一种基于HBase的海量网管数据索引设计方法,根据网管系统的功能特点,结合HBase列式存储的特点,主键依然采用Key-Value式的散列索引,这样不仅可以获得很高的检索效率,而且可以保持负载均衡;主键之外的其他属性列将采用基于HBase的索引技术。通过本发明提出的方法,可以解决查询非主键属性时间复杂度高的问题,有效提高了网管系统的查询效率,提高了系统的服务质量。【专利说明】-种基于HBase的海量网管数据索引设计方法【
技术领域
】[0001]本发明属于涉及一种基于HBase的海量网管数据索引设计方法,属于云计算领域。【
背景技术
】[0002]随着三网融合的发展以及网络功能的日益扩大和加强,网络的规模和应用得到不断发展,网络结构变得越来越复杂和多样化。网络管理系统所面对的数据也越来越庞大和多样化,面对海量网络数据的存储、查询和分析,传统的关系数据库是无法胜任的。传统的关系型数据库处理的结构化数据在GB级别,分析大数据时力不从心,并且目标数据的处理需求以及数据的高可用性需求一直在增长,关系数据库也无法适应这种可扩展性和高可用性。[0003]云计算的兴起,非关系数据库的出现为解决这一问题提供了新的思路和途径。HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群,具有强大的数据存储与计算能力。然而,当前版本的HBase系统并没有提供二级索引功能,当用户基于非主键査询HBase表中数据的时候,只能通过Scan全表扫描或者使用MapReduce架构全表扫描获取满足条件的数据,但这两种方式效率太低,延迟较大,无法满足实时査询的需要。为了实现海量网络管理数据的实时查询,必须为HBase建立索引机制。高效的索引机制是高性能的数据存取与查询服务的基础,索引可以快速定位所查询数据的位置,有效地提高数据的查询效率,进而提高网络管理系统整体的服务质量。[0004]针对HBase基于非主键查询效率低,延迟大的问题,根据应用场景不同,人们设计了不同的索引方案,目前主要采用的是基于二级索引的实现方案,包括ITHBase、IHBase和CCIndex,这些方案主要应用于key-value存储的云数据库管理系统中,如Bigtable、HBase等。从现有的技术方案来看,HBase的索引技术大都采用的静态索引结构或者比较单一的索引更新方案。静态索引结构是指这种索引结构在初始创建、数据装入时就已经定型,而且在整个系统运行期间,索引的结构不发生变化,只是数据在更新;静态索引结构的优点是结构定型、索引建立方法简单,存取方便;缺点是不利于索引的更新,当索引需要更新时,需要重新建立索引,索引的插入和删除效率很低。与静态索引结构相比,动态索引结构是指在整个系统运行期间,索引的结构随着系统的增删会随时调整,以保持最佳的搜索效率;动态索引结构的优点是在插入或者删除时能够自动调整索引的结构,以保持最佳的搜索效率;缺点是实现方法比较复杂。【
发明内容】[0005]技术问题:本发明的目的是提供一种基于HBase的海量网管数据索引设计方法,以解决在网管数据量较大的情况下,基于非主键查询时间开销高的问题。[0006]技术方案:本发明提出的基于HBase的海量网管数据索引的创建采用动态的方式,当管理员用户添加新的位置节点时,索引也随之创建;当在位置节点增加新的被管设备或者删除设备,以及用户删除位置节点时,对应的索引列也随之更新。索引动态创建流程如下:1)树型存储结构设计:以位置ID作为主键,列族包括:treeNum(子节点个数)、father(父节点)和SubTree(子节点)。SubTree可以有任意多个,体现了HBase的稀疏存储特点。表结构可用表达式〈locationid>->{〈columnfamily):[<treeNum>,<father>,<subTreel>,<subTree2>,···]}表不;2)索引表设计:以位置ID为Rowkey,以设备ID和位置为value,存储由位置ID到设备ID和位置的映射,表结构可用表达式〈locationid>->{〈columnfamily〉:[〈location〉,〈devIDl〉,<devID2>,<devID3>,···]}表不;3)管理员用户在某位置节点a下,新增管理位置节点b;4)查询位置层次关系表,判断新增位置节点b,在父节点a下是否已经存在同名的节点,存在,则添加失败,方法结束;5)不存在,则查询索引表主键为RecentID的值,增加一行以RecentID为Rowkey,以用户输入的位置b为value,更新RecentID=RecentID+l,作为下一次新增位置节点的rowkey;同时在设备位置关系表a所对应的行,增加新的一列值为b,更新子节点数目treeNum=treeNum+l〇【专利附图】【附图说明】[0007]图1是本发明的系统框架图。[0008]图2是本发明的索引创建流程图。[0009]图3是本发明的用户增加管理设备,索引更新算法流程图。[0010]图4是本发明的用户删除某一管理设备,索引更新算法流程图。[0011]图5是本发明的用户删除某位置节点,索引更新算法流程图。【具体实施方式】[0012]下面结合附图与【具体实施方式】对本发明作进一步详细描述。[0013]图1是本发明的在网管系统中的应用示意图。本发明考虑的新一代融合网络,网络结构复杂,规模庞大,网络中所存在的设备具有多厂商、多技术特点,网管系统所面对的数据量也越来越庞大。为了实现网管系统的位置管理功能,我们在HBase中创建了三张数据表,其中每张表的作用如下:位置关系表:表示位置之间的层次关系,位置分为一级位置节点,二级位置节点等,每级位置节点下有所要管理的设备,便于管理员用户对设备进行按地理位置分级管理。表结构可以用表达式〈locationid>->{columnfamily:[treeNum,father,SubTreel,SubTree2,···]}表不。[0014]设备信息表:表示网管系统所管理设备的信息,是网络管理系统的基本表之一。表中包含了系统所有被管设备的基本信息,表结构可用表达式〈devid>->{columnfamily:[devIP,devName,devType,devLocation,devState,devMac,systemService]}表/_J、1o[0015]索引表:表示由非主键的位置ID到主键设备ID的映射,主要用来存储位置ID到设备ID的映射关系,表结构可用表达式〈locationid>->{columnfamily:[location,devidl,devid2,devid3,···]}表不。[0016]用户通过客户端登录系统,系统根据用户的区域权限,以区域权限为Rowkey查询位置关系表,得到用户所管理区域的所有位置ID;再以位置ID为Rowkey查询索引表,得到所管理的所有区域位置信息,进而确定管理员所管理的区域。在网络管理系统中,是以设备作为管理的中心,所有设备的基本信息以及设备的运行信息,均以设备ID作为主键存储在HBase中。当管理员用户提交根据"位置"查询信息时,首先以位置ID为Rowkey查询索引表得到某一位置所对应的设备ID,再以设备ID查询对应的信息表,得到所查询位置下的所有信息。[0017]图2是本发明的索引创建流程图。索引的创建是与用户加入新数据时,同步进行的。该索引的创建目的是为了方便用户根据"位置"来查询信息。基于HBase的海量网管数据索引创建方法分为如下步骤:1.用户在某父节点a下新增一个管理节点b;2.判断位置节点a下是否已经存在b;3.不存在,则执行步骤4;存在则执行步骤7;4.查询索引表,根据主键RecentID查询到所对应的valuel;5.以查询到的valuel作为rowkey,以新增位置节点b作为value,存入索引表;同时更新RecentID=RecentID+l,作为下一次新增位置节点的rowkey;6.查询位置关系表,以父节点a的位置ID为rowkey,加入新的一列,列值为b;同时更新记录父节点下子节点数目treeNum=treeNum+l;7.结束。[0018]本文所提出的索引设计方法与传统的静态索引构建方法最大的不同,是该方法可以通过动态的更新索引表中的数据,在用户新增设备、删除设备和删除位置节点时,索引表中数据会随之更新,而不用重新构建索引。图3、图4、图5分别描述了索引在不同情况下的更新算法流程。[0019]图3是本发明的用户增加管理设备时,索引更新方法流程图。索引表存储的是位置ID到设备ID的映射关系,当管理员新增设备时,索引表必须进行相应的更新。方法步骤如下:1.用户增加一台被管设备,输入设备MAC、IP、位置ID等基本信息。[0020]2.根据用户输入的设备MAC和IP,判断此新增设备是否已经存在。[0021]3.不存在,则继续执行;存在,则执行步骤5。[0022]4.查询索引表,找到位置ID对应的行,加入一列,值为新增设备的ID。[0023]5.结束。[0024]图4是本发明的用户删除某一台管理设备时,索引更新方法流程图。当网管系统所管理的某台设备,不再使用或者移除管理系统,设备信息表就需要删除此台设备的信息,索引表中的数据也需要做相应的更新,方法步骤如下:1.用户删除一台被管设备,输入设备ID;2.根据设备ID,查询设备信息表,记录下设备的位置ID,删除此设备信息;3.根据位置ID,查询索引表,删除对应的值为设备ID的列;4.结束。[0025]图5是是本发明的用户删除某位置节点时,索引更新算法流程图。当管理员所管理的位置区域,某位置节点下不存在管理设备和下一级子节点时,此节点相当于废置节点,管理员可以删除此节点。方法步骤如下:1.用户删除某一位置节点a;2.查询索引表判断位置节点a下,是否存在设备ID的列;存在则执行步骤7,不存在则执行步骤3;3.查询位置关系表,记录下节点a的父节点father;根据treeNum列的值,判断位置节点a下,是否存在子节点;treeNum=0表示不存在子节点,则执行步骤4,否则执行步骤7;4.根据节点a的父节点father位置ID,查询到所对应的一行,删除列值为节点a的一列,同时更新treeNum=treeNum_l;5.删除位置关系表位置节点a的一行;6.删除索引表位置节点a对应的一行;7.结束。[0026]本文发明所提出的索引设计方法,索引的创建和更新维护都可以动态的进行,与传统的静态索引相比,此方法更适应于索引需要频繁更新的应用领域。该索引方案在网络管理系统的位置管理功能中得到了应用,有效的解决了海量网管数据查询时间复杂度高的问题,提升了系统的服务质量。【权利要求】1.一种基于HBase的海量网管数据索引设计方法,当管理员用户添加新的位置节点时,索引也随之创建;当在位置节点增加新的被管设备或者删除设备,以及用户删除位置节点时,对应的索引列也随之更新,其特征在于,索引的动态创建流程:1)树型存储结构设计:以位置ID作为主键,列族包括:treeNum(子节点个数)、father(父节点)和SubTree(子节点);SubTree可以有任意多个,体现了HBase的稀疏存储特点;表结构可用表达式〈locationid>->{〈columnfamily):[<treeNum>,<father>,<subTreel>,<subTree2>,···]}表不;2)索引表设计:以位置ID为Rowkey,以设备ID和位置为value,存储由位置ID到设备ID和位置的映射,表结构可用表达式〈locationid>->{〈columnfamily〉:[〈location〉,〈devIDl〉,<devID2>,<devID3>,···]}表不;3)管理员用户在某位置节点a下,新增管理位置节点b;4)查询位置层次关系表,判断新增位置节点b,在父节点a下是否已经存在同名的节点,存在,则添加失败,方法结束;5)不存在,则查询索引表主键为RecentID的值,增加一行以RecentID为Rowkey,以用户输入的位置b为value,更新RecentID=RecentID+l,作为下一次新增位置节点的rowkey;同时在设备位置关系表a所对应的行,增加新的一列值为b,更新子节点数目treeNum=treeNum+l〇【文档编号】G06F17/30GK104216962SQ201410415958【公开日】2014年12月17日申请日期:2014年8月22日优先权日:2014年8月22日【发明者】杨建东,张登银,任春韶申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1