LDAP是什么?

要理解什么是LDAP?对于新手其实是挺不容易的。当时我也看了很多的解释,查了很多的文档,也是云里雾里,弄不清楚。在这里给大家稍微捋一捋。

首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。

那么:AD又是什么呢?

暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LDAP理解成存储数据的数据库)。像其它数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。

而我们通常说的LDAP是指运行这个数据库的服务器。

可以简单理解AD =LDAP服务器+LDAP应用。

那么:LDAP这种数据库又有什么用呢?

我们知道,像MySQL这种数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是树结构的,数据存储在叶子节点上。看看下面的比喻:

假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!

就这样就可以描述清楚“树结构”上的一条记录了。

简单说一下:LDAP里如何定义一个记录的位置?

树(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
苹果(cn=redApple)

好了,redApple的位置出来了:

dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=ljheee

其中dn标识一条记录,描述了一条数据的详细路径。

咦!有人疑问,为什么ou会有多个值?你想想,从树根到达苹果的位置,可能要经过好几个树杈,所有ou可能有多个值。关于dn后面一长串,分别是cn,ou,dc;中间用逗号隔开。

总结一下LDAP树形数据库如下:

  • dn :一条记录的详细位置
  • dc :一条记录所属区域 (哪一颗树)
  • ou :一条记录所属组织 (哪一个分支)
  • cn/uid:一条记录的名字/ID (哪一个苹果名字)

LDAP目录树的最顶部就是根,也就是所谓的“基准DN”。

为什么要用LDAP目录树来存储数据?用MySQL不行吗,为什么非要搞出一个树形的数据库呢?

这是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树)。在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找。

把它与传统的关系型数据库相比,LDAP除了快速查找的特点,它还有很多的运用场景,比如域验证等。

在PHP编程中,我们可以用Mysqli或PDO模块来操作MySQL数据库,进行对数据的增删改查。同样,LDAP树形数据库,也可以通过这种方式(直接使用PHP LDAP模块);

LDAP数据库展示数据也是树形的,如下图是Java用ApacheDirectoryStudio连接的LDAP服务器:

我们可以把ApacheDirectoryStudio看做是连接LDAP数据库服务器的界面化的client,相当于mysql的Navicat、WorkBench。

同样:我们都知道PHP中mysql也可以用phpmyadmin基于浏览器来操作数据库。LDAP也可以,只不过用的是phpLDAPadmin。

现在你是否对什么是LDAP有一个大致的了解了呢?

总结:

通俗的来讲,LDAP就是一个类似于“目录服务”的特殊数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。它是动态的,灵活的,易扩展的。类似于:人员组织管理,电话簿,地址簿…….等等。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?