Virtual member manager 层次结构旨在轻松与 LDAP 目录集成,尤其是包含现有数据的目录。
每个 LDAP 目录都有一个目录信息树 (DIT),这是 LDAP 服务器上条目的分层结构化。LDAP 服务器中的每个条目均占用 DIT 中的一个位置,而 LDAP 条目的专有名称 (DN) 标识了该条目在 DIT 中的位置。
由于 virtual member manager 需要使用现有的 LDAP 目录(同时对其进行读写操作),virtual member manager 层次结构是实体的分层结构化。此分层结构尽可能地反映了 LDAP DIT 结构。这使 virtual member manager 能够使用各种操作(如创建)将条目置于 LDAP 目录,并顾及到已建立的现有 DIT 结构。
Virtual member manager 分层结构还为 virtual member manager 提供分层名称空间。采用 LDAP 目录的理念,virtual member manager 分层名称空间中的每个名称均采用与 LDAP DN 相同的格式。在 virtual member manager 中,DN 称为 uniqueName。每个 uniqueName 唯一标识了 virtual member manager 中的一个实体,但 uniqueName 不是静态的(可以更改),并且可以重复使用。因此,uniqueName 在某个时间点(而非随时间推移)只能唯一标识一个条目。
如果 virtual member manager 同时与多个存储库一起使用,那么将在多个存储库之间分配 virtual member manager 层次结构,以便不同存储库的 uniqueName 不会发生冲突。
例如,virtual member manager 配置了三个存储库,其中两个为 LDAP,一个为数据库。LDAP 目录具有图中所示的 DIT 结构。图中还显示了相应的 virtual member manager 层次结构:
图 1. Virtual member manager 层次结构
Virtual member manager 层次结构的顶部是一个虚构的根,并未举例说明。根下方的条目映射到一个或多个主存储库。
注: 属性扩展存储库不被认为是主存储库。
主存储库中的条目位于分配给存储库的相应条目的下方。如果存储库不具有明确的结构(如 LDAP DIT),那么存储库适配器须负责执行任何需要的转换。例如,图中的数据库存储库可能具有一个平展的名称空间(例如,其条目具有 1-100 的主键)。数据库存储库适配器负责将 virtual member manager uniqueName 转换成数据库可以理解的主键。
Virtual member manager 提供了称为领域的构造,其包含 virtual member manager 层次结构分区内储库中的所有条目或条目的子集。使用先前示例,dc=comA,dc=com 被视为一个领域。
如果要通过 virtual member manager 创建条目,那么调用者可以有选择地在 virtual member manager 层次结构中指定要在其中创建新条目的父条目。如果未指定父条目,将使用缺省父代(可以为每个领域进行配置)。在 virtual member manager 中,可以为每个领域中的每个实体类型配置缺省父条目。
Virtual member manager 层次结构中虚构根下的条目可以在配置期间进行定义,也可以在运行时以编程方式创建。
注: 这些条目可能不会与概要存储库中的真正条目相对应。例如,该层次结构中的条目 o=comC 可能不会与 company C 的概要存储库中的真正条目相对应。
列举的方案表示,如果多个存储库具有名称相同的条目(例如,两个不同的 LDAP 目录各自具有名为 o=USdiv 的条目),并且客户希望直接在 virtual member manager 层次结构中的根下配置这些条目,那么必须更改这些条目以具有唯一的名称。例如,其中一个具有 o=USdiv 条目的 LDAP 目录可以将该条目映射到 virtual member manager 层次结构中的 o=USdiv 条目。但是,另一个具有 o=USdiv 条目的目录必须映射到 virtual member manager 层次结构中具有类似 o=USdivision 名称的条目。
注: o=USdivision 是在 virtual member manager 中配置的 uniqueName,它不会作为真正的条目存储在 LDAP 目录中。
如果 virtual member manager 仅配置了一个存储库,那么该存储库将占用整个 virtual member manager 层次结构。
为利用 LDAP DN(对于遵循利用 Internet 域名的 RFC 2247 标准的 DN)潜在的全局唯一本质,virtual member manager 支持将 dc=com 作为 virtual member manager uniqueName 的一部分(即使 dc=com 不标识 virtual member manager 中的条目)。
Virtual member manager 层次结构与 virtual member manager 的关系如同 DIT 与 LDAP 的关系一样。但是,要记住以下这些要点:
- Virtual member manager 层次结构可能看起来与 LDAP DIT 完全相同,但 virtual member manager 层次结构并不是 LDAP DIT。它会映射到 LDAP DIT,并且就 virtual member manager 中的 uniqueName 而言,虽然它看起来与 LDAP DN 非常相似,但其并非 LDAP DN。即使 virtual member manager uniqueName 和 LDAP DN 对于 virtual member manager 的某些部署恰好具有相同的值,也不保证二者相同。
- 如果在 virtual member manager 下配置了多个主存储库,那么 virtual member manager 层次结构会影响条目的存储位置,即使用了哪个存储库。它还会影响条目在存储库中的实际位置(由存储库适配器决定)。
- 对于某些部署而言,即使 virtual member manager 层次结构恰好看起来像一个有意义的组织结构,但它也并不意味着反映了有意义的组织结构。对于 virtual member manager 部署,可能有相当多不同的组织结构。例如,一家公司可能会根据功能报告结构组织其实体,也可能会根据区域报告结构组织其实体。另一家公司可能会为了执行指定管理而组织其实体。由于需要不同的组织结构,virtual member manager 层次结构只能是单个组织结构的有意义的组织结构。如果使用多个存储库和结构,virtual member manager 将无法表示有意义的组织结构。
- Virtual member manager 层次结构可能无法统一。置于 virtual member manager 层次结构中的条目在其放置方面可能无法遵循统一的方法。Virtual member manager 层次结构可根据条目的类型将其置于该层次结构的一个分区中,并根据条目所属的组织将其置于该层次结构的另一个分区中。
- Virtual member manager 层次结构和底层 LDAP DIT 中的条目无需采用一对一的方式进行映射。存储库适配器可以执行转换,以将底层存储库中的多个条目结合成由 virtual member manager 显示的单个条目,或将底层存储库中的一个条目划分成由 virtual member manager 显示的多个条目。
- 实体上的父代和子代参考指的是 virtual member manager 层次结构(而非底层存储库的层次结构)中的父条目和子条目。Virtual member manager 将大部分解析父条目和子条目的工作指定给适当的存储库适配器。
- LDAP 支持许多不同的 DIT 结构,而 virtual member manager 仅支持代表 DIT 结构。