当要搜索的属性具有索引时,通过 baseDN 限制 LDAP 搜索是否有任何好处?
Does limiting an LDAP search by baseDN provide any benefit when the attribute being searched on has an index?
我们正在设计一个 LDAP 架构(专门用于 OpenDJ),我们主要需要能够在 mail
属性上进行搜索。我们不需要进行子字符串搜索,因为用户在登录时会提供完整的电子邮件地址。
我们已经有了 mail
属性的索引。然而,我们也在考虑通过电子邮件地址的第一个字母来细分用户目录(因此所有电子邮件地址以字母 A
开头的用户都将位于 ou=A
子目录中在 ou=users
下。我能看到这样做的唯一价值是,当我们通过电子邮件搜索用户时,我们可以限制搜索的 baseDN
,从而将搜索范围缩小到大约整个目录的1/26。
我的主要问题是,如果属性已经具有index? 索引是否考虑了 baseDN
,或者它们是否对整个目录进行了索引?
第二个问题,如果允许的话,除了在搜索时提供更具体的 baseDN
之外,是否还有其他用途可以按首字母(或任何其他安排)拆分用户目录?
当您甚至不知道是否存在性能问题时,您所考虑的似乎是过早的优化。
此外,索引和处理查询不是 LDAP 的标准元素,它是您正在使用的技术的实现细节。
在OpenDJ中,索引是为整个数据库后端配置和维护的。
无论您有 1 个条目还是 10 亿个条目,在电子邮件平等索引中查找和返回单个条目的成本都是相同的。
我在 LDAP 和目录服务方面有 20 多年的经验,我从未见过任何目录结构是按属性的第一个字母拆分条目。
我曾经(而且只有一次)遇到过与您预期的问题类似的问题——本质上,您有太多的记录,以至于搜索记录会产生无法接受的用户体验。就我而言,目录中有超过一百万的客户。现在 IBM 的 Tivoli Directory Server 的一个相当老的迭代有几个错误,这意味着搜索目录需要几分钟才能完成(索引或没有索引)。没有人愿意等待几分钟才能登录并支付账单!而且我们只能使用 IBM 的 LDAP 服务器。
在那种情况下,我使用了创建帐户时用作命名属性的电子邮件地址,并且从未搜索过目录。 IE。我是目录中的 cn=lisa@example.com,ou=customers,o=example。当我使用 lisa@example.com 登录时,站点以编程方式将绑定 DN 公式化为“cn=” + userInput + “,ou=customers,o=example” 并验证提供的密码而不是搜索我的帐户。
我们正在设计一个 LDAP 架构(专门用于 OpenDJ),我们主要需要能够在 mail
属性上进行搜索。我们不需要进行子字符串搜索,因为用户在登录时会提供完整的电子邮件地址。
我们已经有了 mail
属性的索引。然而,我们也在考虑通过电子邮件地址的第一个字母来细分用户目录(因此所有电子邮件地址以字母 A
开头的用户都将位于 ou=A
子目录中在 ou=users
下。我能看到这样做的唯一价值是,当我们通过电子邮件搜索用户时,我们可以限制搜索的 baseDN
,从而将搜索范围缩小到大约整个目录的1/26。
我的主要问题是,如果属性已经具有index? 索引是否考虑了 baseDN
,或者它们是否对整个目录进行了索引?
第二个问题,如果允许的话,除了在搜索时提供更具体的 baseDN
之外,是否还有其他用途可以按首字母(或任何其他安排)拆分用户目录?
当您甚至不知道是否存在性能问题时,您所考虑的似乎是过早的优化。 此外,索引和处理查询不是 LDAP 的标准元素,它是您正在使用的技术的实现细节。
在OpenDJ中,索引是为整个数据库后端配置和维护的。 无论您有 1 个条目还是 10 亿个条目,在电子邮件平等索引中查找和返回单个条目的成本都是相同的。
我在 LDAP 和目录服务方面有 20 多年的经验,我从未见过任何目录结构是按属性的第一个字母拆分条目。
我曾经(而且只有一次)遇到过与您预期的问题类似的问题——本质上,您有太多的记录,以至于搜索记录会产生无法接受的用户体验。就我而言,目录中有超过一百万的客户。现在 IBM 的 Tivoli Directory Server 的一个相当老的迭代有几个错误,这意味着搜索目录需要几分钟才能完成(索引或没有索引)。没有人愿意等待几分钟才能登录并支付账单!而且我们只能使用 IBM 的 LDAP 服务器。
在那种情况下,我使用了创建帐户时用作命名属性的电子邮件地址,并且从未搜索过目录。 IE。我是目录中的 cn=lisa@example.com,ou=customers,o=example。当我使用 lisa@example.com 登录时,站点以编程方式将绑定 DN 公式化为“cn=” + userInput + “,ou=customers,o=example” 并验证提供的密码而不是搜索我的帐户。