一、什么是LDAP

LDAP(Lightweight Directory Access Protocol),轻型目录访问协议,是一个为查询、浏览和搜索而优化的数据库存储协议,该协议以树状结构存储数据,类似文件目录一样,LDAP只是一个协议,没有涉及到如何存储数据,因此,需要后端数据库组件来实现。与传统的关系数据库不同,它有优异的读写性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。常与第三方系统相结合,做到账号互通,实现网站/系统的登录,以及用户权限统一管理。

1、LDAP特性

  • LDAP用树形结构表示,因此不支持SQL语句
  • LDAP进行读优化,写很慢
  • LDAP提供静态数据的快速查询
  • Client/Server模型,Server用于存储数据,Client提供操作信息树的工具
  • LDAP是一种开放的,跨平台的Internet协议

2、相关概念

  • 目录树:在LDAP中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
  • 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)
  • 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承
  • 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

ldap 测试 ldap性能_ldap

LDAP中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值。

3、存储方式

相对于MySQL数据库,数据按记录一条条记录存在表中,而基于LDAP树形结构存储的数据库,数据存储在叶子节点。为了方便理解,以下面示例进行比喻讲解:

假设你要树上的一个苹果,你应该怎样告诉园丁它的位置呢?当然首先要说明是哪棵树(dc,相当于MySQL的DB),然后从树根到那个苹果所经过的所有“分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。如:最高那棵树的东边分叉上的靠西边分叉的北边分叉上那个红红的苹果。

用LDAP定义该位置即:

树(dc=HighestTree)

分叉(ou=north,ou=east, ou=west)

苹果(cn=RedApple)
dn: cn=RedApple, ou=north,ou=east, ou=west, dc=HighestTree

其中,dn(Distinguished Name):一条记录的位置(唯一),cn(Common Name):公共名称,一条记录的名称,ou(Organization Unit):组织单元,dc(Domain Component):域名的部分,其格式是将完整的域名分成几部分。

4、LDAP编程操作

我们可以利用JDBC操作MySQL数据,进行增删改查,同样,LDAP树形数据库也可以通过JDBC方式;此外推荐使用JNDI(Java Naming and Directory Interface )方式,将树形结构看做目录,树杈相当于目录层级。

5、功能模型

LDAP中共有四类10中操作:

  • 查询类操作:搜索、比较;
  • 更新类操作:添加条目、删除条目、修改条目、修改条目名;
  • 认证类操作:绑定、解绑;
  • 其他类操作:放弃、扩展。