slapd-mdb - механизм манипуляции данными для slapd Memory-Mapped DB (отображаемая в памяти база данных)
СИНТАКСИС
/usr/local/etc/openldap/slapd.conf
ОПИСАНИЕ
Механизм манипуляции данными для
slapd(8)
mdb использует для хранения данных библиотеку OpenLDAP Lightning Memory-Mapped DB (LMDB).
В вопросах управления памятью эта библиотека полностью полагается на операционную систему,
в которой она выполняется, и не использует собственных механизмов кэширования.
mdb является рекомендуемым первичным механизмом для работы с базами данных.
Механизм mdb похож на механизм hdb в том, что он использует иерархическое
представление базы данных с поддержкой переименования поддеревьев. Этот механизм более компактен
и более производителен, чем bdb, и в то же время он гораздо проще настраивается.
КОНФИГУРАЦИЯ
Приведённые ниже директивы
slapd.conf
применяются к базам данных механизма манипуляции данными mdb.
То есть они должны следовать за строкой "database mdb" и находиться до последующих строк
"backend" или "database". Другие относящиеся к базам данных директивы описаны в man-странице
slapd.conf(5).
checkpoint <kbyte> <min>
Указывает частоту синхронизации дисковых буферов базы данных.
Эта установка требуется лишь при использовании директивы dbnosync.
Выгрузка данных произойдёт либо при записи данных размером <kbyte> Кбайт,
либо по прошествии <min> минут с момента последней выгрузки.
По умолчанию оба аргумента установлены в ноль, в этом случае они игнорируются. Если аргумент
<min> отличен от нуля, каждые <min> минут будет запускаться внутренняя задача по выгрузке данных.
Примечание: в настоящее время обработка установки <kbyte> не реализована.
dbnosync
Указывает, что содержимое базы данных на диске не должно немедленно синхронизироваться
при изменении содержимого базы данных в памяти. Включение этой опции может повысить
производительность за счёт увеличения риска потери данных. В частности, если до синхронизации
изменений произойдёт крах операционной системы, некоторое количество транзакций может быть потеряно.
По умолчанию при фиксации каждой транзакции выполняется полная синхронизация данных.
directory <directory>
Указывает директорию, где находятся LMDB-файлы, содержащие эту базу данных и ассоциированные с ней индексы.
Для каждой базы данных должна быть определена отдельная директория. По умолчанию -
/usr/local/var/openldap-data.
Указывает флаги для более детального контроля работы библиотеки LMDB.
nosync
То же самое, что и директива
dbnosync.
nometasync
При фиксации транзакции данные синхронизируются, а синхронизация метастраницы пропускается.
Этот метод несколько быстрее, чем выполнение полной синхронизации, но существует вероятность потери
последних зафиксированных транзакций при крахе операционной системы. Если выставлены оба флага
nometasync
и
nosync,
приоритет будет у флага
nosync.
writemap
Использовать отображение в памяти с возможностью записи, а не в режиме "только чтение".
Это ускоряет операции записи, но может привести к разрушению базы данных в случае какой-либо ошибки в slapd,
приводящей к случайным записям в область mmap.
mapasync
При использовании отображения в памяти с возможностью записи и выполнении синхронизации
при каждой фиксации транзакции, применять асинхронную синхронизацию вместо синхронной (по умолчанию).
Эта опция не имеет никакого эффекта, если флаг
writemap
не установлен. Также она не будет иметь эффекта, если установлен флаг
nosync.
nordahead
Отключает упреждающее чтение файла. Обычно операционная система выполняет упреждающее чтение при каждом запросе на чтение.
Как правило, это повышает производительность операций чтения, но может ухудшить производительность при чтении
с произвольным доступом, если системная память заполнена и размер базы данных больше чем объём RAM.
Эта опция не реализована на Windows.
index {<attrlist>|default} [pres,eq,approx,sub,<special>]
Указывает индексы, которые поддерживаются для указанного атрибута (или списка атрибутов).
Некоторые атрибуты поддерживают не все индексы.
Если задан только список атрибутов <attrlist>, для этих атрибутов будут поддерживаться индексы,
указанные как индексы по умолчанию default. Обратите внимание, что задание индексов по умолчанию
не подразумевает, что будут проиндексированы все атрибуты. Кроме того, для лучшей производительности, для атрибута
objectClass
следует всегда настраивать индекс
eq.
Может быть указано несколько специальных параметров индексирования. Тип индекса
sub
может быть представлен как три отдельных типа
subinitial,
subany
и
subfinal.
Для запрета использования данного индекса для языковых подтипов может быть указан специальный тип
nolang.
Для запрета использования данного индекса для именованных подтипов может быть указан специальный тип
nosubtypes.
Примечание: при изменении установок index в
slapd.conf(5)
требуется повторное построение индексов, смотрите
slapindex(8);
динамическое изменение установок index путём выполнения операций LDAPModifying над "cn=config"
приводит к автоматическому онлайн-перепостроению индексов в фоновом режиме.
maxreaders <integer>
Указывает максимальное количество потоков, которые могут параллельно получать доступ на чтение к базе данных.
Работа таких инструментов, как slapcat считается за один поток в дополнение к потокам
в любых активных процессах slapd. Значение по умолчанию - 126.
maxsize <bytes>
Указывает максимальный размер базы данных в байтах. При запуске под отображение базы данных в памяти
выделяется соответствующее количество памяти, и базе данных не будет позволено выйти за пределы этого размера.
Значение по умолчанию - 10485760 байт. Эту настройку можно изменить, если установленный предел требуется увеличить.
Примечание: Важно установить значение этой директивы как можно большим
(с учётом ожидаемого реального прироста базы данных с течением времени),
поскольку последующее увеличение размера может оказаться неосуществимым при высокой загрузке системы.
mode <integer>
Указывает режим защиты файлов (права на доступ к ним), который следует назначать вновь создаваемым файлам базы данных.
Значение по умолчанию - 0600.
rtxnsize <entries>
Указывает максимальное количество записей, которые будут обрабатываться в одной транзакции чтения при
выполнении больших поисковых запросов. Транзакции чтения с большим временем жизни не позволяют повторно
использовать старые страницы базы данных в транзакциях записи, и поэтому могут привести к значительному
разрастанию файла базы данных при большом трафике записи. Данная настройка приводит к тому, что транзакции
чтения в больших поисковых запросах будут высвобождаться и создаваться заново после того, как было прочитано
указанное количество записей, тем самым давая транзакциям записи возможность повторно претендовать на старые
страницы базы данных. Значение по умолчанию - 10000.
searchstack <depth>
Указывает глубину стека, используемого для оценки поискового фильтра.
Оценка поисковых фильтров происходит по стеку, в который помещаются вложенные условия AND / OR.
Для каждого потока сервера выделяется собственный стек. Глубина стека определяет,
насколько комплексные фильтры могут быть оценены без необходимости выделения дополнительной памяти.
Применение поискового фильтра с глубиной вложенности большей, чем глубина поискового стека,
приведёт к тому, что для этой конкретной операции поиска будет выделен отдельный стек.
Подобные выделения могут оказать существенное негативное влияние на производительность сервера,
но и определение слишком большого стека также приведёт к потреблению большого объёма памяти.
Каждый поисковый стек использует 512 Kb для одного вложенного уровня условий.
Глубина стека по умолчанию - 16, то есть используется 8 Mb памяти для каждого потока.
КОНТРОЛЬ ДОСТУПА
Механизм манипуляции данными
mdb
соблюдает указанные в
slapd.access(5)
семантики контроля доступа.
Программное обеспечение OpenLDAP
разработано и поддерживается проектом OpenLDAP <http://www.openldap.org/>.
Программное обеспечение OpenLDAP
является производным от релиза 3.3 LDAP Мичиганского Университета.
Автор man-страницы - Howard Chu.