初识LDAP

Posted vision-xixi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识LDAP相关的知识,希望对你有一定的参考价值。

概念

LDAP(Lightweight Directory Access Protocol)全称是轻量级目录访问协议

  • LDAP目录是一个为查询、浏览和搜索而优化的专业分布式数据库,以树状的层次结构来存储数据
  • 目录服务是由目录数据库和一套访问协议组成的系统,它是基于X.500标准的,但是简单多了并且可以根据需要定制
  • 与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的
  • LDAP是一个轻量级的产品,主要目的是为了查,因此在架构和优化主要是针对读,而不是写。

 

看了概念还是不懂它到底用来干什么的哇?? ?

1、上面说是数据库?以树状的层次结构来存储数据

  LDAP是一个数据库,但是又不是一个数据库(具体是不是我也不是很清楚,可以把它当作一个数据库来理解)。说他是数据库,因为他是一个数据存储的东西。但是说他不是数据库,是因为他的作用没有数据库这么强大,而是一个目录。像是其他数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。最接近生活的一个LDAP例子就是电话簿(黄页)。

2、那LDAP和其他的数据库到底有什么不同呢?

  没错,就是上面说到的以树状的层次结构来存储数据的,像mysql数据库,数据都是按记录一条条记录存在表中,而LDAP数据库,是树结构的,数据存储在叶子节点上。树状怎么体现的呢?就像电话簿的目的是为了查找某个公司的电话,在这个电话簿中附带了一些这个公司的基本信息,比如地址,经营范围,联系方式等,电话簿的组织结构是一条一条的信息组成,信息按照行业,类比进行了分类。每条记录都分成了若干的区域,其中涵盖了我们要的信息。这就是一个Directory。一个树状的结构,每个叶子都是由一条一条的分成若干区域的记录。下面我们在举个栗子来理解一下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标识一条记录,描述了一条数据的详细路径。

3、又有人疑惑了:为什么要用LDAP目录树来存储数据,用MySQL不行吗,为什么非要搞出一个树形的数据库呢?

  • 又回到我们概念中的第四点,LDAP主要目的是为了查而不是写,当然并不是ldap不能写,只是说他的强项不在这里。
  • 有LDAP这是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树)。在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找.
  • 把它与传统的关系型数据库相比,LDAP除了快速查找的特点,它还有很多的运用场景,比如域验证等

 

LDAP树形数据库组织架构

dn :一条记录的详细位置

dc :一条记录所属区域 (哪一颗树)

ou :一条记录所属组织 (哪一个分支)

cn/uid:一条记录的名字/ID (哪一个苹果名字)

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

(一)目录树概念

1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。

2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。

3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。

4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

(二)DC、UID、OU、CN、SN、DN、RDN

关键字

英文全称

含义

dc

Domain Component

域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)

uid

User Id

用户ID songtao.xu(一条记录的ID)

ou

Organization Unit

组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织)

cn

Common Name

公共名称,如“Thomas Johansson”(一条记录的名称)

sn

Surname

姓,如“许”

dn

Distinguished Name

“uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一)

rdn

Relative dn

相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”

以上是关于初识LDAP的主要内容,如果未能解决你的问题,请参考以下文章

ROS+CPP初识

初识UmiJS

初识 HTML5 Video Blob

初识数据库 初识mysql

Dapr初识

初识Kendo