# ldb

ldb is a LDAP-like embedded database. It is not at all LDAP standards compliant, so if you want a standards compliant database then please see the excellent OpenLDAP project.

What ldb does is provide a fast database with an LDAP-like API designed to be used within an application. In some ways it can be seen as a intermediate solution between key-value pair databases and a real LDAP database.

ldb is the database engine used in Samba4.

## Features

The main features that separate ldb from other solutions are:

- Safe multi-reader, multi-writer, using byte range locking
- LDAP-like API
- fast operation
- choice of local tdb or remote LDAP backends
- integration with talloc
- schema-less operation, for trivial setup
- modules for extensions (such as schema support)
- easy setup of indexes and attribute properties
- ldbedit tool for database editing (reminiscent of 'vipw')
- ldif for import/export

## Documentation

Currently ldb is completely lacking in programmer or user documentation. This is your opportunity to make a contribution! Start with the public functions declared in ldb.h and the example code in the tools directory. Documentation in the same docbook format used by Samba would be preferred.

## Discussion and bug reports

ldb does not currently have its own mailing list or bug tracking system. For now, please use the samba-technical mailing list, and the Samba bugzilla bug tracking system.

## Download

You can download the latest release either via rsync or anonymous svn. To fetch via svn use the following commands:

      svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/ldb ldb
      svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb tdb
      svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/talloc talloc
      svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/replace libreplace

To fetch via rsync use these commands:

      rsync -Pavz samba.org::ftp/unpacked/ldb .
      rsync -Pavz samba.org::ftp/unpacked/tdb .
      rsync -Pavz samba.org::ftp/unpacked/talloc .
      rsync -Pavz samba.org::ftp/unpacked/libreplace .

and build in ldb. It will find the other libraries in the directory above automatically.

Andrew Tridgell
ldb AT tridgell.net