← на главную

Анатомия «Итари». Часть 1. Сущности

12 мая 2012

Александр Супруненко

Александр Супруненко

Руководитель проекта / Системный архитектор

«Не следует умножать сущности сверх необходимого.»
Уильям Оккам

Любая информационная система (ИС) вне зависимости от уровня сложности оперирует набором системных сущностей. Под сущностями здесь понимаются системные объекты, описывающиеся в системе совокупностью классов и таблиц БД. Чаще всего, количество сущностей растёт пропорционально сложности системы. Если в качестве примера ИС рассмотреть систему управления сайтом (контентом), то достаточно распространённым подходом к построению систем является описание каждого функционального модуля своим набором сущностей, который, взаимодействуя с общесистемными сущностями, позволяет модулю реализовывать свой функционал. Рассмотренный подход имеет ряд преимуществ и недостатков.

Преимущества

  1. Существует возможность полной изоляции сущности от системы (при необходимости);
  2. За счёт использования отдельных таблиц БД может достигаться повышение производительности модуля;
  3. Принципы построения модуля соответствуют модели MVC.

Недостатки

  1. Введение в систему нового функционального модуля приводит в общем случае к усложнению структуры БД и необходимости описания инструментов управления вновь созданными сущностями;
  2. Для организации экспорта необходимо создавать специальный инструмент, учитывающий особенности хранения данных;
  3. Изменение функционала в общем случае влечёт за собой изменение структуры БД и, как следствие, потерю гибкости.

Архитектура системы управления сайтом «Итари» соответствует принципу, выдвинутому Уильямом Оккамом и взятому в качестве эпиграфа к данной статье. Таким образом, система управления сайтом «Итари» оперирует только тремя базовыми сущностями: контейнерами, параметрами и пользователями. Тесно взаимодействуя между собой, эти сущности помогают реализовать функционал ядра и модулей системы «Итари». Рассмотрим каждую из сущностей подробнее.

Контейнеры

Основная сущность системы. Множество контейнеров организовано в древовидную структуру с единым корнем. Дерево контейнеров позволяет не только определить разделы и содержимое сайта, но и описать отдельные блоки страниц, определить шаблоны содержимого, генерируемого пользователями, а также описывать это содержимое. Кроме того, специфические данные, относящиеся к пользователям, и даже административные разделы также организованы в виде иерархии контейнеров.

Каждый контейнер может хранить в себе следующий набор данных:

  • Уникальный идентификатор контейнера;
  • Даты создания, последнего изменения и публикации контейнера;
  • Заголовок, аннотацию и контент контейнера (поля являются языкозависимыми);
  • Ярлык контейнера, представляющий собой локальную часть URL для доступа к контейнеру;
  • Контекст, содержащий множество унаследованных от родительских контейнеров и/или собственных значений параметров;
  • Разрешения на доступ к контейнеру, складывающиеся из идентификатора владельца контейнера, являющегося идентификатором пользователя, разрешений позволения и/или запрета для одной или нескольких групп пользователей и разрешений для всех остальных пользователей. Каждый элемент разрешений представлен в виде четырёх булевых значений, определяющих наличие разрешения на чтение, изменение, добавление дочерних и удаление контейнера;
  • Другие поля, позволяющие определить положение контейнера в дереве и т. п.

Параметры

Параметры позволяют расширить функционал контейнеров за счёт возможности создания для каждого контейнера контекста — множества значений параметров, связанного с данным контейнером и/или унаследованного от родительских контейнеров.

Параметры объединяются в группы. Каждый параметр для одного контейнера может иметь значение, определяемое типом параметра. Определённые в системе «Итари» типы параметров позволяют хранить как значения элементов форм — текстовые и числовые, однострочные и многострочные поля, флажки и радиокнопки, списки единичного и множественного выбора и т. д., — так и специфические значения, представляющие собой в общем случае набор данных, полученных в результате выполнения запроса к БД. Важно, что списки значений некоторых типов параметров могут содержать в себе другие сущности системы: контейнеры и пользователей.

Пользователи

Третья сущность системы, которая определяет уровень доступа к тем или иным ресурсам системы.

Пользователи в системе управления сайтом «Итари» не имеют жёстких ролей, но имеют набор прав, определяющийся наибольшим набором прав для всех групп, членом которых является пользователь, и набор актуальных разрешений на чтение, изменение, добавление дочерних и удаление каждого контейнера, определяющийся совокупными разрешениями запрета и позволения для групп, членом которых является пользователь, и разрешениями для пользователей, не входящих в перечисленные группы. Пользователь-владелец контейнера получает на него все разрешения вне зависимости от групповых разрешений.

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

Резюме

Архитектура системы управления сайтом «Итари», как и любая другая архитектура, имеет свои преимущества и недостатки, приемлемое соотношение которых является определяющим при выборе системы для создания сайта.

Преимущества

  1. Структура БД остаётся неизменной при подключении и/или отключении функциональных модулей, что позволяет наращивать функционал сайта без усложнения БД;
  2. За счёт использования унифицированной единицы хранения данных в системе — контейнера — управление различными модулями осуществляется из одной точки в едином стиле, существует возможность создания единого механизма импорта/экспорта данных;
  3. За счёт минимизации количества сущностей упрощается процесс разработки дополнительных модулей, в которых широко используются методы системных классов для выполнения стандартных операций, увеличивая коэффициент повторного использования программного кода;
  4. Архитектура всей системы соответствует модели MVC, а сочетание фиксированной структуры выходных данных с наличием свободных секций в этой структуре позволяет повысить коэффициент повторного использования шаблонов вывода, одновременно оставляя разработчику полную свободу визуализации результатов.

Недостатки

  1. За счёт унификации хранения и доступа к данным производительность определённого модуля может быть ниже, чем у аналогичного, использующего собственные методы хранения и доступа;
  2. Структура хранимых в системе данных ограничивается возможностями многосвязных деревьев с одной стороны и расширяемым набором типов параметров — с другой;
  3. Необходимость полной изоляции модуля от системных сущностей влечёт за собой полное описание средств взаимодействия и управления элементами такого модуля.

Приведённые недостатки не являются существенными при построении мало- и средненагруженных интернет-систем. Таким образом, система управления сайтом «Итари» реализует модель, предоставляющую универсальный способ организации и управления структурой, содержимым и метаданными сайта.

© 2005–2018 Система управления сайтом «Итари»

Контактная информацияПравовые аспектыКарта сайта