Ландшафт области управления данными: аналитический обзор

Вид материалаРеферат

Содержание


4. Объектно-реляционные отображения
4.1. История проблемы impedance mismatch и подходы к ее решению
4.2. Почему объектно-ориентированных программистов не устраивают ни объектные расширения SQL-ориентированных баз данных, ни ООСУ
4.3. Подходы к обеспечению объектно-реляционного отображения
4.4. Современное состояние и проблемы
Подобный материал:
1   2   3   4   5

4. Объектно-реляционные отображения


Большая часть современных производственных приложений, связанных с потребностью в обработке больших объемов данных, разрабатывается на различных объектно-ориентированных языках (C++, C#, Java и т.д.). Разработчики приложений работают в терминах прикладной объектной модели данных, и им удобнее и проще представлять в той же модели внешние данные. Хотя теоретически можно было бы воспользоваться объектными расширениями SQL или средствами ООСУБД, разработчики часто предпочитают использовать промежуточное программное обеспечение (middleware) «объектно-реляционного» отображения (object/relational mapping) для манипулирования прикладными объектами, размещаемыми в традиционных таблицах SQL-ориентированных СУБД.
4.1. История проблемы impedance mismatch и подходы к ее решению

В языках программирования и языках баз данных традиционно поддерживаются разные системы типов, разные способы доступа к данным и т.д. Возникает «потеря соответствия» (impedance mismatch) между системами типов и средствами доступа к данным языка программирования и системы баз данных. Это затрудняет разработку приложений, которые по своей специфике вынуждены часто обращаться к базе данных для доступа к требуемым им данным [47].

Как отмечалось выше, проблему «потери соответствия» пытались решать разработчики языков программирования баз данных, создатели ООСУБД и объектных расширений языка SQL. Альтернативным путем к решению этой проблемы является создание средств промежуточного программного обеспечения объектно-реляционного отображения.
4.2. Почему объектно-ориентированных программистов не устраивают ни объектные расширения SQL-ориентированных баз данных, ни ООСУБД?

Ситуация, сложившаяся на стыке объектно-ориентированного программирования и средств управления базами данных, кажется просто парадоксальной. Более 20 лет сообщество баз данных пытается предоставить сообществу объектно-ориентированного программирования средства управления данными, устраняющие потерю несоответствия. На это были направлены исследования и разработки в области языков программирования баз данных. Именно устранение потери соответствия с объектно-ориентированными языками программирования постулировалась в качестве основного довода в пользу ООСУБД в [49]. Вопросы сопряжения с объектно-ориентированными языками программирования серьезно учитывались при разработке объектных расширений языка SQL. И тем не менее, очень многие разработчики (а может быть, и подавляющее большинство разработчиков) приложений, создаваемых с использованием языков и сред объектно-ориентированного программирования, используют промежуточное программное обеспечение объектно-реляционного отображения, которое само взаимодействует с базами данных на основе базового подмножества языка SQL без использования каких-либо объектных расширений. Чем это можно объяснить?

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

Однако большинство современных приложений создается разработчиками средней квалификации. Обычно их учат грамотно и эффективно писать программы на одном языке или в одной среде программирования с максимальным использованием существующих компонентов. Программистам этой категории не по силам (да и не хочется) наряду с известным им объектно-ориентированным языком использовать еще и дополнительный язык баз данных, такой как SQL или язык запросов к объектно-ориентированным базам данных OQL. Средства объектно-реляционного отображения позволяют им в той или иной мере обойтись знанием одного языка.

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

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

В другой форме для организации объектно-реляционного отображения требуется кодирование вручную с использованием инструментальных средств, таких как JDBC или ADO.NET, ориентированных на работу с реляционными базами данных. Эти средства обеспечивают доступ к реляционным данным и их извлечение «вручную» в форме, более привлекательной для объектных разработчиков.

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

Наиболее масштабным проектом, связанным с обеспечением расширяемых возможностей объектно-реляционного отображения для целого ряда языков программирования, является LINQ компании Microsoft [50]. Первые реализации были выполнены для языков C# и Visual Basic.NET. Это очень крупный проект, на результаты которого компания делает высокую ставку. Однако в литературе [48] отмечается ряд проблем, полностью решить которые вряд ли удастся и в этом проекте.