views:

919

answers:

5

We start to use LDAP and I wonder why LDAP is not that popular? I read that it has faster reads than database, however slower writes.

EDIT:

Its the first time i use LDAP and i have been programming in enterprise for sometime now. That is the reason why i thought its not popular, plus i never heard about it at school.

+8  A: 

How do you come to the conclusion that LDAP is not popular? In every larger company I worked for they used LDAP as a way to access the central repository of user information.

The comparison to databases is a little weard. LDAP is a protocol, while a database is term covering a whole bunch of products. Stating that LDAP is faster/slower than a databse is like saying HTTP is faster/slower than a webserver, especially since I'd expect to find some kind of database (often even a relational database) behind every single LDAP repository.

Jens Schauder
Usually LDAP data is stored in a hierarchical db, not a relational db.
AviD
+1  A: 

LDAP is great, its an awesome tool for single sign on and internal tools.

Not sure what you mean about faster reads than a database, it's generally run from a server, and authentication is handled over the wire.

It's by design a write-few read-many system, but it does give you more than just a simple users table in a database, it handles authentication for you, so you can plug it into whatever systems you need.

At work we use it for ssh, NFS, intranet access, internal tools, everything. If you used a DB you would need to replicate the authentication code among lots of different systems.

garrow
+2  A: 

I think your a little off-base on saying it is not popular. If it wasn't popular you probably wouldn't be asking the question. However, I do think its notation and use is a bit complex and creates a high-bar of entry for a relatively simple task and this may have an effect on its adoption rate.

Elijah
Too right about the complexity. Anyone know of any good LDAP references?
Skizz
+7  A: 

LDAP is very popular -- it's the protocol used by Windows Active Directory, which is (an understatement here) fairly widespread.

Roger Lipscombe
+1 (more if I could). AD uses a combination of LDAP and Kerberos. Two things that seem not very widespread until you think about AD.
Adam Hawes
It's not just AD - most network authentication mechanisms are based on both these in one way or another, whether you're based on SunONE, whatever there is in linux, Novell NDS, etc.
AviD
+10  A: 

I think the OP was referring to the use of LDAP-type data (read: hierarchical databases), as a storage mechanism for application data.
While its quite obvious that most network logons are based on LDAP under the covers, it is true that a huge majority of business systems are based on the relational-data model, and very few are based on a hierarchical-data model.

Assuming this is the real question here :), I would provide a few partial answers, that together probably fully answer your question:

  • Complexity and high bar of entry (as @Elijah mentioned)
  • As you mentioned, it's not usually taught in school - and thus is not familiar to many, and therefore not commonly used (Is this recursion, or self-fulfulling prophecy?)
  • Hierarchical datamodels are by design optimized to find specific data, and very costly to write or update new data. Most common business applications are OLTP (transaction) based, and require a large amount of writes (except BI-type apps, will relate to that in a moment).
  • More specifically, hierarchical models are built to find specific elements of data, and not perform JOINs, mass SELECTs, GROUP BYs etc.(I mean this in a logical PoV, regardless of specific context).
  • Most data IS relational, or can fit a relational model most easily. Especially for BI, where you want to see large swaths of data, perform comparisons, etc.
  • Even for data that is not relational, our minds seem to be trained to think "relational-model" easier than hierarchical (though this might be a result of my second point - we were mostly taught this). It's just "easier" to categorize the data in neat rows and columns...
AviD