LMDB est une bibliothèque de gestion de base de données basée sur un B-tree qui expose l'intégralité de la base via un memory map, restitue les données directement depuis la mémoire mappée sans malloc ni memcpy, et offre des transactions ACID tout en étant très performante et peu consommatrice de mémoire.
La bibliothèque est thread-aware et supporte l'accès concurrent lecture/écriture depuis plusieurs processus et threads grâce à une stratégie copy-on-write et à une structure multi-version : un seul écrivain actif à la fois (écritures sérialisées) tandis que les lecteurs n'utilisent pas de verrous et ne bloquent pas les écrivains.
Contrairement aux loggers ou aux bases append-only, LMDB n'a pas besoin de checkpoints car elle suit et réutilise les pages libres; la map peut être ouverte en lecture seule (par défaut, immunité aux corruptions) ou en lecture-écriture (meilleures performances mais risque de corruption par écritures errantes), et divers flags (MDB_WRITEMAP, MDB_NOMEMINIT, MDB_NOLOCK) modifient le comportement mémoire et de verrouillage.
Des problèmes de lockfile et de sémaphores peuvent survenir, notamment sur BSD où des sémaphores appartenant à un autre utilisateur peuvent empêcher le démarrage et où des lecteurs abandonnés rendent la base rapidement volumineuse ; il est recommandé de vérifier périodiquement les lecteurs obsolètes avec mdb_reader_check ou mdb_stat, d'ouvrir/fermer l'environnement avec l'utilisateur propriétaire des sémaphores, et normalement seul le propriétaire de la base doit l'utiliser dans ces configurations.
Parmi les autres restrictions figurent l'utilisation d'un seul transaction par thread (sauf avec MDB_NOTLS), n'utiliser un MDB_env* que dans le processus qui l'a ouvert et éviter de rouvrir la même base deux fois dans un même processus, éviter les transactions de longue durée ou la suspension de processus avec transactions actives, ne pas utiliser LMDB sur des systèmes de fichiers distants, et noter que le code est distribué sous la licence OpenLDAP Public License et dérivé de btree.c de Martin Hedenfalk.