Использование сетевой модели данных для управления информационным наполнением

Web — давно уже не просто набор взаимосвязанных документов, а универсальный интерфейс, позволяющий обратиться к услугам разнообразных приложений. Однако большинство приложений опирается на реляционные или объектные СУБД, модель данных в которых существенно отличается от гипертекстовой модели. Поэтому разработчикам зачастую приходится создавать преобразователи данных для представления реляционных данных в виде, привычном для Web-интерфейса. Более точное соответствие между гипертекстом и базой данных позволяют установить СУБД, основанные на сетевой модели. Они обладают несколько иными выразительными средствами, нежели реляционные и объектные модели. Именно поэтому в последнее время вновь активизировались исследователи баз данных, основанных на сетевой модели описания данных. Такая модель опирается на теорию графов, а структура информации представляется в виде узлов с помеченными связями между ними. В качестве примера такого подхода можно назвать Resource Defenition Framework — язык описания информации в виде сетевой структуры. Этот язык является частью XML, определяющей ссылки между документами и правила описания самих документов.

Сетевая модель может быть использована и для построения системы управления информационным наполнением Web. Образцом подобной системы является Communiware разработки компании «Техинвестлаб», которая может служить удачным примером организации универсального Web-интерфейса на основе сетевой базы данных.

Шаблон страницы в Communiware представляет собой описание простой страницы с текстом на HTML, где в любом месте странички можно вставить любой другой элемент или список элементов

Впрочем, фундаментом Communiware служит традиционная реляционная СУБД (могут использоваться Oracle или Postgress), на которую отображена сетевая модель описания данных. В реляционных таблицах хранится информация об узлах, их атрибутах и связях между ними. Связь отличается от атрибута тем, что в ней хранится ссылка на другой узел, а в атрибуте — собственно значение. С помощью этой модели были описаны такие элементы Web-интерфейса, как страница, реплика, статья, книга, каталог и многое другое. Всем им соответствуют узлы графов и обладают определенным набором атрибутов. Пользователи могут самостоятельно составлять новые элементы для своего Web-сервера.

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

Следует отметить, что с помощью сетевой модели описывается практически любая информация. Это косвенно подтверждается самой спецификацией RDF, которая также реализует сетевую модель представления данных и предназначена для описания любой структуры данных. Например, с помощью графов можно описать систему документооборота или управления проектами, для чего достаточно составить соответствующий граф. Аналогичным образом описывается и структура прав доступа к страницам Web-сервера, которую использует Communiware для разграничения полномочий.

Впрочем, основным элементом Communiware является система представления информации в Web, то есть транслятор сетевой базы данных в их Web-представление. Система показа полностью отделена от структуры данных, что позволяет оперативно менять как дизайн Web-ресурсов, так и его информационное наполнение. Для преобразования информации, содержащейся в сетевой базе данных, используются шаблоны, которые написаны на HTML с небольшими вставками — именами узлов и процедур выборки данных.

Шаблоны бывают трех типов: страница, элемент и список элементов. Шаблон страницы представляет собой описание простой страницы с текстом на HTML, где в любом месте странички можно вставить любой другой элемент или список элементов. Шаблон элемента определяет, как представить атрибуты узла в виде HTML. Шаблон списка позволяет определять HTML-представление рекурсивного извлечения данных из нескольких узлов. Какие конкретно атрибуты и узлы использовать для отображения, описывается с помощью нехитрого макроязыка. Вся информация из базы подставляется в Web-страницу в момент получения запроса с помощью специального препроцессора макроязыка Communiware. Генерирование страницы «на лету» позволяет оперативно изменять содержимое сервера, причем одновременно в разных местах. А описание шаблонов органично вписывается в сетевую структуру самой базы, поскольку отношение шаблонов и элементов также описывается в виде графа.

Сейчас система Communiware реализована в виде модуля расширения для Apache, написанного на mod_perl. Компания продает его как отдельный продукт вместе со всеми исходными текстами, что позволяет клиентам понять, как работает система, и вносить в нее свои изменения.


Communiware

Разработчик: компания «Техинвестлаб»
Дата выпуска: март 1999 года
Используемые технологии: СУБД Oracle или Postgress, Web-сервер Apache, модули расширения Apache, написанные на языке mod_perl; логическая структура — сетевая база данных
Примеры использования: Internet-агентство «Промо» (www.webrating.ru), Союз операторов Интернет (www.soi.ru), Российская Интернет-академия (www.internetacademy.ru), Лаборатория пенсионной реформы: Дискуссионный центр (www.ice.ru)

Поделитесь материалом с коллегами и друзьями