我很想知道用什么类型的物理结构来存储像Active Directory这样的LDAP数据库。
数据库表示为树结构,其中每个节点都有一组属性和可选子节点。节点具有类类型,该类类型定义应用哪组属性。我认为在这方面它类似于XML文档。
属性数量为数百,如果不是数千。这些属性也不一定是固定大小的,例如MultiSz类型;而且至关重要的是,属性和类是可扩展的。
我还注意到数据库是关系型的,例如在memberOf
属性和组之间保持双向参照完整性。
显然你不能将它存储在RDBMS中 - 行长度限制(并且需要运行ALTER TABLE)意味着属性系统不适合,但是如何在磁盘上构建像这样的数据库?
答案 0 :(得分:1)
LDAP是一种协议,没有规定数据的存储方式。
数据库应该有分层方法。 LDAP还需要能够执行诸如value,substring和presence之类的索引。
条目,包含包含值的属性。
LDAP提供的参照完整性没有。 某些LDAP服务器实现可能为memberOf和member提供值,通常是LDAP服务器实现(例如AD)的后台服务,它创建memberOf的伪值。 (它实际上并不在底层数据库中。)
是的,您可以将数据存储在关系数据库中。属性值可以作为条目上属性名称的关键关系来完成。
至于具体的AD,this may provide a place to start。