What makes a directory service (Verzeichnisdienst) different from a general-purpose relational database?
A directory is a "phone book": hierarchically structured, optimised for very fast reads, and updated with simple mechanisms without transactions, whereas a relational database is built for complex queries and transactional writes.
| Dimension | Directory service | Relational database |
|---|---|---|
| Mental model | A phone book of people, groups, devices | Tables of related records |
| Structure | Hierarchical tree of entries | Flat tables joined by keys |
| Typical load | Read-heavy: thousands of lookups per write | Mixed reads and writes |
| Updates | Simple, per entry, no transactions | ACID transactions across many rows |
| Storage | Denormalised: everything about an object sits in one entry | Normalised across tables |
The design follows from the use case. A user's name, password hash, e-mail and groups are read at every login, every e-mail address lookup and every permission check, but they change rarely. So a directory gives up multi-row transactions and joins in exchange for fast, simple reads that can be replicated easily to many sites.
Well-known directory services are Microsoft Active Directory (AD) and OpenLDAP; the server software is often just called the "LDAP server" or "LDAP daemon" (slapd in OpenLDAP).
Go deeper:
Directory service (Wikipedia) — how directories differ from relational databases and which implementations exist.
OpenLDAP Admin Guide: Introduction to directory services — "what is a directory service" and when not to use one, from the OpenLDAP project.