我目前正忙于学习LDAP。我对索引有问题。我知道他们是用来提高业绩的。但是,我无法理解LDAP中索引的工作原理。例如,作为LDAP服务器,我正在使用OpenDJ。在这里,我可以看到属性sn (姓氏)确实有5种不同的索引类型,它们是近似的、相等的、有序的、存在的和子字符串的。但是,只检查排序。
发布于 2016-05-04 23:30:20
我无法理解LDAP中索引的工作原理。
与数据库中的索引相同。以加快查询和更新。可以为任何属性提供索引,但只能对搜索中具有功能的属性进行索引。您可以对LDAP数据库进行比DBMS更随意的索引,因为假定的读:写比率要高得多,通常是9:1或更多,而对于RDBMS则是3:1,因此在插入和更新上索引的成本相对要低得多。
例如,作为LDAP服务器,我正在使用OpenDJ。在这里,我可以看到属性sn (姓氏)确实有5种不同的索引类型,它们是近似的、相等的、有序的、存在的和子字符串的。
它们对应于您可以在LDAP搜索过滤器中使用的不同运算符:
filter = "(" filtercomp ")"
filtercomp = and / or / not / item
and = "&" filterlist
or = "|" filterlist
not = "!" filter
filterlist = 1*filter
item = simple / present / substring / extensible
simple = attr filtertype value
filtertype = equal / approx / greater / less
equal = "="
approx = "~="
greater = ">="
less = "<="
extensible = attr [":dn"] [":" matchingrule] ":=" value
/ [":dn"] ":" matchingrule ":=" value
present = attr "=*"
substring = attr "=" [initial] any [final]
initial = value
any = "*" *(value "*")
final = value
attr = AttributeDescription from Section 4.1.5 of [1]
matchingrule = MatchingRuleId from Section 4.1.9 of [1]
value = AttributeValue from Section 4.1.6 of [1]但是,只检查排序。
您的意思是在某些管理GUI中只选择此选项吗?如果是这样,则只为该属性维护常规排序索引。这可以用于所有运营商,但据称速度较慢。就我个人而言,我从未理解LDAP实现者为什么认为他们在数据库业务中,不使用标准数据库,并坚持提供他们自己的数据库。
发布于 2017-03-06 10:49:17
当客户端请求目录搜索操作时,客户端向服务器发送一个过滤器表达式,例如(&(uid=jensen)(l=Stavanger))。然后,服务器使用适用的索引查找属性值可能与搜索相匹配的条目。如果不适用索引,则服务器可能必须遍历所有条目以查找候选匹配项。
对大型目录来说,查看所有条目都是资源密集型的。因此,默认情况下,允许用户请求不存在适用索引的搜索的取消索引搜索特权保留给目录根用户。
来源
发布于 2016-05-04 21:07:22
LDAP索引可以看作是数据库索引。索引正在提高复杂LDAP搜索请求的性能。希望这能帮上忙。
https://stackoverflow.com/questions/34743541
复制相似问题