В ldap моей организации есть пользователь с правами только для чтения, который использует реализацию openldap, я не знаю точно структуру дерева, но знаю, что есть много организационных единиц ниже объектов bogota, medellin, palmira (которые, в свою очередь, находятся ниже организации xxx.edu.co
). Меня интересует поиск uid
людей, использующих другой атрибут с именем employeeNumber
, в каждой people
организационной единице ниже организаций второго уровня (Богота, Медельин, Пальмира). Я могу добиться этого с помощью:
ldapsearch -h secret.xxx.edu.co -D 'uid=myUser,ou=Institucional,o=bogota,o=xxx.edu.co' -w myPass -x -b 'ou=People,o=bogota,o=xxx.edu.co' '(&(employeeNumber=123485))'
Проблема заключается в эффективности, учитывая, что моя организация насчитывает более 40000 пользователей, поиск идет очень-очень медленно. Если я ищу с использованием uid, поиск будет очень быстрым, я предполагаю, что дерево точно упорядочено по 'uid' или что-то подобное. Дело в том, что именно uid являются моей целью, кроме того, я знаю приблизительную форму uid человека, которого ищу, например, я знаю, что если я ищу uid для Пепито Переса с employeeNumber = 12345, это должно начинаться с буквы «р».
Как я могу добиться лучших результатов в решении этой проблемы?
Я думаю, что что-то вроде фильтрации дерева с помощью регулярного выражения в индексированном атрибуте uid и после поиска сотрудника в этом подмножестве может иметь хорошую производительность. Мне нужен подход, который не требует прав администратора в ldap.