Chinaunix

标题: ldap怎么又扯上拉数据库拉? [打印本页]

作者: jayli426    时间: 2005-10-21 16:59
标题: ldap怎么又扯上拉数据库拉?
在LDAP中我们总是能看到很多的数据库的字眼
这就是我始终奇怪的地方, 我们用LDAP的目的就是为拉
发挥它的查询优势,而放弃数据库
,
可是在实际的LDAP使用中,数据库(至少这个名词是出现频繁的)
例如在Sun 的Directory server中就有什么后缀数据库的说法
还有什么ldbm数据库插件,总之脑袋就是晕晕的.
哪位大虾能解释这其中的奥妙吗?
作者: bon-joui    时间: 2005-10-23 15:46
标题: ldap怎么又扯上拉数据库拉?
据本大虾的见解:LDAP常被认为是一个数据库的意思是:它实际用到了数据库里面很多的理论,在openldap里面用的数据库是bokery(sleepingcat..具体名字不记得了),只所以它查询很快,是因为它是一个轻量级的数据库,跟其他的还是有不小的差别,但是它也是作为数据存储的工具。
作者: jayli426    时间: 2005-10-24 12:50
标题: ldap怎么又扯上拉数据库拉?
这是之前在sun网站上的小讨论,大家看看,有没有求同存异之处,
不妨发表一番意见

Directory sever数据组织方式不是LDAP吗,就是为了为了区别数据库呀?
我知道在备份时要用到这些东西
有一个命令db2ldif与ldif2db
就是与这个数据库有关
我实在是不董,有LDIF文件就够拉,把它作为model,directory server作为controller与view就够拉
干吗还要扯进来一个database,好像也起拉model的作用,让人觉得好多余哦
有哪位好心的大虾能小作解析呢?小弟这箱有礼拉

这是老外习惯的问题,他们把所有存储数度的东西都叫database,hosts文件也叫database。不过你也应该反省一下自己,为什么database就必须是oracle呢,能存储数据完全可以叫database啊,从这个意义上说,老外是对的。

首先谢谢您的指点,可是能麻烦您可以对我第二个问题在稍作解释吗?
ldif文件本身就是实际的存储数据的东西拉
教database何其多余
或者说换一种理解:就像oracle
实际存储的的还是data file(物理上)
但是放在oracle中,它就叫database
实际上这只是oracle组织数据的一种方式而已
老大,这种理解对否

对啊
作者: py    时间: 2005-10-25 09:17
标题: ldap怎么又扯上拉数据库拉?
原帖由 "jayli426" 发表:
是在实际的LDAP使用中,数据库(至少这个名词是出现频繁的)
例如在Sun 的Directory server中就有什么后缀数据库的说法
还有什么ldbm数据库插件,总之脑袋就是晕晕的.
哪位大虾能解释这其中的奥妙吗?

我们使用LDAP并不是抛弃"数据库",到任何时代的任何存储数据的方式,都不可能脱离数据库,LDAP也是一样,LDAP即Lightweight Directory Access Protocol.显然它是一个协议,不是一个数据库.它只是规定了数据的存储格式,定义了一些相关的标准. 后端的数据库可以是平面的文本数据库,BDB/LDBM等,或是传统的关系型数据库.
作者: bjldlee    时间: 2005-10-25 16:43
标题: ldap怎么又扯上拉数据库拉?
PY说的对!
作者: jayli426    时间: 2005-10-26 10:42
标题: ldap怎么又扯上拉数据库拉?
这个问题是否能这样理解,ldif文件是一种物理存储的形式
数据库是一种内部组织数据的方式,或者说是一种逻辑存储的方式
而ldap仅仅是一种前端的访问方式

那么"LDAP即Lightweight Directory Access Protocol.显然它是一个协议,不是一个数据库.它只是规定了数据的存储格式,定义了一些相关的标准."
这个话是否正确呢,它规定了数据的存储格式拉吗?

这样感觉ldap又非前端的,又与后端扯上去拉,又有拉些"物理存储"的意味
还有后端如果用的是"关系数据库",是否能发挥LDAP的优势呢?
至少每个ldap请求都要转换为对关系数据库的请求
那么一个查询动作:
查询动作->;ldap操作->;关系数据库操作
那还不如
查询动作->;关系数据库操作 快
这样理解对吗?

不要嫌我罗嗦啊,大虾啊,哈哈
作者: py    时间: 2005-10-26 11:14
标题: ldap怎么又扯上拉数据库拉?
如果说LDAP"规定了数据的存储格式"是不合适,LDAP并没有规定具体的后端数据库的形式,事实上LDAP支持很多种后端数据库类型.
说LDAP"是一种前端的访问方式"这个说法更准确些,但我觉得还不是最准确的说话,不过这样理解也就可以了.
最后说后端是"关系数据库",一般不推荐后端使用关系数据库,back-sql目前仍然处在试验阶段(2.3.11),用关系数据库做后端在一些情况下还是可能出问题,并且性能要比BerkeleyDB差很多.
作者: jayli426    时间: 2005-10-26 13:04
标题: ldap怎么又扯上拉数据库拉?
其实我是这个意思:
既然有拉ldif文件,那么一个Directory server就可以读取这个ldif文件,然后构筑对应的DIT
实在不必有将ldif读入后够成一个数据库,感觉上就是多拉一步
即ldif文件->;内部数据库->;DIT
ldif文件->;DIT难道不更好吗?至少效率上要快一些吗?
这个理解应该是不对的,但是内部数据库的优势又在哪里呢?
比方说sun one directory server有什么"用户数据库",ldbm这些概念 联想到XML文件,我们不是就可以直接读来构筑一个树形结构的东东吗?当然我们并没有XML server这样的东东,
如果我们有一天要开发xml server这样的东东(会有这样的东东吗?哈哈),
是否真的就象"我们使用LDAP并不是抛弃"数据库",到任何时代的任何存储数据的方式,都不可能脱离数据库"
这样子呢?
说到这里,感觉自己的思路都有些乱拉,还忘大虾斧正一番
作者: py    时间: 2005-10-26 13:55
标题: ldap怎么又扯上拉数据库拉?
以文本的方式(例如ldif文件那样可读的)构件的数据库效率会很低,BDB是二进制文件存储数据的.
作者: bjldlee    时间: 2005-10-26 15:58
标题: ldap怎么又扯上拉数据库拉?
原帖由 "py" 发表:
如果说LDAP"规定了数据的存储格式"是不合适,LDAP并没有规定具体的后端数据库的形式,事实上LDAP支持很多种后端数据库类型.
说LDAP"是一种前端的访问方式"这个说法更准确些,但我觉得还不是最准确的说话,不过这样理解?.........



我所遇到的LDAP都是后端用关系型数据库的,例如ORACLE的OID后台就是用的ORACLE的数据库,OPENLDAP后端用的是MYSQL数据库(当然OPENLDAP的后端也支持其他数据库,但是我本人没有弄过)。

除了关系型数据库之外,还有其他的数据库吗?
作者: py    时间: 2005-10-26 16:32
标题: ldap怎么又扯上拉数据库拉?
BerkeleyDB
可以做个测试,用关系型数据库做back-end会比用BerkeleyDB慢上至少几倍,oracle也一样.在数据量大的时候LDAP+BerkeleyDB能比oracle快上一个数量级,但用oracle做后端就体现不出来了
作者: bjldlee    时间: 2005-10-26 17:00
标题: ldap怎么又扯上拉数据库拉?
BerkeleyDB也属于关系型数据库吗?

现在比较火的大型关系型数据库是postgresql,据说性能可以抵的上ORACLE。

BerkeleyDB还是第一次听说。
作者: jayli426    时间: 2005-10-26 20:16
标题: ldap怎么又扯上拉数据库拉?
如果我门后台使用关系型数据库.那么我们是否也能发挥关系型数据库的好的些性能与事务处理的优势呢?
但是"
I say that LDAP doesn't have support for transactions and other features of databases, I mean that the protocol doesn't have the messages that you would need to take advantage of these features (remember, it's lightweight) and doesn't require that the backend data store provide these features.
"
from<<LDAP System Administration - OReilly By E.T.>;>;
它意思就是说后端的(数据库)优势,ldap这个前端怎么也沾不上光?
只是因为它是"lightweight"
这个轻量到是真是别有韵味啊?我是有些糊涂拉
这个轻量好像真的是"丢盔弃甲啊"(比喻不好 )不要笑我
我们后端用(关系)数据库,总是为了发挥他优势把,前面说那个berkley的 DB是
二进制的,我也不知它是否是关系型,总而言之,它总是能提高效率
那么关系型数据库的后端呢?他的优势在哪里呢?
难道一用上关系型数据库的优势,ldap就重起来拉吗?
这就是机制决定的吗?
作者: y2k005    时间: 2005-10-26 21:44
标题: ldap怎么又扯上拉数据库拉?
LDAP is a protocol.
LDAP server using database as the backend storage method.
Different vendors may use different kind of backend database to store data.

Vendors have to follow LDAP protocol at front-end, but have total freedom of implementation at backend.

The database used by LDAP should be accessed using LDAP protocol (like ldapsearch, ldapmodify, ...). Someone may write an interface to allow SQL query to LDAP database, but that is another story.

SUN/iPlanet LDAP server using "sleepycat" as its backend database.
What is special of "Sleepycat" is that it is an embedded database.
That is why when you run iPlanet LDAP server you can't see a process directly related to "Sleepycat".
LDAP server implementation does not have to use "Sleepycat", and "Sleepycat" is not only used in LDAP, but also used in other applications.

To get good performance from LDAP server, you do need have general knowledge in database (such as indexing, partition, query optimization...).
Part of work for LDAP Admin is just like a DBA.

idif file is a dump from LDAP database.

Relational database accessed by SQL (Oracle, Sybase, ...) is just one of several kinds of database.
作者: py    时间: 2005-10-27 09:30
标题: ldap怎么又扯上拉数据库拉?
这段怎么这么眼熟啊,呵呵,大家看的书都差不多
作者: springwind426    时间: 2005-11-14 21:40
我的理解:
LDAP只是描述信息存储的方法的协议,真正的信息仍然是存储在数据库中的。
idif只是信息的定义文件,并不能直接使用,必须将它导入数据库中才能供查询用。
比如ldapcat就可以将数据库中的信息导出。ldapadd就可以将这些信息导入数据库中。
作者: antimatter    时间: 2007-01-16 15:45
原帖由 py 于 2005-10-27 09:30 发表
这段怎么这么眼熟啊,呵呵,大家看的书都差不多


请问py看的是哪一本书?谢谢!
作者: jayli426    时间: 2007-01-17 17:54
an embedded database是否是关系数据库??或者这样问就是错误的
那一般商用,例如oracle 和某个an embedded database区别在哪里??
作者: py    时间: 2007-01-17 22:01
bdb应该算是平面数据库吧,二维的,id2entry
作者: py    时间: 2007-01-17 22:02
原帖由 antimatter 于 2007-1-16 15:45 发表


请问py看的是哪一本书?谢谢!

。。。。两年了,我已经不记得那段话是哪本书上的了。我看的书比较杂
作者: soway    时间: 2007-01-19 15:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 相信一步一生    时间: 2011-12-23 20:10
PY,有个问题想请教:如图
怎样才能读出userpassWord的属性值?用Java

4.jpg (44.12 KB, 下载次数: 31)

4.jpg

作者: 相信一步一生    时间: 2011-12-23 20:15
py 发表于 2005-10-26 13:55
以文本的方式(例如ldif文件那样可读的)构件的数据库效率会很低,BDB是二进制文件存储数据的.

PY,有个问题想请教:如图
怎样才能读出userpassWord的属性值?用Java

4.jpg (44.12 KB, 下载次数: 29)

4.jpg

作者: py    时间: 2011-12-25 10:39
相信一步一生 发表于 2011-12-23 20:10
PY,有个问题想请教:如图
怎样才能读出userpassWord的属性值?用Java

userpassword和其他的attributeType没有本质区别,所以你怎么读其他的属性值,就怎么读userpassword

由于userpassword的加密方式不同,读出的内容可能会不同,但肯定可以读出来。另外,要检查ACL的设置,看看userpassword是不是被设置成了只允许auth

JAVA的LDAP API不了解。Perl的可以看这里http://search.cpan.org/~gbarr/perl-ldap-0.43/lib/Net/LDAP.pod




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2