现有的关系型数据库存在的问题是,在操作数据过程中,需要频繁的进行数据类型的验证和事务的完整性的确认
,导致系统整体的性能降低。
目录服务的推出主要是解决上述数据库中存在的问题。目录的数据类型主要是字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),一般不支持通用数据库中针对大量更新操作需要的事务回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。
LDAP目录中的信息是是按照树型结构组织,具体信息存储在条目(entry)的数据结构中。条目相当于关系数据库中表
的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute),DN是用来引用条目的,DN相当于关系
数据库表中的关键字(PrimaryKey)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的
字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数
据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进
行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据
库。
openLDAP 下载地址(http://www.userbooster.de/download/openldap-for-windows.aspx )
按照提示 一直 next ,直到安装完成。
安装完成后,在系统服务中,找到 OpenLDAPService,先停止服务,再把启动类型修改成手动,便于自己的测试。
安装目录:D:\Program Files (x86)\OpenLDAP
编辑文件:D:\ProgramFiles (x86)\OpenLDAP\slapd.conf 找到如下内容:
suffix "dc=maxcrc,dc=com"
rootdn "cn=Manager,dc=maxcrc,dc=com"
修改成:
suffix "dc=micmiu,dc=com"
rootdn "cn=Manager,dc=micmiu,dc=com"
打开控制台,切换到openLDAP安装目录下,启动openLDAP
新建一个文件:D:\Program Files (x86)\OpenLDAP\mydemo.ldif ,内容如下:
dn:dc=micmiu,dc=com objectclass: domain objectclass: top o: Michael Blog dc: micmiu dn:ou=Developer,dc=micmiu,dc=com objectclass: organizationalUnit ou: Developer description: Container for developer entries dn:ou=Tester,dc=micmiu,dc=com objectclass: organizationalUnit ou: Tester description: Container for test entries dn:uid=Michael,ou=Developer,dc=micmiu,dc=com uid: Michael objectClass: inetOrgPerson mail: [email protected] userPassword: 111111 labeledURI: http://www.micmiu.com sn: Sun cn: Michael Sun dn:uid=Miumiu,ou=Tester,dc=micmiu,dc=com uid: Miumiu objectClass: inetOrgPerson userPassword: 111111 labeledURI: http://www.micmiu.com sn: Wu cn: Miumiu Wu
tips:格式要严格,每行的开头和末尾不能有空格
然后在控制台中切换到openLDAP安装目录下执行ldapadd命令:
ldapadd -x -D "cn=Manager,dc=micmiu,dc=com" -w secret -f ./mydemo.ldif
参数说明:
因为本机安装过oracle,而Oracle自带安装了LDAPclient的一些常用命令,其中就包括ldapadd 。如果没有”ldapadd“这个命令,还可以用它自带的命令“slapadd”代替导入数据文件。不过要注意的是:和ldapadd命令不同的是:执行slapadd命令前需要先停止之前启动的 slapd 服务(打开服务确定停止了该服务),然后在控制台中切换到openLDAP安装目录下执行命令:
slapadd -v -l ./mydemo.ldif
ldapadd 和slapadd 的差异:
网上搜索到一个客户端:LdapBrowser282 附件提供相关下载:LdapBrowser282.zip
下载解压后直接双击:lbe.bat 文件即可运行。
上面的输入的密码就是之前安装过程中的那个密码(如果自己没有修改过)
建立好connect后,可以正确查询到之前添加的相关信息。
在实际应用中我们经常会碰到二级域名,类似:app1.micmiu.com、app2.micmiu.com,那么对应到LDAP中的DC就是多级,这时我们ldif文件又是如何配置呢?下面将给出个示例演示,新建一个文件:D:\ProgramFiles (x86)\OpenLDAP\myappuser.ldif ,内容如下:
dn:dc=app1,dc=micmiu,dc=com objectclass: domain o: Michael Demo dc: app1 dn:dc=app2,dc=micmiu,dc=com objectclass: domain o: Michael Demo dc: app2 dn:ou=Demo,dc=app1,dc=micmiu,dc=com objectclass: organizationalUnit ou: Developer description: Container for Demo entries dn:ou=Demo,dc=app2,dc=micmiu,dc=com objectclass: organizationalUnit ou: Developer description: Container for Demo entries dn:uid=michael,ou=Demo,dc=app1,dc=micmiu,dc=com uid: admin objectClass: inetOrgPerson mail: [email protected] userPassword: 111111 labeledURI: http://www.micmiu.com sn: Sun cn: Michael Sun dn:uid=hazel,ou=Demo,dc=app1,dc=micmiu,dc=com uid: user objectClass: inetOrgPerson userPassword: 111111 labeledURI: http://www.micmiu.com sn: Wu cn: Hazel Wu dn:uid=michael,ou=Demo,dc=app2,dc=micmiu,dc=com uid: admin objectClass: inetOrgPerson mail: [email protected] userPassword: 111111 labeledURI: http://www.micmiu.com sn: Sun cn: Michael Sun dn:uid=hazel,ou=Demo,dc=app2,dc=micmiu,dc=com uid: user objectClass: inetOrgPerson userPassword: 111111 labeledURI: http://www.micmiu.com sn: Wu cn: Hazel Wu
tips:注意dc的对应关系,如下图:
然后在控制台窗口中执行ldapadd命令:
ldapadd-x -D "cn=Manager,dc=micmiu,dc=com" -w secret -f ./myappuser.ldif
客户端工具中可以查询到相关信息: