Аннотация:
В современных технологиях реляционных баз данных механизм представлений (view) реализует внешний уровень архитектуры ANSI–SPARC, скрывая детали концептуальной структуры базы данных от конечных пользователей. Однако использование данного механизма сопряжено с необходимостью решения задачи корректного обновления представлений: СУБД должна обеспечить корректное выполнение операций вставки, удаления или обновления кортежа в представлении над соответствующими базовыми отношениями данного представления. Для решения указанной задачи в стандарте SQL вводится жесткое ограничение: модифицируемому кортежу представления может соответствовать только один кортеж в базовом отношении. Триггеры, реализующие обновление представлений, обладают рядом недостатков: необходимость создания триггера для каждого представления базы данных, непредсказуемый порядок запуска триггеров, относящихся к одному представлению и др. В статье рассматривается подход к решению данной задачи на основе применения коммутативных преобразований базы данных. При этом не накладывается ограничение единственности кортежа базового отношения, соответствующего обновляемой записи в представлении. Описан Сопроцессор СУБД, который размещается на клиентском компьютере и обеспечивает коммутативные преобразования в отношениях базы данных, хранимых на сервере. Сопроцессор выполняет формирование текста транзакции, реализующей коммутативные преобразования, и осуществляет запуск этой транзакции на сервере. Представлена реализация сопроцессора для свободной СУБД PostgreSQL. Проведены вычислительные эксперименты, подтверждающие эффективность предложенного подхода в приложениях классов OLAP и OLTP.