数据库和数据库处理方法技术

技术编号:2917430 阅读:252 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出了一种使用搜索关键字搜索数据库的方法、将数据存储到数据库中的方法、在数据通信网络中路由数据包的方法、以及适于执行本发明专利技术第一、第二以及第三方面的方法的设备和计算机软件。使用搜索关键字搜索数据库的方法包括:将关于第一节点的第一关联数据以及关于第二节点的第二关联数据存储在该数据库中,该第一关联数据包括第一节点关键字,以及该第二关联数据包括第二节点关键字,其中,第一节点关键字是第二节点关键字的前缀;以及使用搜索关键字搜索该树结构,其中,使用该搜索关键字的搜索涉及正被遍历的第二节点,以及如果第一节点关键字具有匹配该搜索关键字的前缀,则在遍历第二节点之后识别该第一节点。

【技术实现步骤摘要】

本专利技术涉及数据库和用于在数据库树结构中存储和搜索数据的方法。特别地,但不排他地,本专利技术涉及对存储在数据库树结构中的数据的处理,供数据包路由应用程序之用。
技术介绍
网际协议(IP)网络包括许多互连路由器实体,其负责作出关于数据包可以从源流到目的地的那些路径的决定。路由协议被用于获取关于网络的信息,并确定特定网络目的地或不同区域或该网络的子网络之间的路由。在每个路由器处,可以将这些路由存储在被称为路由表的数据库中。创建和维护路由表内容的过程通常被称作为IP路由。路由器还可以存储执行转发数据库中的数据包所必须的信息,其通常被称作为转发表。使用存储在转发表中的信息接收数据包并将该数据包发送到其目的地上的处理通常被称作为IP转发。通常不直接将路由表用在包转发处理中。而是,包路由处理根据路由信息和一个或多个路由协议(诸如路由选择信息协议(RIP)或边界网关协议(BGP))将关于所选路由的数据输出到转发表。然后,可以(例如)使用有效的硬件实现方式在包转发过程期间访问转发表的内容。-->被传输到IP网络中的数据包将包括IP目的地址。IPv4地址是32位长,其给出了超过40亿的IP地址的范围,而IPv6地址更长。在每个路由器处为这个数目的IP地址交换和更新转发信息通常是不切实际的。代替地,路由器将通常地维护包含许多IP地址前缀条目和对应于这些前缀条目的每一个的转发信息的转发表。当关于网络目的地址的信息到达路由器时,可以由该路由器检查网络目的地的IP地址,然后,该路由器可以搜索其路由表,查找对网络目的地的IP目的地址的最长的匹配。该最长的匹配按照匹配目的IP地址的最长前缀的形式出现,即,具有匹配IP网络地址的最大数目的初始位的路由。这被称作为‘最长前缀匹配’。然后,路由器可以将该信息输出到转发表,从而当该目的地址的数据包到达该路由器时,可以使用包含在转发表中的转发信息通过该路由器中的包转发功能或模块转发这些数据包。可以按照所需的频率来重复包转发处理,可以将数据包从一个路由器转发到另一个路由器,直到其到达期望的IP目的地址。通常地,将IPv4地址表示为通过小数点所分隔的一连串的四个十进制数。每个十进制数代表32位IPv4地址的八个位,从而每个十进制数处于从零至255的范围。前缀指的是IP地址或其初始部分。使用IPv4,例如“192.168/16”是“192.168.1.4”、“192.168.200.200”、以及“192.168.26.8”等的16位前缀。事实上,“192.168/16”是所有地址为“192.168.x.y”的16位前缀,其中,0≤x≤255,以及0≤y≤255。这样,路由器处包含前缀“192.168/16”的路由信息的路由表能够对范围在“192.168.x.y”内的所有IP目的地址的数据包进行路由。然而,路由器还可以包含诸如“192.168.4.5”的32位IP目的地的更具体的-->路由信息。这样,网络IP地址可以与路由器的路由表中的所有前缀进行比较,以提供最长匹配前缀形式的合适的(诸如更具体地)路由信息,然后可以将该信息输出到转发表。这样,IP网络中的路由过程涉及通过大量路由器的路由表的大量搜索。此外,当添加新路由并且其他路由变为废弃时,会频繁地改变路由表。因此,就较高搜索速度同时所需数据存储资源保持较低而言,期望实现这些系统的算法和数据结构是高效的。树是广泛使用的一种具有树形状的数据结构,该树形状具有一组基于根节点的链接节点。每个节点可以包含值或条件,并具有零个或多个子节点,其紧接着位于树中的每个节点之下。具有孩子的节点被称为孩子的双亲。节点具有至多一个双亲。叶节点是具有零个子节点的树数据结构的节点,其常常离根节点最远。节点的祖先是该节点的双亲,或该节点的双亲的双亲等。根是树中所有其他节点的祖先。给定节点的一组祖先是从根到该节点通过该树的(最短)路径。节点的后裔是该节点的孩子,或该节点的孩子的孩子等。当且仅当节点B是节点A的后裔时,节点A是节点B的祖先。二叉查找树是二叉树数据结构,其中每个节点具有相应的关键字(key)。二叉查找树中的节点的左子树仅包含小于该节点值的值,而二叉查找树中节点的右子树仅包含大于或等于该节点值的值。二叉树的排序和搜索算法相对来说易于高效。数字树是用于存储字符串的树,在其中通过两个或多个字符串共有的子字符串来组织节点。数字树的搜索只涉及搜索关键字的使用,即,当遍历该树时在每个节点处不读取与每个节点相关联的值。-->代替地,在树的搜索期间,仅当发现合适的节点关键字时才读取节点值。有时被称为前缀树的特里结构(trie)是有序的树数据结构,其被用于存储关键字是字符串的关联阵列。不像二叉查找树,树中没有节点存储与该节点相关联的关键字。代替地,树中节点的位置确定节点与什么关键字相关联。任何一个节点的所有后裔都具有与该节点相关联的字符串的公共前缀。根节点通常与空字符串相关联。特里结构的优点包括快速的关键字查找时间和其对于最长前缀匹配的适用性。最长前缀匹配涉及识别其节点关键字与给出的搜索关键字共享最长前缀的节点。特里结构还允许搜索关键字与具有公共前缀的整组节点关键字的关联。特里结构具有以下缺点:当节点关键的集合较稀疏时(即,当实际节点关键字形成潜在关键字的集合的小子集时)特里结构内的许多内部节点(非叶节点)具有一个后裔,引起该特里结构的高空间占有率。Patricia算法,‘检索以字母数字混合所编码的信息的实际算法’,(Donald R.Morrison,Journal of the ACM,15栏,第4期,1968年10月,pp514-534)1是提供在大文件中存储、索引、以及检索信息的灵活手段的算法,其节省了索引空间和再索引的时间。当添加新资料时,其不需要文本或索引的重排。Patricia算法能够用于创建和处理Patricia树结构。Patricia树(有时被称为radix树)是二叉数字特里结构(binarydigital trie)的实例,在该二叉数字特里结构中,仅是作为孩子的任何节点与其双亲合并。传统特里结构的遍历使用关键字的每个部分来确定哪个子树至分枝,然而通过存储搜索关键字部分的标识符,Patricia树指定接下来应当使用搜索关键字的哪个要素来确定分枝,并且因此接下来应当遍历哪个节点。这去除了对于树中的任何节点-->仅具有一个后裔的需求,从而仅将真实的分枝包括在索引中。这意味着索引的大小独立于所存储的短语的长度。Patricia算法允许以下的快速确定:对于需要‘约与log n相似’的计算(O(log n))的n个节点,搜索关键字是否对应于树中的节点关键字;树中任何节点的关键字是否是搜索关键字的前缀,以及如果是的话,在O(log n)的计算中哪个这种前缀是最长的;以及在O(log n)的计算中搜索关键字是否是树中的任何节点关键字的前缀,以及如果是的话,在O(m)计算中走查(walk through)带有该前缀的m个节点关键字。这些特性使Patricia算法成为IP转发应用程序的合适选择,这些IP转发应用程序依赖IP目的地址与前缀的快速匹配,即,搜索关键字与节点关键字的匹配。根据Patricia算法所构造的数据结构具有限制,这是由于存储在数据结构中的节点关本文档来自技高网...

【技术保护点】
一种使用搜索关键字搜索数据库的方法,所述数据库包含按照树结构来存储的数据,所述树结构包括多个节点,所述节点具有相关联的数据,所述相关联的数据包括: 一个或多个节点指针,所述节点指针包括识别在搜索所述树结构时可以被遍历的节点的数据; 节点关键字;以及 搜索关键字部分标识符,识别搜索关键字部分,所述搜索关键字部分将被用于确定在遍历节点时将被使用的节点指针, 其中,所述方法包括: 将关于第一节点的第一相关联数据和关于第二节点的第二相关联数据存储在所述数据库中,所述第一相关联数据包括第一节点关键字,以及所述第二相关联数据包括第二节点关键字,其中,所述第一节点关键字是所述第二节点关键字的前缀;以及 使用搜索关键字搜索所述树结构, 其中,使用所述搜索关键字的搜索涉及正被遍历的所述第二节点,并且如果所述第一节点关键字具有匹配所述搜索关键字的前缀,则在遍历所述第二节点之后识别所述第一节点。

【技术特征摘要】
GB 2007-9-14 0717970.81.一种使用搜索关键字搜索数据库的方法,所述数据库包含按照树结构来存储的数据,所述树结构包括多个节点,所述节点具有相关联的数据,所述相关联的数据包括:一个或多个节点指针,所述节点指针包括识别在搜索所述树结构时可以被遍历的节点的数据;节点关键字;以及搜索关键字部分标识符,识别搜索关键字部分,所述搜索关键字部分将被用于确定在遍历节点时将被使用的节点指针,其中,所述方法包括:将关于第一节点的第一相关联数据和关于第二节点的第二相关联数据存储在所述数据库中,所述第一相关联数据包括第一节点关键字,以及所述第二相关联数据包括第二节点关键字,其中,所述第一节点关键字是所述第二节点关键字的前缀;以及使用搜索关键字搜索所述树结构,其中,使用所述搜索关键字的搜索涉及正被遍历的所述第二节点,并且如果所述第一节点关键字具有匹配所述搜索关键字的前缀,则在遍历所述第二节点之后识别所述第一节点。2.根据权利要求1所述的方法,包括:在遍历所述第二节点期间,将所述第二节点关键字与所述搜索关键字进行比较。3.根据权利要求1或2所述的方法,包括:存储第三数据,所述第三数据指示所述第一节点关键字是所述第二节点关键字的前缀。4.根据权利要求3所述的方法,其中,存储的所述第三数据包括从所述第二节点指向所述第一节点的第一节点指针。5.根据权利要求4所述的方法,其中,所述识别所述第一节点包括:通过跟随所述第一节点指针从所述第二节点至所述第一节点来遍历所述树。6.根据权利要求1所述的方法,其中,所述识别所述第一节点包括:在所述遍历所述第二节点之后但在随后的所述遍历所述第一节点之前,遍历所述树结构中所述第一节点之上的一个或多个节点。7.根据权利要求1所述的方法,其中,特定节点的搜索关键字部分标识符涉及搜索关键字位,所述搜索关键字位将被用于确定在遍历所述特定节点时将被使用的节点指针。8.根据权利要求7所述的方法,其中,所述特定节点的搜索关键字部分标识符涉及将被使用的搜索关键字位与先前被使用的搜索关键字位相比的相对位置。9.根据权利要求7所述的方法,其中,所述特定节点的搜索关键字部分标识符涉及将被使用的搜索关键字位的绝对位置。10.根据权利要求1所述的方法,包括:存储与所述多个节点中的一个或多个节点相关联的数据参数。11.根据权利要求10所述的方法,其中,所述树结构的搜索结果包括输出所存储的数据参数。12.根据权利要求1所述的方法,其中,所述搜索包括:使用基本上类似于Patricia算法的算法进行搜索。13.一种将数据存储到数据库中的方法,所述数据库包含按照树结构来存储的数据,所述树结构包括多个节点,所述节点具有相关联的数据,所述相关联的数据包括:一个或多个节点指针,所述节点指针包括识别在搜索所述树结构时可以被遍历的节点的数据;节点关键字;搜索关键字部分标识符,识别搜索关键字部分,所述搜索关键字部分将被用于确定在遍历节点时将被使用的节点指针,其中,所述方法包括将新节点插入到所述树结构中,所述新节点具有相关联的节点关键字,所述插入包括:使用插入搜索关键字来搜索所述数据库,所述插入搜索关键字包括所述新节点关键字,使用所述插入搜索关键字的所述搜索识别所述树结构中的给定节点,所述给定节点的节点关键字与所述插入搜索关键字具有给定前缀关系;以...

【专利技术属性】
技术研发人员:乔纳森理查德伯杰高文博斯沃思戴维爱德华麦沃尔特
申请(专利权)人:数据连接有限公司
类型:发明
国别省市:GB[英国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1