看到几篇介绍LDAP的好文章,任何对于LDAP持有兴趣,却不是高手的人都需要看看(注意这里LDAP和Directory姑且算作一个意思,严格的说, Directory是目录服务,LDAP是访问这个目录服务的协议,看客自行理解就行了):
- LDAP是什么东西,我需要它么?
- 我需要LDAP还是数据库?
- LDAP精炼总结
本质上来说, LDAP适合层次结构,并且特别注重读取,查找速度,对写速度要求不是特别高的数据存储. 它有几个特征:
- 超快的读取速度
- 相对静态的数据, 这些数据的更新不能太频繁, 例如存储用户的电话号码(不能老改吧)
- 分布式. 分布式在这里可以有两种意思,第一种就是本身存储的数据可以分布在多个地方, 另外一种是将特定数据和应用解耦,这样能够成为单点登陆的基础.比如公司有好多需要验证身份才能使用的应用, 每个应用应该把验证独立解耦,交给一个中心化的地方来验证, 那么就有可能实现单点登陆, 这个验证(比如用户名,密码,权限)可以使用LDAP和应用解耦.
- 层次结构, 数据具有层次的结构,能够用层次结构表明数据的组织和关系
- 面向对象的, 在LDAP中的元素是对象化的
- 标准化的模式, 通过模式,你可以定义存储数据的类和属性.
- 支持多值属性
- 支持多个主动复制, 允许同时对多个LDAP服务器进行数据镜像
那么,大家都拿LDAP干什么呢? LDAP在三个方面非常流行:
- 用于用户的验证,想象一下,如果每个应用都需要自行进行设计用户表结构和验证的痛苦.
- 用于用户的授权
- 用于存储用户信息, 例如姓名,电话,地址,爱好等等. 这些信息通常每个应用都需要, 可以让他们共享这个资源.
什么情况下要用数据库,而不是LDAP?
- 数据经常变化, 比如银行账户中的数据
- 数据需要严格的事务处理保证原子性和一致性
- 数据的写和读取查找一样重要或者更重要