Документ проектирования nest-ldap

Документ проектирования
3.2. Основные структуры данных
Кэш
(Разработчик архитектуры кэша - Нуйкин, автор документа - Димитров )

MasterHoleyCache - кэш, контролирующий уникальность идентификаторов, содержащихся в нем элементов. В реализации кэша идентификаторы представляют собой числа целого типа, а элементы - элементы SAN структуры (элементы наследованные от SanElement). В качестве базовой структуры для хранения элементов использутся стандартная стурктуря языка java - ArrayList. В него помещаются элементы при добавлении. При этом имеется дополнительная структура данных (очередь), в которой содержатся свободные идентификаторы, не превосходящие максимально занятого (так называемые "дырки", отсюда название - holey). Эти дырки могут появляться при удалении элементов. При этом идентификатор ставится в очередь. Когда добавляется элемент, то если струкрура с "дырками" не пуста, то новому элементу присваивается первый идентификатор из очереди, в противном случае - максимальный не используемый идентификатор. При инициализации кэша LDAP дерево исследуется на предмет наличия используемых не по порядку идентификаторов и максимального идентификатора, что исключает ситуации, когда в кэша появятся новые SanElement с идентификаторами еще не загруженных с дерева элементов.
Архитектура кэша

Дерево LDAP
(Разработчик структуры дерева - Артемьев, автор документа - Артемьев )

Структура представления данных в LDAP сервере: 
Каждая из структур проекта Nest хранится в отдельном поддереве.
N структура представлена в виде каталогов, хранящих отдельные типы элементов.
 Элементы структуры в Ldap хранят только ссылки друг на друга и  записываются в разные каталоги. 
 Данная структура заполняется без участия пользователя, и она больше других структур подвержена изменениям,
 что порождает дополнительные сложности при создании ступенчатой архитектуры. Независимое хранение объектов 
 позволяет избежать последовательной записи элементов, делая систему записи более гибкой и позволяя не переносить записи
 из одной директории в другую, если отношение объетов поменялось.

S структура представлена в виде каталогов вида Building -> Floor -> Room. Каждый элемент структуры имеет свой "этаж" для 
записи и полностью сохраняет струкуру Nest. Так как пользователь сам заполняет эту структуру, то она менее подвержена 
изменениям по сравнению с N структурой. Изменение данных в старших "этажах" не приводит к изменениям в нижних,
удаление же старших означает, что нижние так же не требуются более.

A структура является наиболее сложной, так как ограничивается всего-лишь несколькими условиями:
	1) Вверху находится единственный CompositeOU - являющийся главным.
	2) Элементы SimpleOU находятся под элементами CompositeOU, но не могут содержать под собой другие элементы. 
Не ступенчатая реализация А структуры не позволила бы эффективно определять иерархию структуры, так как потребовала 
наличие дополнительных ссылок и определения последовательности их чтения.

Элементы хранят ссылки на другие элементы в виде путей внутри LDAP дерева, для более эффективного последующего получения
элементов, соотнясящихся с данным и возможности обхода дерева, используя начальную точку и соединенные с ней элементы и т.д.
Структура дерева LDAP

Объектные классы LDAP
(Разработчик структуры дерева - Артемьев, автор документа - Артемьев)

Схема отражает аттрибуты, используемые в дереве LDAP для хранени данных проекта Nest.
Атрибуты:
        
    buildingName	- название здания.
    cn 			- уникальный идентификатор элемента. 
    description 	- описание элемента.
    devDN		- ссылка на устройство.
    ipNetmaskNumber	- маска подсети.
    ipNetworkNumber	- адрес сети.
    ipHostNumber	- IP адрес Network Interface
    lifDN 		- ссылка на Link Interface, соединенный с данным элементом.
    macAddress		- мак адрес Link Interface или Ethernet Interface.
    mode		- способ подключения Link Interface'ов.
    name 		- имя элемента, содержащегося в записи.
    networkDN		- ссылка на сеть, к которой относится Network Interface.
    nifDN		- ссылка на Network Interface, связанный с данным элементом.
    ou			- имя элемента из A структуры.
    ouDN  		- ссылка на SimpleOU, к которому относится элемент.
    roomDN 		- ссылка на Room, в которой находится устройство.
    state		- состояние Link Interaface или Ethernet Interface(up, down).
Объектные классы LDAP