2007/06/20

Индексы в OpenLDAP

Для увеличения производительности LDAP-сервиса на основе OpenLDAP, можно воспользоваться индексацией (index), которая помогает ускорить обработку поисковых запросов.
Для этого в основном конфигурационном файле (/etc/ldap.slapd.conf) предусмотрен параметр index. Формат следующий:
index {attrlist | default} [pres,eq,approx,sub,none]
где
  • attrlist - список атрибутов (через запятую), для которых будет включена индексация
  • default - используется для указания всех явно не указанных, но используемых в базе, атрибутов
  • pres (present) - индекс для более быстрого определения установлен ли указанный атрибут
  • eq (equality) - индекс для точного поиска указанного значения атрибута (cn=Roman Sozinov)
  • approx (approximate) - индексация для быстрого поиска созвучных (по фонетике) значений (cn=smith и cn=smit)
  • sub (substring) - индексация при поиске по неполным строкам (cn=Roma*)
Пример использования:
index cn
index sn,uid,mail eq,sub
index default none
В данном случае для cn-атрибута будут включены все методы индексации; для sn, uid и mail только eq и sub. Для всех остальных атрибутов индексация будет отключена (default none).

Чтобы внести изменения в индексы, необходимо остановить работающий ldap-сервис (чтобы получить rw-контроль над базой) и запустить утилиту slapindex, обновляющую индексы, установленные для базы. В некоторых источниках советуют перед переиндексацией сделать копию базы "на всякий пожарный".
# /etc/init.d/slapd stop
Stopping OpenLDAP: slapd.
# slapindex -v
...
# /etc/init.d/slapd start
Starting OpenLDAP: slapd.
Не стоит слишком увлекаться индексацией, так как она требует дополнительного использования памяти и ресурсов процессора.

Литература:
  1. LDAP Implementation Cookbook (IBM, 1999)
  2. LDAP System Administration (O'Reilly, 2003)

No comments: