我目前正在研究在Active Directory中使用自定义字段来存储每个用户在我们的域networking中的信息的可能性/可行性,但是对于自定义字段本身有几个问题,即:
编辑:在我知道你在谈论Exchange之前写下这个答案,所以它更多的是关于AD。
是的,有限制。 您的第一个考虑可能是您要使用的属性没有编入索引。 这与点击checkbox更改一样简单。 为属性build立索引会使涉及该属性的查询更快,但要以数据库和复制大小为代价。
其次,您的自定义属性可能不会复制到全局编录。 这可能是一个问题,如果你有很多域,你可能需要从另一个域访问这个信息。 这也很容易解决 ,但同样要注意的是,您要添加复制负载。
AD架构中已经有很多属性没有被使用。 也许你可以重新调整他们中的一些。 例如,允许Linux计算机joinAD域的类似/ Powerbroker和Centrify客户端…不需要AD模式扩展,因为这些客户端使用AD中预先存在的属性来存储特定于Unix的信息。
是的属性有一个设定的大小限制,并且每个属性的限制是不同的。 不只是大小限制,而且它们也可以是不同types的数据。 一个多值string,例如。 每个属性还可以具有特定的允许范围,安全描述符等。这些约束作为模式的一部分被固定。 这里是 Active Directory属性的参考 …信息有点老,但想法是一样的。 你有链接的属性,ANR(不明确的名称parsing)属性等,所有行为有点不同,有不同的目的。
作为最后一条build议 – 考虑对AD模式所做的任何更改是永久性的和不可逆的 。 所以只有经过多方面的考虑和规划才能做到。
是否有任何已知的读/写性能问题(从C#)用于此目的?
多值属性提供比使用单值属性更好的查询性能,并使用分隔符分隔多个信息。 就像SQL Server一样,如果一个查询通配符的前缀是*,那么性能会很差。 查询非通配符值或通配符后缀值,并且它与多值属性中的某个值匹配时,查询将成功。 有些人不知道这个优点。
属性也可能被编入索引,您应该考虑这样做。
如果您有多个域,并且需要除具有该属性的对象之外的其他域中可用的信息,则可能需要将该属性添加到全局目录(有时称为“部分属性集”或“已过滤属性集”)。

在Active Directory中进行索引
创build更有效的Microsoft Active Directory应用程序