Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оптимизация запросов, управляемых правилами




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

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

Следовательно, очень заманчиво производить не законченные универсальные СУБД, а нечто вроде компиляторов (compiler compiler), позволяющих собрать систему баз данных, ориентиро­ванную на конкретное приложение (или класс приложений). Рас­смотрим простые примеры.

Так, в системах резервирования проездных билетов запросы обычно настолько просты (например: «выдать очередное место на рейс № 645»), что нет смысла производить широкомасштабную оптимизацию запросов. Однако информация, хранящаяся в базе данных, настолько критична (кто из нас не сталкивался с про­блемой наличия двух или более билетов на одно место?), что осо­бенно важны гарантированные синхронизация обновлений базы данных и ее восстановление после любого сбоя.

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

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

 

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

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

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

Решают эту проблему с помощью компромиссных решений, не выходящих за пределы традиционной технологии производ­ства компиляторов. В основном все они связаны с применением тех или иных инструментальных средств, обеспечивающих авто­матизацию построения компиляторов. Такие инструментальные средства имеются, например, в системах DB2, Oracle, Informix.

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 566; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.