第 6 章 在目录服务器中管理索引


索引通过分类和组织属性或值来更快地搜索和检索信息。您可以使用虚拟列表视图控制来请求大型搜索结果的连续子集。

6.1. 关于索引

了解目录服务器中的索引类型,以及使用索引时的加号和减去。

6.1.1. 不同的索引类型

目录服务器将每个索引属性的索引存储在实例的数据库目录中单独的数据库文件。例如,sn 属性的索引存储在 /var/lib/dirsrv/slapd- <instance_name> /db/database_name/sn.db 文件中。如果目录服务器为属性维护不同的索引,则每个索引文件可以包含多个索引类型。

目录服务器支持以下索引类型:

  • 存在索引(前)是包含特定属性的条目列表。例如,当客户端频繁执行搜索时使用此类型,如 attribute=mail
  • 相等索引(eq)改进了搜索包含特定属性值的条目。例如,cn 属性上的相等索引可以更快地搜索 cn=first_name last_name
  • 大约索引(approx)可以实现有效的大约或声音的搜索。例如,搜索 cn~=first_name last_name, cn~=first_name, 或 cn~=first_nam (请注意拼写错误)将返回条目 cn=first_name X last_name。请注意,目录服务器中的元手机算法只支持 US-ASCII 字母。因此,只使用带有英语值的大约索引。
  • 子字符串索引(sub)是一个昂贵的索引来维护,但它可提高对条目中子字符串进行有效的搜索。子字符串索引仅限于每个条目至少三个字符。例如,搜索 telephoneNumber swig555* 返回目录中所有条目,其值为 telephoneNumber 属性中包含 555 的值。
  • 国际索引可加快在国际目录中搜索信息。创建国际索引的过程与创建常规索引的过程类似,但它通过关联对象标识符(OID)和要索引的属性来应用匹配的规则。

6.1.2. 平衡索引的好处

在创建新索引前,平衡维护索引对成本的好处:

  • 大约索引对于通常包含数字的属性(如电话号码)无效。
  • 子字符串索引不适用于二进制属性。
  • 避免对包含大型值(如镜像)的属性上相等索引。
  • 在不提高搜索性能的情况下,为搜索中常用的属性维护索引会增加开销。
  • 未索引的属性仍可在搜索请求中使用,但搜索性能可能会显著降级,具体取决于搜索类型。

索引可能会变得非常耗时。例如,如果 Directory 服务器收到 add 操作,服务器会检查索引属性,以确定是否为属性值维护索引。如果创建属性值被索引,Directory 服务器会将新属性值添加到索引中,然后在条目中创建实际属性值。

例 6.1. 当用户添加条目时,Directory 服务器执行

假设目录服务器维护以下索引:

  • cnsn 属性的相等、大约和子字符串索引。
  • telephoneNumber 属性的相等和子字符串索引。
  • description 属性的子字符串索引。

例如,用户添加以下条目:

dn: cn=John Doe,ou=People,dc=example,dc=com
objectclass: top
objectClass: person
objectClass: orgperson
objectClass: inetorgperson
cn: John Doe
cn: John
sn: Doe
ou: Manufacturing
ou: people
telephoneNumber: 408 555 8834
description: Manufacturing lead
Copy to Clipboard Toggle word wrap

当用户添加条目时,Directory 服务器执行以下步骤:

  1. JohnJohn Doe 创建 cn equality 索引条目。
  2. JohnJohn Doe 创建 cn approximate index 条目。
  3. JohnJohn Doe 创建 cn 子字符串索引条目。
  4. Doe 创建 sn equality 索引条目。
  5. Doe 创建 sn approximate index 条目。
  6. Doe 创建 sn 子字符串索引条目。
  7. 408 555 8834 创建 telephoneNumber equality 索引条目。
  8. 408 555 8834 创建 telephoneNumber 子字符串索引条目。
  9. 制造领导 创建 description 子字符串索引条目。

本例演示了为大型目录创建和维护数据库所需的操作数量可能会非常大量资源。

重要

不要为成员资格属性(如成员、unique member )定义子字符串索引,因为它可能会影响目录服务器性能。在添加或删除成员时,例如,对于具有多个成员的组的唯一成员,则 唯一成员 子字符串索引的计算需要评估所有 唯一成员 值,而不只是添加或删除值。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat