slapd-ndb - механизм манипуляции данными для slapd MySQL NDB
ОБЗОР
/usr/local/etc/openldap/slapd.conf
ОПИСАНИЕ
Механизм манипуляции данными для
slapd(8)
ndb использует для хранения данных пакет MySQL Cluster через его API NDB. Он обеспечивает
отказоустойчивость с максимальной масштабируемостью, а также возможность совместимости с SQL.
Этот механизм разработан для хранения информации LDAP с использованием таблиц, также видимых из SQL.
Для создания этих таблиц в нём используется высокоуровневое API SQL, а для хранения и извлечения
данных из этих таблиц используется низкоуровневое API NDB. Движок NDB Cluster позволяет разделять
данные между несколькими узлами данных, а этот механизм манипуляции данными позволяет нескольким
экземплярам slapd одновременно совместно работать с указанной базой данных.
Общий подход заключается в использовании отдельных таблиц для каждого объектного класса LDAP.
Данные записей, состоящих из нескольких объектных классов, будут распределены по нескольким таблицам.
В таблицах с данными в качестве первичного ключа используется 64-битный entryID. Иерархия DIT
хранится в отдельной таблице, в которой DN записей отображаются в entryID этих записей.
Этот механизм манипуляции данными является экспериментальным. Хотя этот механизм позиционируется
как механизм манипуляции данными общего назначения, в настоящее время в нём отсутствует ряд
общепринятых функций LDAP. Подробнее смотрите в файле TODO дерева исходных кодов OpenLDAP.
КОНФИГУРАЦИЯ
Приведённые ниже директивы
slapd.conf
применяются к базам данных механизма манипуляции данными ndb. То есть, они должны следовать
за строкой "database ndb" и находиться до последующих строк "backend" или "database".
Другие относящиеся к базам данных директивы описаны в man-странице
slapd.conf(5).
КОНФИГУРАЦИЯ ИСТОЧНИКА ДАННЫХ
dbhost <имя_хоста>
Имя или IP-адрес хоста, на котором запущен сервер MySQL. Значение по умолчанию - "localhost". На
системах Unix соединение с локальным сервером осуществляется с использованием сокета домена Unix,
путь к которому указывается в директиве
dbsocket.
dbuser <имя_пользователя>
Идентификатор учётной записи MySQL, который будет использоваться при соединении с сервером MySQL.
У выбранного пользователя должно быть достаточно привилегий для манипулирования SQL-таблицами
в целевой базе данных.
dbpasswd <пароль>
Пароль для пользователя dbuser.
dbname <имя_базы_данных>
Имя базы данных MySQL, которая будет использоваться.
dbport <порт>
Номер порта, который будет использоваться для TCP-соединения с сервером MySQL.
dbsocket <путь>
Сокет, который будет использоваться для соединения с локальным сервером MySQL.
dbflag <целое_число>
Клиентские флаги для сессии MySQL. Подробности смотрите в документации MySQL.
dbconnect <строка_соединения>
Имя или IP-адрес хоста, на котором запущен управляющий сервер кластера. Значение по умолчанию -
"localhost".
dbconnections <целое_число>
Количество кластерных соединений, которые будут установлены. Использование вплоть до 4 соединений
может повысить производительность при более высокой нагрузке. Значение по умолчанию - 1.
КОНФИГУРАЦИЯ СХЕМЫ ДАННЫХ
attrlen <атрибут> <размер>
Определяет, какой размер столбца использовать для хранения значений конкретного атрибута. Атрибуты
LDAP хранятся в отдельных столбцах SQL-таблиц. Максимальный размер каждого столбца должен быть
определён при создании таких таблиц. Если в определении схемы данных LDAP указано ограничение на
размер значения атрибута, то эта величина будет использоваться как значение по умолчанию.
Если такого ограничения нет, то по умолчанию будет использоваться размер в 128 байт.
Максимально допустимое значение на текущий момент составляет 1024 байта.
index <атрибут[,атрибут...]>
Определяет список атрибутов, для которых необходимо поддерживать индексирование. В настоящее время
не реализована поддержка индексирования по подстрокам. Единая структура индексов обеспечивает
индексирование наличия атрибута, эквивалентности и неэквивалентности значений для указанных атрибутов.
attrset <имя_набора> <атрибуты>
Определяет список атрибутов, которые следует рассматривать как набор атрибутов. Данная директива
создаёт таблицу с именем имя_набора, в которой будут содержаться все перечисленные атрибуты.
Обычно атрибут располагается в таблице, названной по имени объектного класса, в котором он используется.
Однако, атрибуты с одним именем разрешено хранить только в одной таблице. При наследовании объектных
классов повторяющиеся атрибуты сохраняются только в таблице вышестоящего объектного класса. Наборы
атрибутов должны быть определены для любых атрибутов, используемых в нескольких несвязанных
друг с другом объектных классах, то есть классах, которые не связаны простой цепочкой наследования.
КОНТРОЛЬ ДОСТУПА
Механизм манипуляции данными
ndb
соблюдает большинство семантик контроля доступа, указанных в man-странице
slapd.access(5).