Причина возрождения иерархических СУБД — стремительное распространение Internet

В качестве обоснования тому указывают на стремительное распространение Internet и вместе с этим на все большую востребованность иной модели описания данных — иерархической. Именно поэтому стало возможным возрождение иерархических баз данных, в том числе и тех, которые разрабатывались еще в Советском Союзе. Одна из таких СУБД — ИНЭС, созданная для ЕС ЭВМ и в конце 80-х получившая широкое распространение. На ней реализовано более тысячи крупных проектов, она была установлена более чем в 2 тыс. организаций, причем все они были достаточно крупными. Сейчас эта база перенесена на персональные компьютеры и под названием «Ника» принадлежит компании Cognitive Technologies.

Иерархия данных

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

Данные в иерархической базе представлены в виде объектов, имеющих иерархическую древовидную структуру. Есть базовые типы: целые, дробные и другие численные величины, текстовые поля и другие. Они, как правило, являются листьями древовидной структуры. Также предусмотрены два конструктора новых типов: структуры и массивы. Структуры представляют собой объединение разнотипных данных, в том числе и массивов, а массивы — перечисление однотипных данных, в том числе и структур. Есть еще такие типы данных, как ссылка, которая хранит адрес данного или его описания. Если ссылка указывает на конкретную структуру данных, то это ссылка на значение. Если же она указывает на схему данных, то ее называют ссылкой на шаблон. С помощью ссылок можно создавать компактные описания бесконечно вложенных друг в друга структур данных.

Так выглядит проектирование баз данных с помощью Web-интерфейса СУБД «Ника»

Следует отметить, что схема базы данных по сути является описанием предметной области или объекта управления, что позволяет пользователям легко понимать схемы. Например, описание России можно было бы начать с перечисления характеристик городов, потом объединить их в области, потом в округа и, наконец, в полное описание Российской Федерации. Причем описать с помощью перечисленных конструкций можно любую структуру данных, не добавляя лишних сущностей, как это приходится делать в реляционной модели. Кроме того, иерархическая модель очень хорошо подходит для Internet, где и DNS, и файловая система также являются упрощенными иерархическими базами данных. Аналогичную древовидную структуру имеют и HTML-, и XML-документы, что позволяет хранить их в иерархической базе данных практически без преобразования.

СУБД от Cognitive

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

Кроме самих данных в системе предусмотрены и некоторые методы их обработки. В частности, эти методы используются при отображении данных и конвертировании их в HTML. При запросе определенной структуры данных «Ника» показывает объекты, являющиеся потомками запрашиваемого объекта. Причем можно установить количество потомков, которые нужно показать, и способ их отображения в HTML — таблица, список, вложенная таблица, ссылки или другое. В «Нике» есть язык разметки данных и описание тегов, аналогичное DTD (Document Type Definition — описание типа документа) для SGML.

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

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

Вместе с «Никой» поставляется конвертер для преобразования данных из реляционной модели в иерархическую. Для этого нужно, чтобы в базе данных были определены связи между таблицами и она поддерживала OLE DB. Такой конвертер позволяет легко переносить в «Нику» не только накопленные данные, но и их структуру. Если информация берется из нескольких баз данных, согласованных по именам полей, то конвертер объединит их в единую иерархию объектов. В некоторых случаях оказывается удобно набирать данные в формах Microsoft Access, а затем переносить их в «Нику» с помощью этого конвертера. Кроме того, компания собирается сделать интерфейс к своей базе данных на основе языка XML. В результате можно будет использовать данные, хранящиеся в современных реляционных базах данных, переносить их в «Нику» и работать с ней уже при помощи XML.

Дополнительным инструментом к «Нике» является редактор «Магис», который позволяет по описанию структуры данных создавать формы для наполнения базы собственно информацией. Заполняя такую форму, оператор создает файл, который в дальнейшем можно загрузить в «Нику». Причем можно не только вводить информацию, но и корректировать ее, а в случае необходимости сохранить в другой форме. В этом редакторе также реализованы функции поиска информации в «Нике». Впрочем, «Магис» пока реализован только под DOS, что ограничивает его использование.


О СУБД «Ника»

Разработчик: компания Cognitive Technologies; «Ника» используется компанией в некоторых своих программных продуктах в качестве встроенной СУБД, в частности, в архиве «Евфрат»
История: в основу «Ники» положена СУБД ИНЭС, реализованная в начале 80-х для ЕС ЭВМ
Назначение: реализация иерархической модели данных
Платформа: операционные системы Windows и MS-DOS; имеется Web-интерфейс как для получения данных, так и для разработки приложений


«Ника» в музеях

В качестве одного из примеров использования СУБД «Ника» можно привести Web-сервер Государственного исторического музея. В самом музее 40 млн. очень разнообразных экспонатов — оружие, ткани, драгоценные металлы, иконы и многое другое. Для каждого экспоната сотрудники музея создали свое научное описание. Причем построить какую-либо модель предметной области для всех экспонатов практически невозможно, так как для точного описания экспонатов невозможно придумать стандартные реквизиты. Тем не менее вся эта информация хранится в «Нике» и отображается в обычном браузере. Там есть и изображения, и текстовые поля различных типов, каждое из которых можно оформить по-своему.

Кроме Исторического музея на «Нике» работает и музей Рублева. Это был первый музей, который полностью описал свою коллекцию на этой базе данных. Причем у каждого экспоната более ста реквизитов, и полное их описание занимает около сотни страниц. Использование «Ники» позволяет работникам музея в любой момент добавить новый реквизит, если это будет необходимо для более точного описания экспоната. Таким образом, если в базе данных нужно хранить плохо структурируемую информацию, то лучше для этого использовать именно иерархическую базу данных, которая позволяет легко изменять схему данных по мере необходимости.