Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Оптимизация: цели основы для ее выполнения. Каталог: понятие и назначение. Транзакции: определение, назначение и способ организации.

Отношения и переменные-отношения. Определение и смысл отношений. Примеры.

Термин «relation» (отношение) - это математическое название таблицы. На практике, неформально термины «таблица» и «отношение» используются как синонимы. Таблицы фактически являются переменными отношений (relation variable), т.е. их значения – это значения отношений.

Пример:

НомСлужащего ИмяСлужащего НомОтдела Зарплата
С1 Иванов Отд1 21K
С2 Петров Отд1 18K
С3 Никитин Отд2 20K
С4 Буденко Отд2 19K

Предположим, что мы удалили строку о сотруднике с фамилией «Буденко» (его номер «С4»):

DELETE Служащие WHERE НомСлужащего = «С4».

НомСлужащего ИмяСлужащего НомОтдела Зарплата
С1 Иванов Отд1 21K
С2 Петров Отд1 18K
С3 Никитин Отд2 20K

Концептуально это можно описать следующим образом: Старое значение отношения Служащие было заменено в целом совершенно другим, новым значением отношения. Т.е. приведенная операция удаления строки, по сути, - это просто другой, упрощенный способ записи операции реляционного присвоения: Служащие:= Служащие MINUS (Служащие WHERE НомСлужащего=«С4») Ключевое слово MINUS используется для описания оператора реляционной разности.

Оптимизация: цели основы для ее выполнения. Каталог: понятие и назначение. Транзакции: определение, назначение и способ организации.

Оптимизация:

Реляционные операторы, как уже отмечалось, выполняются на уровне множеств. Поэтому реляционные языки называют непроцедурными, так как пользователь определяет, что делать, но не как делать. Фактически пользователь определяет, что ему нужно, без указания процедуры получения результата. Процесс «навигации» по хранимой БД с целью удовлетворения запроса пользователя выполняется автоматически, а не пользователем вручную. Поэтому реляционные системы иногда называют системами автоматической навигации. В нереляционных системах ответственность за навигацию по базе данных несет, в основном, сам пользователь. Можно сказать, что реляционные языки, такие как SQL, обладают более высоким уровнем абстракции, чем типичные языки программирования (например, C++), либо подъязыки данных, относящиеся к нереляционным СУБД. Ответственность за то, как именно выполняется автоматическая навигация, несет очень важный компонент СУБД – оптимизатор. Другими словами, работа оптимизатора заключается в том, чтобы для каждого запроса пользователя выбрать самый эффективный способ выполнения этого запроса.

В общем случае оптимизатор для реализации конкретного реляционного запроса будет осуществлять выбор стратегии, исходя из соображений, подобных следующим:

· На какие переменные-отношения есть ссылки в запросе;

· Насколько велики эти переменные-отношения;

· Какие существуют индексы;

· Насколько избирательны эти индексы;

· Как физически группируются данные на диски;

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

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

 

Каталог:

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

Замечательным свойством реляционных систем является то, что каталог состоит также из переменных-отношений (или системных переменных-отношений, названных так для того, чтобы отличать их от пользовательских). В результате пользователь может обращаться к каталогу, как и к своим данным. Например, в каталоге обычно содержатся системные переменные-отношения TABLES и COLUMNS, назначение которых – описать известные системе таблицы (т.е. переменные-отношения) и столбцы этих таблиц. Примечание. Кроме того, каталог должен описывать самого себя, а значит, в системных переменных-отношениях должны присутствовать записи, соответствующие переменным-отношениям каталога.

 

Транзакции:

Как уже отмечалось, транзакция – логическая единица работы, обычно включающая несколько операций над базой данных. Для пользователя должна иметься возможность указать системе, что отдельные операции являются частью одной транзакции. Для этого используются операции BEGIN TRANSACTION, COMMIT и ROLLBACK. Как правило, транзакция начинается при выполнении операции BEGIN TRANSACTION и прекращается при выполнении операции COMMIT или ROLLBACK.

Свойства транзакций:

· Атомарность – гарантия (с логической точки зрения), что операции будут выполнены полностью или не выполнены вовсе, даже если в системе до окончания процесса выполнения произойдет сбой.

· Продолжительность – гарантия того, что если транзакция успешно выполнила оператор COMMIT, то все выполненные ею изменения будут реализованы в БД, даже если в системе в какой-то момент произойдет сбой.

· Изолированность. Если в системе выполняется одновременно несколько транзакций, то все изменения, сделанные одной из них, не будут видны остальным, пока она не выполнит оператор COMMIT.

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...