Введение в системы БД (542480), страница 248
Текст из файла (страница 248)
Таким образом, многие аргументы, высказанные против иерархического подхода в 70-х годах, применимы и теперь в контексте объектно-ориентированного подхода.) Несмотря на приведенные выше замечания, по-прежнему бытует мнение о том, что объектные системы являются большим шагом вперед на пути развития технологий управления базами данных.
В частности, считается, что объектные технологии весьма перспективны для "комплексных" приложений в следующих областях: ° системы автоматизированного проектирования и автоматизированного управления производством; ° системы комплексного автоматизированного управления технологическими процессами; ° системы автоматизированной разработки программного обеспечения; ° геоинформационные системы; ° наука и медицина; ° системы хранения и поиска документов и т.д. 945 Глава 24. Объектные базы данных (Отметим, что выше перечислены те области, в которых применение традиционных ЯОЬ-продуктов сопряжено со значительными трудностями.) В последние годы на эту тему опубликовано огромное количество технических статей, а также выпущено несколько соответствующих коммерческих продуктов.
В данной главе основное внимание уделяется объектной технологии в целом. Поэтому необходимо представить наиболее важные концепции объектного подхода и, в частности, рассмотреть эти концепции с точки зрения перспективы применения для управления базами данных (заметим, что большая часть имеющихся публикаций посвящена перспективам применения объектного подхода для программирования).
Данная глава имеет определенную структуру. В следующем подразделе представлен специальный пример, наглядно демонстрирующий неспособность современных реляционных продуктов удовлетворительно решать некоторые задачи, в результате чего у объектной технологии появляется шанс предоставить лучший вариант решения этой задачи. Затем, в разделе 24.2, предлагается обзор объектов, классов, сообщений и методов, а в разделе 24.3 уделяется внимание некоторым особенностям этих понятий, а также подробно обсуждается их содержание. В разделе 24.4 представлен достаточно простой пример.
В разделе 24.5 обсуждаются некоторые дополнительные вопросы. И наконец, в разделе 24.6 подводятся итоги обсуждения темы главы. В заключение сделаем следующее замечание. Вопреки тому, что объектные системы изначально предназначались для создания "сложных" приложений, таких как САПР1АСУТП, в дальнейшем для краткости и простоты изложения будут рассматриваться только очень простые примеры (отделы и сотрудники и т.п.). При этом такой упрошенный подход нисколько не уменьшает значимости объектной технологии; во всяком случае, если объектные базы данных работают хорошо, они должны легко справляться и с "простыми" задачами. Специальный пример Рассмотрим простой пример, предложенный Стоунбрейкером (ЯопеЪга)сег) и описанный автором этой книги в (24.17).
Данный пример иллюстрирует некоторые проблемы, присущие современным Я)Ь-продуктам. База данных, которая может рассматриваться как существенно упрощенная версия базы данных САПР1АСУТП, содержит сведения о прямоугольниках, заданных в такой системе координат, оси Х и у которой параллельны сторонам этих прямоугольников, т.е. все их стороны либо вертикальные, либо горизонтальные. Следовательно, каждый прямоугольник может быть уникальным образом представлен с помощью координат (х!,у1) и (х2,у2) нижнего левого и верхнего правого углов соответственно (рнс.
24.1). На языке $ОЬ это определение можно записать с помощью следующего оператора, СКЕЛЕ ТКВЕЕ КЕСТККЦйЕ ( х1 ... , Т1 ... , хг ... , Тг ... , ... , цк1()це ( х1, Е1, хг, ег ) ) Теперь рассмотрим запрос "Найти все прямоугольники, которые покрывают какую- нибудь область квадрата (О, 0, 1, 1)" (рис. 24.2). 946 Часть И. Объектные и объектно-реляционные базьь данных Рис. 24.1, Прямоугольник с координатаии Рис. 24.2. Квадрат с координатами (О, О, (х1, х2 у1, у2) 1, 1) "Очевидная" формулировка этого запроса на языке ЬО?.
может быть представлена следующим образом. ЯЕ? ЕСТ УКОМ КЕСТАНОЬЕЯ ИНЕКЕ ( Х1 >= 0 (Упражнение. Убедитесь в том, что эта формулировка действительно корректна.) Однако нетрудно догадаться, что данный запрос можно сформулировать и в более простой форме. ЯЕ? ЕСТ УКОМ КЕСТАНОЬЕЯ ИНЕКЕ ( Х1 <= 1 АНО У! <= 1 — нижний левый угол находится ниже и левее точки (1,1) АМО Х2 >= 0 АКО Х2 >= О ) ? — верхний правый угол находится выше и правее точки (0,0] 947 Глава 24. Объектные базы данных ОК ( Х2 >= О ОК ( Х1 >= О ОК ( Х2 >= 0 ОК ( Х1 <= 0 ОК ( Х1 <= 0 ОК ( Х? >= О ок ( хг >= о ОК ( Х1 <= 0 АМО Х1 <= 1 АНО У1 >= 0 АМО У! <= 1 ) — нижний левый угол внутри квадрата АНР Х2 <= 1 АНО Уг >= 0 АНО Уг <= 1 ) — верхний правый угол внутри квадрата АМП Х1 <= 1 АНО У2 >= 0 АНО У2 <= 1 ) — верхний левый угол внутри квадрата АНО Х2 <= 1 АНО У! >= 0 АНО У! <= 1 ) — нижний правый угол внутри квадрата АНО Х2 >= 1 АНП У1 <= 0 АЫЭ У2 >= 1 ) — прямоугольник полностьы ломещается в квадрат АНО Х2 >= 1 АМВ Х1 >= 0 АМО У1 <= 1 ) — нижний край пересекает квадра~ АНО Х1 <= 1 АНЭ У1 <= 0 АНО У2 >= 1 ) -- левый край пересекает квадрат АНО Х2 <= 1 АНО У1 <= 0 АКО Х2 >= 1 ) — правый край пересекает квадрат АНО Х2 >= 1 АНП Уг >= 0 АНО У2 <= 1 ) — верхний край пересекает квадрат (В упр.
24.3 в конце главы предлагается убедиться, что эта формулировка также корректна.) Возникает вопрос, может ли системный оптимизатор преобразовать исходную ллинную форму запроса в соответствующую ему краткую форму. Иначе говоря, предположим, что пользователь выражает запрос в "очевидной" (и, очевидно, неэффективной) длинной форме. Может ли система перед выполнением запроса сократить его формулировку, сделав ее более эффективной? В (24.17) приведено доказательство того, что это почти всегда невозможно, по крайней мере оптимизаторы современных коммерческих продуктов такой возможностью не обладают.
В любом случае, несмотря на то что краткая формулировка "более эффективна", ее производительность может оказаться неприемлемо низкой в большинстве современных реляционных продуктов, в которых используются обычные структуры памяти, например индексы в виле В-деревьев.(В среднем, система будет проверять 50% элементов индекса для каждой из координат Х1, Х2, У1 и У2.) Таким образом, можно утверждать, что современные реляционные продукты действительно несовершенны в некоторых отношениях. Точнее говоря, проблемы, подобные описанной выше, иллюстрируют, что в этих продуктах некоторые "простые" запросы пользователя неоправданно сложно формулируются и выполняются с неприемлемо низкой производительностью.
Именно эти соображения послужили основным побудительным мотивом для развития объектных систем. Замечание. В главе 25 (раздел 25.1) будет приведено "эффективное" решение задачи о прямоугольниках. 24.2. Объекты, классы, методы и сообщения Ниже представлены некоторые основные термины и концепции объектного подхода, а именно — сами объекты (естественно), объектные классы,.иетоды и сообщения. Там, где это возможно и уместно, данные понятия сравниваются с более знакомыми понятиями.
Фактически в весьма приблизительной форме объектную терминологию вполне можно соотнести с терминологией традиционного программирования (рис. 24.3). Рис. 24.3. Объектная терминология (сводка) Предупреждение. Прежде чем перейти к подробному освещению данной темы, необходимо предупредить читателя, что впредь не следует ожидать точности изложения, присущей реляционной теории. Действительно, многие объектные концепции (или их опубликованные определения) выражены не очень точно, относительно формулировки их определений единства мнений не достигнуто и разногласия возникают даже по фундамен- 948 Часть Л.
Обьектные и обьектно-реляционные базы данных тальным вопросам (в этом можно убедиться, прочитав работы [24.! 1], [24.48] и [24.52]). Например, не существует абстрактной, формально определенной "объектной модели данных", нет согласия даже в отношении неформальной модели.
(Поэтому в данной книге термин "объектная модель" приводится в кавычках.) Также, как это ни странно, нет четкого разграничения между уровнями абстракции, в частности (ключевого!) разграничения между самой моделью и ее реализацией. Напомним, что в главе ! описано, в чем заключается различие между этими концепциями. Читателя следует также предупредить о том, что, исходя из сказанного выше, определения и объяснения, прелложенные в этой главе, нв являются универсальными, а также не обязательно полностью соответствуют принципу работы всех реальных объектных систем.
Действительно, почти все предлагаемые здесь определения и толкования могут быть подвергнуты (и, вероятно, будут подвергнуты) критике со стороны специалистов. Обзор объектной технологии Вопрос: Что такое объект? Ответ: Все что угодно! Основной догмат объектного подхода — "объектом может быть все что угодно" (или иногда говорят "все что угодно — объект первого класса").