additional software to have {{MDB}} support.
OpenLDAP's {{slapd}}(8) {{TERM:BDB}} and {{TERM:HDB}} deprecated database backends
-require {{ORG[expand]Oracle}} {{PRD:Berkeley DB}}.
+require {{ORG[expand]Oracle}}'s Berkeley DB.
If not available at configure time, you will not be able to build
-{{slapd}}(8) with these primary database backends.
+{{slapd}}(8) with these deprecated database backends.
Your operating system may provide a supported version of
-{{PRD:Berkeley DB}} in the base system or as an optional
+Berkeley DB in the base system or as an optional
software component. If not, you'll have to obtain and
-install it yourself.
+install it yourself. Berkeley DB is available from
+{{ORG[expand]Oracle}}'s Berkeley DB download page if required.
-{{PRD:Berkeley DB}} is available from {{ORG[expand]Oracle}}'s Berkeley DB
-download page
-{{URL: http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html}}.
-
-There are several versions available. Generally, the most recent
-release (with published patches) is recommended. This package is required
-if you wish to use the deprecated {{TERM:BDB}} or {{TERM:HDB}} database backends.
-
-Note: Berkeley DB version 6.0.20 and later uses a software license that is
+There are several versions available from {{ORG[expand]Oracle}}.
+Berkeley DB version 6.0.20 and later uses a software license that is
incompatible with LDAP technology and should not be used with OpenLDAP.
Note: Please see {{SECT:Recommended OpenLDAP Software Dependency Versions}} for
H2: LDAP vs RDBMS
This question is raised many times, in different forms. The most common,
-however, is: {{Why doesn't OpenLDAP drop Berkeley DB and use a relational
-database management system (RDBMS) instead?}} In general, expecting that the
-sophisticated algorithms implemented by commercial-grade RDBMS would make
-{{OpenLDAP}} be faster or somehow better and, at the same time, permitting
-sharing of data with other applications.
+however, is: {{Why doesn't OpenLDAP use a relational database management
+ system (RDBMS) instead of an embedded key/value store like LMDB?}} In
+general, expecting that the sophisticated algorithms implemented by
+commercial-grade RDBMS would make {{OpenLDAP}} be faster or somehow better
+and, at the same time, permitting sharing of data with other applications.
The short answer is that use of an embedded database and custom indexing system
allows OpenLDAP to provide greater performance and scalability without loss of
-reliability. OpenLDAP uses Berkeley DB concurrent / transactional
-database software. This is the same software used by leading commercial
-directory software.
+reliability. OpenLDAP uses {{TERM:LMDB}} concurrent / transactional
+database software.
Now for the long answer. We are all confronted all the time with the choice
RDBMSes vs. directories. It is a hard choice and no simple answer exists.
fully managed by the LDAP server-side implementation. However, the database
becomes unusable from SQL. And, thus, a fully fledged database system provides
little or no advantage. The full generality of the database is unneeded.
-Much better to use something light and fast, like Berkeley DB.
+Much better to use something light and fast, like {{TERM:LMDB}}.
A completely different way to see this is to give up any hopes of implementing
the directory data model. In this case, LDAP is used as an access protocol to
{{B:Choice of database backends}}: {{slapd}} comes with a variety
of different database backends you can choose from. They include
-{{TERM:BDB}}, a high-performance transactional database backend;
+{{TERM:MDB}}, a hierarchical high-performance transactional database backend;
+{{TERM:BDB}}, a high-performance transactional database backend (deprecated);
{{TERM:HDB}}, a hierarchical high-performance transactional
-backend; {{SHELL}}, a backend interface to arbitrary shell scripts;
+backend (deprecated); {{SHELL}}, a backend interface to arbitrary shell scripts;
and PASSWD, a simple backend interface to the {{passwd}}(5) file.
-The BDB and HDB backends utilize {{ORG:Oracle}} {{PRD:Berkeley
-DB}}.
+The MDB backend utilizes {{TERM::LMDB}}, a high performance replacement
+for {{ORG[expand]:Oracle}}'s Berkeley DB.
+The BDB and HDB backends utilize {{ORG[expand]:Oracle}} Berkeley DB. These
+backends have been deprecated as LMDB provides significantly higher read
+and write throughput and data reliability.
{{B:Multiple database instances}}: {{slapd}} can be configured to
serve multiple databases at the same time. This means that a single