Реляционные базы данных
Наиболее широкое распространение на сегодня (если не считать архивы на традиционных носителях) получили подсистемы хранения данных, использующие реляционную технологию. Идеология и логические основания теории реляционных баз данных разработаны американским ученым Е.Ф. Коддом (Codd E.F.) Подобные системы хранения относятся к классу систем, которым для работы с данными требуются внешние модели интерпретации - даже при наличии непосредственного доступа к носителю данных семантика связей может быть восстановлена лишь в редких случаях. Любое изменение структур таблиц, используемых для хранения экземпляров данных, должно сопровождаться внесением изменений в модель интерпретации, зафиксированную в приложении, обеспечивающем считывание и связывание данных. При изменении структуры объектов учета и атрибутов, используемых для их описания, организация сталкивается с необходимостью доработки программного обеспечения, используемого пользователями, что не всегда возможно (меняются языки программирования, высока кадровая динамика и т. д.).
С другой же стороны, реляционная технология (лучше даже - парадигма) баз данных (БД) обладает множеством положительных свойств. Первое и важнейшее из них - это то, что все отношения между экземплярами данных могут быть заданы извне - ни один из методов связывания по заданным пользователем логическим условиям не будет воспринят как недопустимый. Любой запрос считается допустимым и может вернуть непустое множество записей базы данных: были бы соблюдены формальные правила именования объектов базы данных (таблиц и полей - колонок) и синтаксис языка запросов - остальное находится в компетенции пользователя. Это свойство превращает реляционные базы данных в мощный инструмент исследований, добывания нового знания из существующего набора данных. Более того, введение стандарта языка управления базами данных SQL'92 позволило сделать прозрачным (независимым от особенностей реализации) процесс обращения к различным системам управления базами данных (СУБД) и уже через их интерфейсы к БД, функционирующим под их управлением.
Однако следует заметить, что сколь бы мощные возможности ни были доступны пользователю реляционных БД, всем им свойственен основной недостаток: отсутствие системности в подходе к организации данных и потеря их связности. Несмотря на то, что данные в реляционных БД достаточно высоко формализованы, а декомпозиция свойств доведена до уровня атомарности, возможности их организации в связные описания объектов и систем ограничены - знания о правилах их объединения вынесены за пределы компетенции СУБД.
Для преодоления этого недостатка используются, так называемые, вторая и третья нормальные формы, представляющие собой совокупность правил связывания и организации данных за счет внесения отношений ссылочной целостности (иерархизации представления данных). Хоть это, в принципе, противоречит основному принципу построения реляционных БД, но зато приближает реализуемые в таких БД отношения между данными к естественному способу хранения данных и знаний. Если воспользоваться метафорой, то в классическом виде отношения между данными, реализуемые в реляционных БД, можно сравнить с "кашей в голове" у нерадивого студента, когда из-за отсутствия закрепленных связей между фрагментами знаний, полученных в результате авральной зубрежки, в своих ответах на экзаменационные вопросы он может с легкостью сочетать несочетаемое.
Здраво было бы ограничить сферу применимости реляционных баз данных этапом макетирования информационных систем, предназначенных для функционирования в системах с низкой структурной и функциональной динамикой. После того, как период адаптации и установления ссылочных отношений окончен, в принципе, можно перейти к менее гибкой, но более быстродействующей навигационной парадигме (хоть она и старше реляционной). Но в силу универсальности и гибкости реляционной модели обычно она продолжает использоваться и по окончании периода адаптации, что обусловлено желанием заказчика обеспечить сохранение "потенциала роста" и максимальную гибкость БД, как инструмента исследования.
Выше мы вскользь упомянули о навигационной парадигме баз данных… Базы данных, реализованные в соответствии с навигационной парадигмой, по способу организации данных коренным образом отличаются от реляционных. Навигационная парадигма полностью соответствует принципу иерархической классификации. Связи между экземплярами данных в навигационных БД жестко заданы моделью, отражающей свойства моделируемой (описываемой) системы. Такое представление более гармонично вписывается в системный подход и напоминает уже не голову одуревшего от зубрежки студента, но голову педантичного старосты группы, знания которого хорошо уложены и приведены в порядок. Однако, если продолжить сравнение, то знания эти все еще разобщены, не полны и не позволяют создать нового знания, поскольку они бесконфликтны, а отношения между ними пока лишены должной пластичности.
Навигационные базы данных
Навигационная парадигма опирается все на тот же аппарат табличного представления данных, где имя колонки соответствует имени атрибута, строка - совокупности свойств некоторой сущности, выступающей в качестве атомарной на данном уровне описания. На следующем уровне описания этой же сущности атрибут может быть раскрыт с подобающей степенью детализации, но главное: описание будет вновь доведено до атомарного уровня - в противном случае все ухищрения лишены какого бы то ни было смысла. Процесс построения описательной структуры навигационной БД связан с процедурой поэтапной декомпозиции свойств сложного объекта в некоторой плоскости отношений (отношения включения, подчинения и т. д.). Так, протоколируя процесс последовательной разборки автомобиля и записывая после разборки некоторого узла или агрегата перечень деталей и крепежных элементов (с указанием их спецификации), можно синтезировать структуру описания, схожую со структурой навигационной базы данных.
Изучение такой БД может дать информацию о "конструкции", а вернее, о композиции и характеристиках объектов, описания которых хранятся в ней. То есть, разобранный автомобиль можно собрать вновь, не копаясь в баночках с разнокалиберными винтиками и шпунтиками. В случае ведения протокола разборки автомобиля в реляционной базе данных, пришлось бы бегать с каждым болтом от ведерка с болтами к агрегату - проверять, не подойдет ли…
- Хорошо еще, что эта работа возложена на плечи СУБД. Связи в навигационных БД установлены жестко - "открыть" новую вам не даст СУБД, заявив о попытке нарушить существующую схему отношений. Внести коррективы в систему отношений можно лишь взаимодействуя с СУБД в качестве разработчика.
Очевидно, что подобные БД могут применяться во многих отраслях, где требуется высокое быстродействие, где анализ связей уже завершен, а его результаты признаны удовлетворительными. По некоторым своим свойствам навигационные БД довольно близки к идеологии системного подхода, однако многообразие связей и отношений здесь даже теоретически не может быть учтено во всей своей полноте. Опять же, примитивные интерфейсы, используемые для отображения данных, зачастую предоставляются средствами СУБД (это плюс), но при попытке их усложнения или усовершенствования приходится обращаться к прикладным программам, размещаемым на рабочем месте клиента. С другой стороны все эти отношения могут быть сымитированы в реляционных СУБД, а значит, разработчик, имеющий опыт работы только с одним типом СУБД, оказывается способен создавать БД как классического реляционного типа, так и псевдо-навигационного типа (что потребителю выливается в необходимость приобретения более высокопроизводительного компьютерного оборудования, но удешевляет стадию разработки).
Объектные базы данных
Мы уже рассмотрели реляционные и навигационные БД, но ни те, ни другие не были признаны нами в качестве средства хранения данных, отвечающего потребностям ИАР и сущности системного подхода (это не значит, что они вообще не могут быть эффективно использованы при ведении ИАР). Еще одной парадигмой построения баз данных, наследующей свойства навигационных баз данных, является парадигма объектных баз данных. Парадигма объектных баз данных по своей сути близка идеологии имитационного моделирования: для описания объектов учета такие БД используют комплекс компонент описания, обеспечивающий учет не только атрибутов объекта, но и системных связей, их параметров, правил комбинирования, проверки допустимости значений и так далее. В классическом варианте объектных БД объекты идентифицируются по именному принципу, их свойства определяются набором общих (свойственных родительскому классу) и частных (свойственных данному экземпляру объекта или производному классу) характеристик. Чрезвычайно полезными механизмами, введенными в модель объектных БД, являются механизмы наследования и переопределения свойств объектов и классов. Чтобы проиллюстрировать этот механизм, приведем следующие утверждения в "объектном стиле": "Книга - есть документ, отличающийся тем, что носитель символьных данных объединен в блок. Свиток - есть документ, отличающийся тем, что носитель символьных данных представляет собой скрученную в рулон широкую ленту". Как видим, понятия введены на основе использования ранее введенных понятий-классов верхнего уровня "документ" и "носитель символьных данных", за счет чего упрощено описание производных понятий (а термины и понятия, естественно, могут выступать в роли объектов хранения).
Своим бурным развитием объектные базы данных обязаны человеческой лени (как двигателю прогресса), системному анализу, языку программирования Си и, в первую очередь - системам автоматизированного проектирования, использовавших такие способы описания для представления информации об элементной базе проектирования (микросхемах, транзисторах и т. д.). Свойства таких элементов было удобно описывать с применением методов наследования и переопределения свойств и техники стратификации: отдельно - логические функции элемента, отдельно - описание габаритных параметров, отдельно - временные и частотные характеристики, отдельно - параметры входных и выходных сигналов (уровни нуля и единицы, амплитудно-частотная характеристика и т. д.). В результате комбинирования элементов, описанных таким образом, еще на стадии разработки устройства выявляются грубые ошибки проектировщика, смоделированы и рассмотрены эпюры сигналов в контрольных точках и так далее. По существу одновременно с проектированием устройства синтезировалась имитационная модель проектируемого устройства. Естественно, что как бы ни была многообразна элементная база, используемая для разработки электронных устройств, количество уникальных имен было конечным, а задача идентификации конкретного элемента могла решаться, например, по реализуемой им логической функции, что не требовало высокого развития логического аппарата поиска данных.
Постепенно приходило понимание того, что подобный подход приемлем и при описании объектов другой природы, в том числе, и людей, выступающих в фиксированных (заданных некими регламентами, например, должностными инструкциями) ролях. То есть, всего того, что может рассматриваться в качестве объекта, принадлежащего к некоторому классу и обладающего собственными и системными свойствами, для которого определены нормативные способы манипулирования им, его нормативное поведение и иные характеристики.
Еще одним полезным свойством объектных технологий является то, что данные, описывающие объект учета, могут быть сопровождены и информацией об интерфейсе их представления. Например, в качестве одного из атрибутов при описании микросхемы в системах автоматизированного проектирования (САПР) использовалось описание ее графического начертания. Однако это было только начало, поскольку метод отображения начертания был реализован в оболочке САПР. Позже, за счет унификации языков программирования и графических интерфейсов операционных систем, стало возможным и совместное хранение данных с описаниями методов их отображения и обработки. Это позволяет при получении исполнительной системой комбинированного блока данных и формализованных описаний алгоритмов их обработки, воспользоваться теми процедурами, которые позволяют корректно обрабатывать и отображать именно этот экземпляр или класс данных. То есть, на момент получения данных их потребитель может в принципе не располагать методами и программами обработки данного класса данных, а все изменения в методах обработки данных, автоматически станут доступны их потребителям. Такая идеология рассматривается как наиболее перспективная, в ее русле разработаны языки гипертекстовой разметки SGML, XML, HTML, MathML, языки программирования Java Script, Java и ряд иных языков программирования и управления представлением данных, разработанных в последние годы.
Однако, основной бич объектных баз данных - система именования объектов. Да, вы можете получить и изучить иерархию объектов и классов, схему наследования и переопределения свойств для конкретного класса объектов хранения, но этого мало… Поскольку основным идентификатором объекта является его имя, а не свойства (!), манипуляция экземплярами классов затруднена: это уже не таблицы, а более сложные структуры данных. А значит, решение исследовательских задач, связанных со сравнением свойств объектов, в таких БД затруднено (ведь речь идет уже не о сравнении величин, а о сравнении объектов, структура которых может и различаться). А сами объектные базы данных в большей степени пригодны для решения задач синтеза, то есть, работ типа проектирования, но не для анализа. Хотя, если рассматривать ИАР как целостный цикл работы с информацией, то становится понятно, в чем именно заключается привлекательность объектных баз данных с точки зрения аналитика - они представляют собой инструмент подготовки и проведения имитационного моделирования и проверки гипотез. Но, к сожалению, классические объектные БД не могут выступать в роли инструмента анализа, проводимого по схеме восхождения от общего к частному и обратно.
Жаль… А ведь как привлекательна идея "данные, модели и методы в одном флаконе"! Так и хочется спросить: "Девушка, а у вас такого же, но с перламутровыми пуговицами не найдется?". Что ж, Технология - девушка запасливая: есть у нее и "с перламутровыми"…
Поиски путей согласования системного подхода с компьютерными технологиями хранения, поиска и обработки данных привели к разработке еще двух технологий: объектно-реляционной модели организации хранения данных и модели гетерогенных хранилищ данных (или хранилищ данных - Data Warehouse). Однако по порядку…
Объектно-реляционные базы данны1х
Парадигма объектно-реляционных БД объединяет основные преимущества реляционных СУБД и некоторые, унаследованные от объектных СУБД. Заметим, что "объектность" в объектно-реляционных СУБД иная, нежели в объектных СУБД - объектом в них являются данные (именно для манипуляций над ними разрабатываются методы), а не семантика связей реального мира. Это позволяет, с одной стороны, использовать механизмы наследования и переопределения, обращения к объектам с применением специализированных методов, а с другой - решать сложные аналитические задачи, связанные с логическим анализом значений атрибутов.
Одним из представителей этого класса систем является СУБД IBM DB2, обеспечивающая работу с различными классами данных, включая и классы, определенные пользователем. В ней предусмотрен ряд полезных возможностей: анализ совместимости типов данных и указание правил оперирования данными (например, исключающих возможность появления квадратных долларов при умножении стоимости на стоимость и т. д.), указания внешних ссылок на ресурсы, хранимые вне БД, создания лингвистических индексов (по Г.К. Зипфу) для больших текстовых массивов и иные. Не так уж и много, но и немало.
Конечно, такие возможности несколько разочаровывают, но при совершении некоторого "интеллектуального насилия" над СУБД, заключающегося в использовании механизма подключаемых внешних процедур, объектно-реляционная система приобретает те свойства, которые могут быть чрезвычайно полезны при создании информационно-аналитических систем. Например, может быть определен объект типа "модель", правила обращения с которым будут определены во внешних процедурах, что позволит использовать такую БД в качестве системы хранения компонентов моделей, или объектов типа "сценарий", что также весьма ценно… В этом случае СУБД сможет выступать в роли системы, которая помимо функции хранения данных сможет выполнять функции диспетчера, координирующего работу множества прикладных процессов, инициируемых событиями, обработка которых предусмотрена данной СУБД (например, вставка новой записи, изменение данных и т. д.).