1. Введение
Программные средства
управления данными составляют важнейшую часть системного программного
обеспечения. Сегодня, как и в прошлые годы, наиболее распространенной
категорией средств управления данными являются системы управления
базами данных (СУБД).
Однако все чаще возникает потребность в программных
средствах, характеристики которых существенно отличаются от
характеристик традиционных СУБД, и которые применяются в приложениях,
где универсальные SQL-ориентированные
СУБД слишком тяжеловесны и/или недостаточно функциональны и
эффективны.
Кроме того, и в самих «традиционных»
SQL-ориентированных
СУБД появляется все больше совсем нетрадиционных возможностей,
предназначенных для расширения их областей применения.
Тем самым, область
управления данными непрерывно расширяется, и в ней все труднее
ориентироваться. Тем более трудно написать материал осмысленного объема,
в котором анализировались бы все интересные черты современного
состояния этой области. В этом обзоре мы ограничиваемся некоторой
субъективной выборкой тем, относящихся к области управления данными,
которые кажутся нам наиболее существенными и перспективными, оставляя
вне рассмотрения ряд направлений, возможно, заслуживающих внимания.
Во втором, самом объемном разделе
обзора, обсуждаются наиболее интересные возможности, появившиеся в
последних версиях семи SQL-ориентированных
СУБД: трех ведущих коммерческих реляционных СУБД (Oracle,
IBM
DB2
и Microsoft
SQL
Server),
единственной российской коммерческой СУБД Линтер компании Релэкс и
трех наиболее развитых SQL-ориентированных
СУБД с открытыми исходными текстами (MySQL,
PostgreSQL
и Firebird).
Конечно, имеется ряд других SQL-ориентированных
СУБД, которые, безусловно, заслуживают внимания, но в данном обзоре авторы приняли решение ограничиться этой выборкой.
Третий раздел обзора посвящен
объектно-ориентированным СУБД (ООСУБД), которые были очень популярны
до конца 1990-х гг. В начале этого века интерес к ним упал ниже критической отметки,
но в последние годы ООСУБД начинают заново набирать популярность.
Описываются основные черты наиболее известных
ООСУБД прошлых лет и рассматриваются текущие события,
свидетельствующие о возрождении этого направления.
В четвертом разделе обсуждается
направление, целью которого является создание средств промежуточного
программного обеспечения, поддерживающего так называемое
объектно-реляционное отображение, т.е. возможность работы с
реляционными данными через объектную модель, на основе которой
строится приложение. Приводятся соображения авторов по поводу причин
неудовлетворенности объектно-ориентированных программистов базовыми
средствами SQL-ориентированных
и объектно-ориентированных СУБД, описываются категории средств
объектно-реляционного отображения и присущие им проблемы.
В пятом разделе рассматривается
состояние дел в направлении систем управления сенсорными и потоковыми
данными. Обсуждаются причины, по которым в соответствующих прикладных
областях непригодны универсальные СУБД. Описываются некоторые
исследовательские и коммерческие системы.
Шестой раздел посвящается системам
управления неструктурированными и полуструктурированными данными. В
частности, обсуждается состояние дел в направлении систем управления
XML-данными.
Наконец, в седьмом разделе рассматривается несколько фундаментальных
проблем области управления данными.
Некоторые из этих проблем частично решаются в системах, рассматриваемых в
предыдущих разделах, но в целом для их решения необходимо проведение масштабных
исследований и разработок.
2. Реляционные производственные системы
Основным видом систем
управления данными, с которыми работают приложения, являются
«реляционные», а точнее SQL-ориентированные СУБД. В этом
разделе описываются текущее состояние и проблемы этой области.
2.1. SQL как практическая замена реляционной модели данных
Сегодня для большинства
людей, не являющихся профессионалами в области баз данных, язык SQL
является практическим воплощением реляционной модели данных. В
действительности, в стандартах языка SQL
определяется некоторая собственная модель данных, в чем-то похожая на
реляционную модель, но значительно от нее отличающаяся [1].
SQL-ориентированная
база данных представляет собой набор таблиц, каждая из которых в
любой момент времени содержит некоторое мультимножество
строк, соответствующих заголовку таблицы. В этом состоит первое и
наиболее важное отличие модели данных SQL
от реляционной модели данных, в которой фундаментальная абстрактная
«родовая» структура данных отношение,
представляет собой множество
кортежей. Вторым существенным
отличием является того, что для таблицы поддерживается порядок
столбцов,
соответствующий порядку их определения. В реляционной модели данных
атрибуты отношения
не упорядочены. Другими словами, таблица – это вовсе не
отношение, хотя во многом они похожи.
Из этого, в частности, следует, что в
модели данных SQL отсутствует обязательное предписание об ограничении
целостности сущности. В базе данных могут существовать таблицы, для
которых не определен первичный ключ. С другой стороны, если для
таблицы определен первичный ключ, то для нее ограничение целостности
сущности поддерживается точно так же, как это требуется в реляционной
модели данных.
Ссылочная целостность в модели данных
SQL поддерживается в обязательном порядке, но в трех разных
вариантах, лишь один из которых полностью соответствует реляционной
модели. Это связано с интенсивным использованием в SQL неопределенных
значений.
Наличие модели данных
SQL,
похожей на реляционную модель данных, но принципиально от нее
отличающейся, затрудняет использование SQL-ориентированных
СУБД. Часто проектировщики баз данных не учитывают эти различия и
производят схемы SQL-ориентированных
баз данных с иногда неожиданным поведением. После появления
стандартов SQL:1999
и SQL:2003
[1], в которых определены возможности определения произвольно сложных
«пользовательских» типов данных и «типизированных»
таблиц, ситуация с проектированием SQL-ориентированных
баз данных еще больше усложнилась. Требуется проведение
исследовательских работ с целью выработки методологии использования
всех возможностей SQL,
понятной разработчикам приложений баз данных.
Содержание Вперёд