LDAP与关系型数据库的区别

7

在我绝望而失望地在网上搜索答案后,我来找你了:哪个更快:LDAP还是关系数据库?

我需要设置一个具有用户身份验证和授权的系统。我知道LDAP具有满足这种需求的“结构”,但它真的比MySQL等关系数据库快吗?


这个问题无法回答。性能是实现的特征,而不是模型的特征。此外,我见过LDAP系统在读模式下非常快,但更新目录需要锁定层次结构的根。每当发生这种情况时,事情真的停止了“快速”。 - Erwin Smout
2
Erwin,实际上不是这样的。这个问题肯定是可以回答的——LDAP是一种轻量级二进制协议,而SQL是一种重量级基于ASCII的语言。因此,按设计来说,LDAP的资源消耗要少得多,并且解析和处理速度更快。至于实现方面,OpenLDAP比所有现有的SQL服务器都快几个数量级,特别是对于认证/授权任务,但也适用于任何适合分层数据布局的任务。 - hyc
3个回答

10
为了进行身份验证和授权,我认为LDAP在性能和安装维护的简单性方面提供了最佳组合。作为一种协议,LDAP相当小巧,需要相对较少的网络带宽。小型协议也使得加密传输具有相当高的性能。
此外,LDAP很简单,服务器易于部署,现代专业质量的LDAP服务器提供比关系数据库更令人印象深刻的性能,假设硬件和查询类型等条件相同。
我认为两者都可以在你的情况下使用,但通常LDAP更适合身份验证和授权,因为它简单且维护成本较低。至于性能方面,我正在测试的LDAP服务器每秒提供约28,000次验证,而postgres在相同的硬件上只提供该数字的约42%,尽管很难比较苹果和橙子。
现代专业质量的LDAP服务器还提供极其强大和快速的密码哈希功能,用于安全存储密码 - 以及相对强的可逆块密码(例如AES),如果客户端必须使用SASL的DIGEST-MD5机制进行无密码身份验证,则可以使用该密码。

5
我同意Al的观点,通常很难说哪个更快。这都是情境相关的。
我喜欢在提出这个真理之后,Al提出了一个普遍意见,即LDAP很慢。:) 我离题了...
开玩笑的,关键取决于你要做什么以及目标系统针对什么进行了优化。MySQL/MSFT SQL Server等是通用存储库,您将(倾向于)使用多种查询模式存储规范化的数据。它们在许多层面上都有各种逻辑,以尝试帮助您执行各种类型的查询和计算,并且甚至让您在最佳时机为QP提示一些内容。
LDAP目录的优化方式与此大不相同...例如,它被优化为存储具有特定查询模式(由LDAP RFC指定)的分层组织对象。例如AD很快...非常快。 它被优化用于对象搜索和检索以及相关操作(如身份验证)。
像任何东西一样,你可以使用得好或者用得不好。
除非处于疯狂的规模模式中,否则我认为您可以很成功地使用其中任一种。

0

在我看来,这不是一个真正的问题,因为它总是取决于特定的实现

我只能分享我的经验:LDAP很慢,SQL很快。我使用的是MS SQL 2008,在我的情况下,由于其智能缓存重复查询,它非常快。

但是你需要它非常快吗?基于LDAP的解决方案通常可以更轻松、更好地集成到其他软件和/或局域网基础设施中,当与用户、授权和身份验证一起工作时。


2
你们使用的LDAP实现是什么? - user207421
EJP:Windows Server 上的活动目录。 - Al Kepp
1
我希望在SO这里有一个笑脸反应,没有其他评论。 - Jesús Franco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接