Database Backend Redesign


Motivation

The current implementation of 389-ds uses the BerkeleyDB libdb database for storage of data. There are two reasons to think about using an alternative database library

High level summary

It is not possible to immediately replace the BDB backend compeltely by an other database lib (eg LMDB), we need to support BDB as is and in parallel can provide an other option. But allowing the coexistence of different database implementation requires several changes which affect configuration and upgrade - even if th efunctionality is not changed.

The main changes are:

Current solution

Configuration

Backends and suffixes

Database Configuration

Database Plugin

Defined plugin entrypoints

Plugin usage

Internal representation and setup

Required Changes

configuration changes

database subtype

move existing ldbm config to subtypes

implement database subtypes

define methods for database access

environment

transactions

database operation

database cursor and cursor operation

define methods for higher level functions

backup/restore

import/export

reindex

Integrate MMR changelog

=======

Last modified on 29 November 2017