我了解 LDAP 是用于与 OpenLDAP 等活动目录系统通信的协议。
我也了解 OpenLDAP 是一种将对象存储在树中的数据库。
我的问题是:我应该何时使用(如果有的话)LDAP 而不是关系数据库。
5 回答
关系数据库和基于 LDAP 的数据库解决不同的问题。LDAP 非常专注于快速读取、慢速写入,它是分层的、分布式的并且基于权限(如 DNS)。如果您的数据不符合此假设,则 LDAP 不是正确的选择。
LDAP 可以很好地描述实体的层次结构,例如公司地址簿。虽然关系数据库需要每个部门访问包含所有地址的大型全局表,但 LDAP 解决方案允许将每个部门的地址簿的职责分配给部门本身,同时保持它可供公司中的任何其他人查询。
LDAP 允许您存储任何类型的信息。地址簿是最典型的例子,但所有可以作为分层的、以权威为中心的数据集的东西都可以存储在 LDAP 中。另一个例子:假设图书馆是图书馆联盟的一部分,他们想要存储有关他们拥有的书籍的数据。该数据库是分层的(每个图书馆在其边界内都是权威的)并且每个图书馆都独立于其他图书馆。在模式中,您可以存储有关书籍的数据,例如作者、出版年份、标题、isbn 等。
要存储数据,您可以使用特殊的文件格式 LDIF 来表示它,但也存在 API。但是,LDIF 是查看信息的最简单方法。它只是一个纯文本文件。来自维基百科的一个例子
dn: cn=John Doe,dc=example,dc=com
cn: John Doe
givenName: John
sn: Doe
telephoneNumber: +1 888 555 6789
telephoneNumber: +1 888 555 1232
mail: john@example.com
manager: cn=Barbara Doe,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
这描述了一个叫 John Doe 的人的信息。它位于 dc=example、dc=com 的“领域”下,并且有一堆与之相关的其他信息(就像表格行一样)。请注意,层次结构可以(显然)与互联网域相关联,就像在这种情况下一样,但实际上层次结构描述非常灵活。您可以根据国界或公司部门或您喜欢的任何内容组织层次结构。
当您需要管理您拥有的数据域时,您应该使用 LDAP
- 需要减少存储要求的灵活模式。
- 减少写需求,强读需求
- 信息管理和组织的强层次性
- 权威和授权
这篇简洁而漂亮的帖子包含与此场景相关的非常好的信息。
如果进一步感兴趣,您可以在这里更深入地了解,这是上述链接的延续。
LDAP 适用于经常读取而很少写入的数据。例如,LDAP 通常用于存储用户登录或密码信息。
LDAP 是一个集中的用户和帐户管理系统,它还可以存储一些数据字段。
您还可以使用 LDAP 作为查找寻址机制来检索资源,例如数据库连接或远程服务。
我喜欢 LDAP 的好处是,您可以检索目录/URL 样式的内容。这与必须使用专用查询语言的 RDBMS 完全不同。如果事物以分层方式组织,这通常是有道理的并且是直观的。