Классика баз данных - статьи

       

что оптимизатор должен полагаться только


неявно

предполагается, что оптимизатор должен полагаться только на

спецификацию объектов и не затрагивать их реализацию.

Обосновывается это требованием обеспечения позднего связывания

(во время выполнения запроса) с объектами, когда во время

компиляции запроса неизвестна реализация операций.

Конечно, это правильно, если поддерживать возможности

переопределения внутренних структур данных и реализации операций

в подтипах в полном объеме. Заметим, однако, что потребности в

полиморфизме такого рода довольно ограничены и можно, например,

потребовать явного указания при определении типа тех операций,

которые допускается переопределять в подтипах.

Тогда при компиляции запроса (выраженного, например, с помощью

предложенной выше алгебры объектов) по типу каждого

класса-операнда можно определить, какие операции и внутренние

структуры данных являются общими для всех подклассов этого

класса.

Поскольку мы не хотим раскрывать инкапсуляцию объектов при

формулировании запросов, предикаты выборки объектов (это касается

оператора селекции) могут задаваться только с привлечением

операций класса (вернее операций типа этого класса). При

компиляции запроса можно отметить те предикаты, в которых

используются операции-инварианты подклассов данного класса.

После этого можно воспользоваться реализацией этих операций для

упрощения предикатов и сведения их в лучшем случае к предикатам

на внутренних атрибутах объектов. Фактически должно быть

произведено частичное вычисление предикатов выборки на основе

параметров логического выражения выборки и внутреннего

представления типа. Конечно, технически эта процедура может быть

выполнимой только в том случае, если в качества языка

программирования типов используется язык достаточно высокого

уровня (например, некоторый чисто функциональный или логический

язык).

Литература


  1. Malkolm Atkinson, Francois Bansilhon, David DeWitt, Klaus

    Dittrich, David Maier, Stanley Zdonik. The Object-Oriented

    Database System Manifesto // 1st Int.

    Содержание  Назад  Вперед