Документ проектирования
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