Вход:  Пароль:  
FreeSource: TZ/ServerIntegracii/SxemaDannyh ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Схема данных


1. Выбор системы хранения данных.
(выбор между LDAP и SQL, достоинства и недостатки, переход между моделями)


Организация LDAP-интерфейса к данным + ссылка на то, что реляционный back-end и так чаще всего используется для хранения данных в ldap-системах.


2. Варианты организации данных.
1) Монолитный – все модули разделяют общую схему данных, с одинаковыми процедурами и последовательностями (sequence)
2) Модульный – модули располагаются в отдельных схемах, возможно на разных хостах или виртуальных системах (virtual appliance) разделяя только таблицы или другие объекты с глобальными идентификаторами (primary keys)


3. Структура данных


Предполагается организовать однонаправленное дерево абстрактных объектов, используя поля id и id-родителя.
Операции генерации первичных ключей вынесены в триггеры или лучше всего процедуры, что исключает использование полей типа serial.
Каждый абстрактный объект связан с ACL отношением “0..1:N”.
Конкретные элементы наследуют от абстрактных объектов, разделяя единый домен первичных ключей.


Более подробно это выглядит так (визуально чуть позже):


ABSTRACT_OBJECT(ID biginit PRIMARY, PARENT_ID bigint);
PK: ID,
FK: (PARENT_ID -> ABSTRACT_OBJECT.ID)


ACL(ID, <....>, OBJECT_ID)
PK: ID,
FK: (OBJECT_ID -> ABSTRACT_OBJECT.ID)


USER(ID, <.....>);
PK: ID,
FK: (ID -> ABSTRACT_OBJECT.ID)


DNS_OBJECT(ID, <.....>);
PK: ID,
FK: (ID -> ABSTRACT_OBJECT.ID)


Собственно таким образом реализуется наследование таблиц (не путать с наследованием объектных типов в postgre), набор первичных ключей глобален для всей схемы.
В этой ситуации легко реализуется итеративный просмотр дерева, выбор потомков очевиден (select id from abstract_object where parent_id=значение). Также нам не нужно генерировать уникальность объектов, связи между ними ведутся на основе первичных и внешних ключей, операции переноса, вставки и т.п. меняют только parent_id.



 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]