Объектная модель данных

Реляционная модель данных.

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

В первую очередь, реляционная модель отличается от ранних моделей данных тем, что основывается на математическом «фундаменте». Ключевое понятие реляционной модели, по которому она и получила свое название – отношение (англ. Relation) определено в терминах теории множеств. Соответственно, операции над отношениями также основываются на операциях над множествами.

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

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

Объектно-ориентированный подход к проектированию и разработке программного обеспечения завоевал большую популярность и сегодня является, пожалуй, основным из используемых подходов. Это положение неизбежно должно было отразиться и в сфере технологий баз данных. В конце 80-х – начале 90-х годов прошлого века вокруг объектно-ориентированных СУБД был определенный энтузиазм и некоторые исследователи заявляли, что объектно-ориентированные СУБД смогут всерьез конкурировать с реляционными и даже вытеснить их.

По прошествии лет стало ясно, что объектно-ориентированные СУБД заняли определенную нишу, но о вытеснении ими реляционных систем речь не идет. В этом разделе мы вкратце рассмотрим основные идеи объектно-ориентированных СУБД и поясним, почему они так и не получили широкого распространения.

Основное преимущество объектно-ориентированного подхода как такового – повышение уровня абстракции. Используя объектно-ориентированный подход, программист оперирует понятиями, взятыми из предметной области, что позволяет более адекватно отобразить ее в программный код, облегчает понимание программы и облегчает работу программиста. Предполагается, что применение объектно-ориентированных СУБД позволит получить эти же преимущества в сфере работы с базами данных.

В самом деле, между объектно-ориентированными языками программирования и реляционными базами данных имеется несоответствие – эти области оперируют разными терминами и используют разные подходы. Соответственно, для преодоления этого несоответствия необходимо прикладывать усилия. Чаще всего, это выливается в создание некоторой объектно-ориентированной «прослойки», скрывающей за собой детали работы с реляционными данными. Очевидно, что это усложняет систему и снижает производительность. Избавление от нее за счет использования СУБД, работающей в объектно-ориентированной парадигме, выглядит очень привлекательно.

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

Второй проблемой на пути создания и использования объектно-ориентированных баз данных является проблема производительности. ООСУБД отстают от реляционных систем по эффективности, и разрыв этот вряд ли будет преодолен.

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

Кроме того, одной из основных возможностей СУБД является возможность выполнения произвольных запросов к данным. Для объектно-ориентированных баз данных, где навигация по записям определена объектной моделью, а операции – реализованными методами, написание нерегламентированных запросов может оказаться попросту невозможным.

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

Так что, можно сказать, что объектно-ориентированные СУБД не реализуют функции, которые разработчики привыкли требовать от систем управления базами данных, и в этом, пожалуй, и заключается причина их низкой популярности.

И наконец, надо отметить, что потенциал реляционных СУБД в части определения и использования собственных типов данных еще далеко не исчерпан. Полноценная реализация работы с доменами вполне может заменить объектно-ориентированный подход. Достаточно подробно этот вопрос разбирает Дейт, так что интересующиеся могут обратиться к [1].

Поэтому, в настоящем курсе объектно-ориентированные СУБД подробно не рассматриваются, хотя некоторые нереляционные СУБД частично реализуют объектно-ориентированный подход, что будет показано при рассмотрении этой темы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: