CN102521375B - 一种目录服务数据检索方法及系统 - Google Patents
一种目录服务数据检索方法及系统 Download PDFInfo
- Publication number
- CN102521375B CN102521375B CN201110427701XA CN201110427701A CN102521375B CN 102521375 B CN102521375 B CN 102521375B CN 201110427701X A CN201110427701X A CN 201110427701XA CN 201110427701 A CN201110427701 A CN 201110427701A CN 102521375 B CN102521375 B CN 102521375B
- Authority
- CN
- China
- Prior art keywords
- directory service
- service data
- back end
- embedded database
- tree structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种目录服务数据检索方法,应用于设置有数据结构为二叉平衡树的内嵌式数据库的目录服务器,所述方法包括:获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储;调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态;当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
Description
技术领域
本发明涉及目录服务技术领域,特别涉及一种目录服务数据检索方法及系统。
背景技术
随着计算机网络的日益发展,特别是Internet的发展,网络上的资源日益增多,为了能统一管理这些资源,开始把目录服务技术用于对网络上各种资源、用户、设备、应用软件等地管理。目录服务已成为当今网络上的一种基础平台软件,并且逐渐成为网络的核心。而LDAP(LightDirectory Access Protocol,轻量级访问协议)作为一种目录信息的轻量级访问协议,提供了简易、高效、可定制的目录服务,其高效的数据读取性,广泛应用于用户身份认证管理、数字证书服务等领域。
目前目录的存储方式主要分为两种:文本方式和数据库方式。
文本存储方式使用LDIF(Light Directory Interchange Format,轻量级目录交换格式)标准格式的文件来存储目录信息,将每个条目数据封装成LDIF格式存储在以DN(Distinguished Name,区别名)命名的文件中。但这种单一的存储格式很难满足条目属性值得快速过滤,极大地影响了查询性能。
数据库方式的存储主要采用嵌入式数据库、关系数据库与xml(Extensible Markup Language,可扩展标记语言)数据库三种。该存储方式虽然能够降低数据存储管理过程中目录服务器与数据库之间的系统调用开销。但是随着应用系统处理的数据量越来越大,尤其是达到海量数据时,数据库访问的响应速度会受到很大影响。
发明内容
本发明所要解决的技术问题是提供一种目录服务数据检索方法,用以解决现有技术中当目录服务器在处理海量数据时检索性能降低的问题。
为解决上述问题,本发明公开了一种目录服务数据检索方法,该方法应用于目录服务器,所述目录服务器中设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述方法包括:
获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储;
调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态;
当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
上述方法,优选地,所述获取目录服务数据,将所述目录服务数据封装为数据节点,并将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储后还包括:
将指向所述数据节点所在的树节点的相邻树节点的指针信息存放入所述数据节点所在的树节点中。
上述方法,优选地,所述依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点包括:
根据所述关键匹配值提取目录服务数据索引值,根据所述目录服务数据索引值或预先设定的索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出与所述目录服务索引值相对应的目录服务数据的数据节点范围;
根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与所述关键匹配值相对应的数据节点。
上述方法,优选地,所述方法还包括:
将已查询过的目录服务数据作为目录服务数据缓存对象进行存储,形成目录服务数据缓存对象集合,所述目录服务数据缓存对象包括目录服务数据的缓存关键值。
上述方法,优选地,所述依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据包括:
根据所述关键匹配值在目录服务数据缓存对象集合中查询与其相对应的目录服务数据缓存对象,获取目录服务数据;
当在目录服务数据缓存对象集合中未查询到与所述关键匹配值相对应的目录服务数据缓存对象时,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
上述方法,优选地,调整所述内嵌式数据库二叉平衡树结构,使其处于平衡状态包括:
判断所述内嵌式数据库的二叉平衡树结构最小失衡子树;
调整最小失衡子树结构,使其处于平衡状态。
上述方法,优选地,所述将所述目录服务数据作为目录服务缓存对象进行存储包括:
将所述目录服务数据作为目录服务缓存对象以哈希表的数据结构进行存储。
本发明还提供了一种目录服务数据检索系统,用以保证上述方法在实际中的实现及应用,该系统应用于目录服务库中,所述目录服务器中设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述系统包括目录服务数据存储模块、平衡模块及目录服务数据检索模块,其中:
所述目录服务数据存储模块,用于获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储;
所述平衡模块,用于调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态;
所述目录服务数据检索模块,用于当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
上述系统,优选地,所述系统还包括索引去匹配过滤规则设定模块和目录服务数据索引模块:
所述索引去匹配过滤规则设定模块,用于设定索引去匹配过滤规则;
所述目录服务数据索引模块,用于根据所述关键匹配值提取目录服务数据索引值,根据所述目录服务数据索引值或预先设定的索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出与所述目录服务索引值相对应的目录服务数据的数据节点范围,然后再根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与所述关键匹配值相对应的数据节点。
上述系统,优选地,所述系统还包括缓存中心和目录服务数据缓存检索模块:
所述缓存中心,用于将查询到的目录服务数据作为目录服务数据缓存对象进行存储;
所述目录服务数据缓存检索模块,用于根据所述关键匹配值在所述缓存中心中查询与其相对应的目录服务数据缓存对象,获取目录服务数据。
综上所述,本发明提供的一种目录服务数据检索方法及其系统,基于内嵌式数据库的存储方式,将目录服务数据封装成数据节点存储入二叉平衡树的结构的树节点中,在每个树节点中含有指向其下一个节点的指针信息,在树形层次结构中检索,加快了检索速度。在检索时引入索引机制,在数据检索前先搜索索引值,缩小检索范围,加快了查询目录服务数据的速度。另外引入缓存技术,将已经查询过的目录服务数据放入缓存中,当查询过缓存中不存在要查询的目录服务数据时,再从数据库中查找,由此避免了从数据库中直接查询数据所带来的额外时间消耗和系统浪费,使得搜索访问的效率大大提高,从而提高了应用程序的运行性能。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种目录服务数据检索方法实施例一的方法流程图;
图2为本发明提供的一种目录服务数据检索方法实施例一的目录服务器的数据结构图;
图3为本发明提供的一种目录服务数据检索方法实施例二在数据检索时引入索引方法的部分方法流程图;
图4为本发明提供的一种目录服务数据检索方法实施例二的目录服务器的数据结构图;
图5为本发明提供的一种目录服务数据检索方法实施例三在数据检索时的引入缓存方法部分方法流程图;
图6为本发明提供的一种目录服务数据检索系统实施例四的结构示意图;
图7为本发明提供的一种目录服务数据检索系统实施例五的结构示意图;
图8为本发明提供的一种目录服务数据检索系统实施例六的结构示意图;
图9为本发明提供的一种目录服务数据检索系统实施例六的另一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
参考图1所示,为本发明提供的一种目录服务数据检索方法的流程图,所述方法用于目录服务器,所述目录服务器设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述方法包括:
步骤101:获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储。
其中,所述二叉平衡树结构中,树节点除根节点外都有其父节点,且其父节点除本树节点外最多还包括一个子节点,为所述二叉平衡树结构中每个树节点即作为树节点存储的数据节点设置一个平衡因子,表示所述树节点的左右两个子树的深度差,即由所述树节点的左子树深度减去其右子树深度。
需要说明的是,在所述数据节点插入所述二叉平衡树结构后,还可以将指向所述插入的数据节点所在的树节点的相邻节点的指针信息存放入所述插入的数据节点所在的数据节点中,由此在各个树节点尤其是在同一树形层次中的树节点中建立直接指向关系,在之后的检索过程中,可以加快检索速度。
步骤102:调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态。
其中,在所述数据节点插入二叉平衡树结构后,所述数据节点所在树节点的父节点其平衡因子发生改变,所述二叉平衡树结构中的其他树节点的平衡因子可能会发生变化,在本发明中,可以通过建一个栈的数据结构来实现调整二叉平衡树结构使其处于平衡状态,过程如下:
将所述数据节点插入所述二叉平衡树结构时的插入路径所对应的数据节点入栈保存;
当插入完成后,准备将所述栈中的数据节点依次出栈,判断即将出栈的数据节点是否为当前栈顶数据节点的左节点,如果是,则栈顶数据节点的平衡因子加1,如果否,则栈顶数据节点的平衡因子减1,然后出栈,栈中其余的数据节点按以上规则依次出栈,并找到其平衡因子绝对值大于1的数据节点,即所述二叉平衡树结构中的失衡点;
通过找出的失衡点中,判断出所述二叉平衡树结构中失衡的最小子树,并旋转调整所述失衡的最小子树,使得所述二叉平衡树结构处于平衡状态。
步骤103:当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
通过步骤101-步骤102,可以看出所述目录服务器在数据结构上是一个树型结构在形式上采取层次结构,可提供快速而有效的查询。如图2所示的目录服务器数据层次结构图,其上的数据以二叉平衡树结构进行存储,以域名“dc=61s,dc=com”为基准,在它下面分别按照ou、cn等划分层次,各层之间结构清晰,数据组织信息明确。如果要搜索数据节点“cn=计算机3,ou=计算机,ou=资产”,搜索过程内部如下:
当我们搜索cn=计算机3的数据节点时,它是按照数据节点在LDAP中存储的先后顺序,逐个进行查询的,先查询cn=计算机1的数据节点,接着查询cn=计算机2的数据节点,再查到cn=计算机3的数据节点,找到后则返回搜索到的目录服务数据。
上述实施例,基于内嵌式数据库的存储方式,将目录服务数据封装成数据节点存储入二叉平衡树的结构的树节点中,在树形层次结构中检索,加快了检索速度。从而提高了应用程序的运行性能。
实施例二
参考图3所示,为本发明实施例提供的一种目录服务数据检索方法实施例二,用于目录服务器,所述目录服务器设置有内嵌式数据库,所述数据库为二叉平衡树结构,基于本发明实施例一提供的目录服务数据检索方法步骤101-步骤103,所述步骤103中依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点包括:
步骤301:根据所述需查询的目录服务数据的关键匹配值提取目录服务数据索引值或设定索引去匹配过滤规则。
其中,所述目录服务索引值可以包括以下几种类型:
与所述目录服务数据相关的某个定值,例如Equality索引或Value索引,搜索形式为‘ObjectClasses=person’or‘attribute=mail’;
与所述目录服务数据相关的字符串,例如SubString索引;
与所述目录服务数据近似相关的某个定值或字符串,例如Approximate索引或Ordering索引。
步骤302:根据所述目录服务数据索引值或索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出于所述目录服务索引值相对应的目录服务数据节点范围。
步骤303:根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与其相对应的数据节点。
其中,参考图4所示,为某一目录服务器的内嵌式数据库的二叉平衡树结构图,假如图中查询数据节点“cn=c3,ou=ou2,o=dep2”,无索引时,查找cn=c3的数据节点,它是按照数据节点在LDAP中存储的先后顺序,逐个进行查找的,先查询cn=c1的数据节点,接着查询cn=c2的数据节点,在查询cn=c3的数据节点,刚好找到则返回查询信息。当建立索引时,则不用搜索“o=dep1”下的数据节点,也不用搜“ou=ou1,o=dep2”下的数据节点,而是直接搜索“ou=ou2,o=dep2”下的数据节点,选搜到“cn=c2,ou=ou2,o=dep2”,接着找到“cn=c3,ou=ou2,o=dep2”并返回搜索结果。
在检索目录服务数据时,还可以预先设定索引去匹配过滤规则,快速定位检索范围,提高检索速度。
由此可知,引用索引技术可以有效地加快目录服务数据的检索速度,尤其是当目录服务器中需要处理的数据量很大时,建立索引是必须的也是快速检索的必要条件,从而提高应用程序的运行性能。
实施例三
参考图5所示,本发明提供的一种目录服务数据检索方法实施例三流程图,用于目录服务器,所述目录服务器设置有内嵌式数据库,所述数据库为二叉平衡树结构,在结束前一次检索后,将已经查询过的目录服务数据作为目录服务数据缓存对象进行存储,形成目录服务数据缓存对象集合,所述目录服务数据缓存对象包括目录服务数据的关键值,基于本发明实施例一的检索方法步骤101-步骤103,所述步骤103中所述依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据包括:
步骤501:根据所述需查询的目录服务数据关键匹配值在目录服务数据缓存对象集合中查询与其相对应的目录服务数据缓存对象,获取目录服务数据。
其中,所述目录服务数据缓存对象使用hashtable(哈希表)的数据结构进行存储,在存储所述目录服务数据缓存对象时先检查缓存集合是否已经额满,如果没有,那么所述目录服务数据缓存对象顺利加入所述目录服务数据缓存对象集合中,如果所述目录服务数据缓存对象集合已经满额,那么在所述缓存集合中取出一个目录服务数据缓存对象。
需要说明的是,所述方法可以通过定义Memory Store接口,实现所述缓存方法。
步骤502:当在目录服务数据缓存对象集合中未查询到与所述关键匹配值相对应的目录服务数据缓存对象时,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
上述实施例,目录服务器在数据检索时,现在目录服务数据缓存集合中查询是否存在与所述目录服务数据关键匹配值相对应的目录服务数据缓存对象,如果有,那么直接在所述目录服务数据缓存对象中获取目录服务数据,如果没有,那么可以按照本发明实施例一或本发明实施例二种的检索方法继续检索。
通过本发明实施例,当目录服务器在处理较大数据量时,可以改善因多个用户同时向某一数据发出申请时造成的目录服务器响应速度急速降低的情况,很大程度上提高了数据检索性能。
实施例四
参考图6所示,本发明提供的一种目录服务数据检索系统实施例四的结构示意图,以实现本发明方法实施例一提供的检索方法,应用于目录服务库中,所述目录服务器中设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述系统包括目录服务数据存储模块601、平衡模块602及目录服务数据检索模块603,其中:
所述目录服务数据存储模块601,用于获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储。
其中,所述二叉平衡树结构中,树节点除根节点外都有其父节点,且其父节点除本树节点外最多还包括一个子节点,为所述二叉平衡树结构中每个树节点即作为树节点存储的数据节点设置一个平衡因子,表示所述树节点的左右两个子树的深度差,即由所述树节点的左子树深度减去其右子树深度。
需要说明的是,在所述目录服务数据存储模块601将所述数据节点插入所述二叉平衡树结构后,还可以将指向所述插入的数据节点所在的树节点的相邻节点的指针信息存放入所述插入的数据节点所在的数据节点中,由此在各个树节点尤其是在同一树形层次中的树节点中建立直接指向关系,在之后的所述目录服务数据检索模块603检索过程中,可以加快检索速度。
所述平衡模块602,用于调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态。
其中,在所述目录服务数据存储模块601将所述数据节点插入二叉平衡树结构后,所述数据节点所在树节点的父节点其平衡因子发生改变,所述二叉平衡树结构中的其他树节点的平衡因子可能会发生变化,在本发明中,可以通过建一个栈的数据结构来实现调整二叉平衡树结构使其处于平衡状态,过程如下:
所述目录服务数据存储模块601将所述数据节点插入所述二叉平衡树结构时的插入路径所对应的数据节点入栈保存;
当插入完成后,准备将所述栈中的数据节点依次出栈,所述目录服务数据存储模块601判断即将出栈的数据节点是否为当前栈顶数据节点的左节点,如果是,则栈顶数据节点的平衡因子加1,如果否,则栈顶数据节点的平衡因子减1,然后出栈,栈中其余的数据节点按以上规则依次出栈,并找到其平衡因子绝对值大于1的数据节点,即所述二叉平衡树结构中的失衡点;
通过找出的失衡点中,所述目录服务数据存储模块601判断出所述二叉平衡树结构中失衡的最小子树,并旋转调整所述失衡的最小子树,使得所述二叉平衡树结构处于平衡状态。
所述目录服务数据检索模块603,用于当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
目录服务数据经过所述目录服务数据存储模块601及所述平衡模块602的存储调整后以内嵌式数据库的二叉平衡树的结构进行存储,在所述目录服务器上以树形结构并采用层次结构,可以提供快速有效地查询。
实施例五
参考图7所示,本发明提供的一种目录服务数据检索系统实施例五以实现本发明提供的实施例二的方法,所述系统包括目录服务数据存储模块601、平衡模块602、索引去匹配过滤规则设定模块604及目录服务数据索引模块605,所述目录服务数据存储模块601、平衡模块602与实施例三中所述相似,其中:
所述索引去匹配过滤规则设定模块604,用于设定索引去匹配过滤规则;
所述目录服务数据索引模块605,用于根据所述关键匹配值提取目录服务数据索引值,根据所述目录服务数据索引值或预先设定的索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出与所述目录服务索引值相对应的目录服务数据的数据节点范围,然后再根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与所述关键匹配值相对应的数据节点,获取所述数据节点中的目录服务数据。
其中,所述目录服务数据索引模块605提取的目录服务数据索引值包括以下几种类型:
与所述目录服务数据相关的某个定值,例如Equality索引或Value索引,搜索形式为‘ObjectClasses=person’or‘attribute=mail’;
与所述目录服务数据相关的字符串,例如SubString索引;
与所述目录服务数据近似相关的某个定值或字符串,例如Approximate索引或Ordering索引。
其中,参考图4所示,为某一目录服务器由目录服务数据存储模块601及平衡模块602构架的内嵌式数据库的二叉平衡树结构图,假如图中查询数据节点“cn=c3,ou=ou2,o=dep2”,无索引时,所述目录服务数据检索模块603查找cn=c3的数据节点,它是按照数据节点在目录服务器中存储的先后顺序,逐个进行查找的,先查询cn=c1的数据节点,接着查询cn=c2的数据节点,在查询cn=c3的数据节点,刚好找到则返回查询信息。当建立索引时,则不用搜索“o=dep1”下的数据节点,也不用搜“ou=ou1,o=dep2”下的数据节点,而是由所述目录服务数据索引模块605直接搜索“ou=ou2,o=dep2”下的数据节点,选搜到“cn=c2,ou=ou2,o=dep2”,接着找到“cn=c3,ou=ou2,o=dep2”并返回搜索结果。
在索引目录服务数据时,还可以通过所述索引去匹配过滤规则设定模块604创建索引去匹配过滤规则,快速定位检索范围,提高检索速度。
由此可知,通过目录服务数据索引模块利用索引技术可以有效地加快目录服务数据的检索速度,尤其是当目录服务器中需要处理的数据量很大时,建立索引是必须的也是快速检索的必要条件,从而提高应用程序的运行性能。
实施例六
参考图8所示,本发明提高的一种目录服务检索系统实施例六的结构示意图,基于本发明实施例四,以实现本发明提供的实施例三的方法,所述系统还包括缓存中心606和目录服务数据缓存检索模块607,其中:
所述缓存中心606,用于将查询到的目录服务数据作为目录服务数据缓存对象进行存储;
所述目录服务数据缓存检索模块607,用于根据所述关键匹配值在所述缓存中心606中查询与其相对应的目录服务数据缓存对象,获取目录服务数据。
其中,所述缓存中心606将所述目录服务数据缓存对象以hashtable的数据结构进行存储,并在所述缓存中心606中设置所述目录服务数据缓存对象的最大数额,当所述缓存中心606中的目录服务数据缓存对象数量达到其最大数额时,表示额满。
需要说明的是,所述方法可以通过在所述目录服务数据缓存检索模块607中定义Memory Store接口,实现所述缓存方法。
上述实施例,通过所述目录服务数据缓存检索模块607在所述目录服务数据检索模块603在内嵌式数据库的二叉平衡树结构中查询所述目录服务数据前,先在所述缓存中心606查询是否含有与所述关键匹配值相对应的目录服务数据缓存对象,如果有,直接在所述目录服务数据缓存对象中获取目录服务数据,如果否,再通过所述目录服务数据检索模块603在所述内嵌式数据库的二叉平衡树结构中检索目录服务数据。
参考图9所示,当所述缓存中心606中没有查询到与所述关键匹配值相对应的目录服务数据缓存对象时,还可以通过索引去匹配过滤规则设定模块604及所述目录服务数据索引模块605在所述内嵌式数据库的二叉平衡树结构中检索与所述关键匹配值相对应的目录服务数据节点,获取所述目录服务数据。
通过本发明实施例,当目录服务器在处理较大数据量时,可以改善因多个用户同时向某一数据发出申请时造成的目录服务器响应速度急速降低的情况,提高查询效率,同时引入索引技术,仅一步提高检索速度,更大程度上提高数据检索性能。
以上对本申请所提供的一种目录服务数据检索方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种目录服务数据检索方法,其特征在于,该方法应用于目录服务器,所述目录服务器中设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述方法包括:
获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储,且将指向所述数据节点所在的树节点的相邻树节点的指针信息存放入所述数据节点所在的树节点中;
调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态;
当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
2.根据权利要求1所述的方法,其特征在于,所述依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点包括:
根据所述关键匹配值提取目录服务数据索引值,根据所述目录服务数据索引值或预先设定的索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出与所述目录服务索引值相对应的目录服务数据的数据节点范围;
根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与所述关键匹配值相对应的数据节点。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将已查询过的目录服务数据作为目录服务数据缓存对象进行存储,形成目录服务数据缓存对象集合,所述目录服务数据缓存对象包括目录服务数据的缓存关键值。
4.根据权利要求3所述的方法,其特征在于,所述依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据包括:
根据所述关键匹配值在目录服务数据缓存对象集合中查询与其相对应的目录服务数据缓存对象,获取目录服务数据;
当在目录服务数据缓存对象集合中未查询到与所述关键匹配值相对应的目录服务数据缓存对象时,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
5.根据权利要求1所述的方法,其特征在于,调整所述内嵌式数据库二叉平衡树结构,使其处于平衡状态包括:
判断所述内嵌式数据库的二叉平衡树结构最小失衡子树;
调整最小失衡子树结构,使其处于平衡状态。
6.根据权利要求3所述的方法,其特征在于,所述将所述目录服务数据作为目录服务缓存对象进行存储包括:
将所述目录服务数据作为目录服务缓存对象以哈希表的数据结构进行存储。
7.一种目录服务数据检索系统,其特征在于,应用于目录服务器中,所述目录服务器中设置有内嵌式数据库,所述内嵌式数据库为二叉平衡树结构,所述系统包括目录服务数据存储模块、平衡模块及目录服务数据检索模块,其中:
所述目录服务数据存储模块,用于获取目录服务数据,将所述目录服务数据封装为数据节点,所述数据节点包括目录服务数据关键值,将所述数据节点插入所述内嵌式数据库二叉平衡树结构中,作为所述二叉平衡树的一个树节点进行存储,且将指向所述数据节点所在的树节点的相邻树节点的指针信息存放入所述数据节点所在的树节点中;
所述平衡模块,用于调整所述内嵌式数据库二叉平衡树的结构,使其处于平衡状态;
所述目录服务数据检索模块,用于当用户需要对目录服务数据进行检索时,接收用户发送的目录服务数据查询请求,所述数据查询请求包括所需查询目录服务数据的关键匹配值,依据所述关键匹配值在所述目录服务内嵌式数据库的二叉平衡树结构中查找与其相对应的数据节点,获取所述数据节点中的目录服务数据。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括索引去匹配过滤规则设定模块和目录服务数据索引模块:
所述索引去匹配过滤规则设定模块,用于设定索引去匹配过滤规则;
所述目录服务数据索引模块,用于根据所述关键匹配值提取目录服务数据索引值,根据所述目录服务数据索引值或预先设定的索引去匹配过滤规则在所述目录服务内嵌式数据库的二叉平衡树结构中过滤出与所述目录服务索引值相对应的目录服务数据的数据节点范围,然后再根据所述关键匹配值在所述过滤后的目录服务数据的数据节点范围内查询与所述关键匹配值相对应的数据节点。
9.根据权利要求7所述的系统,其特征在于,所述系统还包括缓存中心和目录服务数据缓存检索模块:
所述缓存中心,用于将查询到的目录服务数据作为目录服务数据缓存对象进行存储;
所述目录服务数据缓存检索模块,用于根据所述关键匹配值在所述缓存中心中查询与其相对应的目录服务数据缓存对象,获取目录服务数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110427701XA CN102521375B (zh) | 2011-12-19 | 2011-12-19 | 一种目录服务数据检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110427701XA CN102521375B (zh) | 2011-12-19 | 2011-12-19 | 一种目录服务数据检索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521375A CN102521375A (zh) | 2012-06-27 |
CN102521375B true CN102521375B (zh) | 2013-12-11 |
Family
ID=46292288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110427701XA Active CN102521375B (zh) | 2011-12-19 | 2011-12-19 | 一种目录服务数据检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521375B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902734A (zh) * | 2012-09-12 | 2013-01-30 | 北京伸得纬科技有限公司 | 一种目录存储和映射方法及系统 |
CN103366014B (zh) * | 2013-07-30 | 2017-08-04 | 汉柏科技有限公司 | 基于集群的云计算网络数据处理系统及方法 |
CN105426389A (zh) * | 2015-10-26 | 2016-03-23 | 武汉微创光电股份有限公司 | 一种基于ui界面树型目录视图的模糊检索定位方法 |
CN105808745B (zh) * | 2016-03-11 | 2019-06-28 | 中国联合网络通信集团有限公司 | 一种数据检索方法及服务器 |
US10783186B2 (en) * | 2017-08-31 | 2020-09-22 | Micron Technology, Inc. | Heterogenous key-value sets in tree database |
CN108924215B (zh) * | 2018-06-28 | 2021-03-19 | 北京顺丰同城科技有限公司 | 一种基于树形结构的服务发现处理方法及装置 |
CN114491172B (zh) * | 2022-04-07 | 2022-08-05 | 深圳竹云科技股份有限公司 | 树形结构节点的快速检索方法、装置、设备及存储介质 |
CN117931608B (zh) * | 2024-03-14 | 2024-07-05 | 麒麟软件有限公司 | 一种在vmcore中统计文件缓存占用的方法及装置、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635494A (zh) * | 2003-12-27 | 2005-07-06 | 海信集团有限公司 | 实现类内存数据库存取和检索的方法 |
US6980985B1 (en) * | 2000-08-30 | 2005-12-27 | At&T Corp. | Distributed evalulation of directory queries using a topology cache |
CN101256579A (zh) * | 2008-04-08 | 2008-09-03 | 中兴通讯股份有限公司 | 一种数据库范围查询数据组织的方法 |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据系统有限公司 | 一种数据库的b树索引的生成方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026138A1 (en) * | 2004-01-09 | 2006-02-02 | Gavin Robertson | Real-time indexes |
US8312050B2 (en) * | 2008-01-16 | 2012-11-13 | International Business Machines Corporation | Avoiding database related joins with specialized index structures |
-
2011
- 2011-12-19 CN CN201110427701XA patent/CN102521375B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6980985B1 (en) * | 2000-08-30 | 2005-12-27 | At&T Corp. | Distributed evalulation of directory queries using a topology cache |
CN1635494A (zh) * | 2003-12-27 | 2005-07-06 | 海信集团有限公司 | 实现类内存数据库存取和检索的方法 |
CN101256579A (zh) * | 2008-04-08 | 2008-09-03 | 中兴通讯股份有限公司 | 一种数据库范围查询数据组织的方法 |
CN101763415A (zh) * | 2009-12-16 | 2010-06-30 | 北京握奇数据系统有限公司 | 一种数据库的b树索引的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102521375A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521375B (zh) | 一种目录服务数据检索方法及系统 | |
US11030243B2 (en) | Structure based storage, query, update and transfer of tree-based documents | |
US6279007B1 (en) | Architecture for managing query friendly hierarchical values | |
US9361346B2 (en) | Mapping information stored in a LDAP tree structure to a relational database structure | |
US6085188A (en) | Method of hierarchical LDAP searching with relational tables | |
US6374253B1 (en) | System and method for generating hierarchical forward knowledge | |
CA2462300C (en) | Providing a consistent hierarchical abstraction of relational data | |
US6625615B2 (en) | Data processing system and method for multi-level directory searches | |
US9043331B2 (en) | System and method for indexing documents on the world-wide web | |
US6490589B1 (en) | System and method for rewriting queries | |
US20040243576A1 (en) | System and method for querying data for implicit hierarchies | |
US20040172442A1 (en) | System and Method for Sharing Data Between Hierarchical Databases | |
WO2002003252A1 (en) | System and method for sharing data between hierarchical databases | |
CN101645092B (zh) | 用于将x500数据模型映射到关系数据库上的方法 | |
US20090138503A1 (en) | Structure Based Storage, Query, Update and Transfer of Tree-Based Documents | |
US20180089243A1 (en) | Bloom filter index for device discovery | |
US20060026138A1 (en) | Real-time indexes | |
KR101224800B1 (ko) | 정보를 찾기 위해 데이터베이스를 크롤링하는 시스템 및 방법 | |
US20080270352A1 (en) | Modifying entry names in directory server | |
CN108984626A (zh) | 一种数据处理方法、装置及服务器 | |
KR100999408B1 (ko) | 해시트리를 이용한 url 검색방법 | |
CN110119396B (zh) | 数据管理方法及相关产品 | |
US20080133587A1 (en) | Extending Existing Data within a Directory Service | |
Vu et al. | R*-grove: Balanced spatial partitioning for large-scale datasets | |
CN103902554B (zh) | 数据访问方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |