Файл: Первый вопрос Иерархические базы данных.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 29.10.2023

Просмотров: 306

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Другая транзакция будет ожидать окончания первой транзакции

  1. Пусть первая транзакция накладывает S-блокировку на некоторую запись. Что справедливо относительно другой транзакции, обрабатывающей ту же самую запись?

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

  1. Как называется ситуация, когда с помощью некоторой транзакции осуществляется извлечение записей, в то время как другая успевает обновить какие-либо из считанных первой транзакцией данные и завершиться до окончания первой транзакции?

Проблема несовместимого анализа

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

П роцедура подсчета идет "сверху вниз" по таблице счетов и суммирует их. Допустим, процедура была запущена в момент времени t1. Далее, в момент времени между t1 и t2 была запущена транзакция, которая состояла из двух действий - снять 100 рублей со счета Иванова и перечислить их на счет Яковлева (к этому моменту процедура суммирования уже учла сумму на счете Иванова, но до Яковлева еще не дошла). Транзакция была очень короткой. После того, как транзакция была успешно завершена, ее результаты стали "видны" первой процедуре. Таким образом, когда она дойдет до записи со счетом Яковлева, ей будет учтена сумма в 500 рублей. В результате сумма счетов в "банке" будет на 100 рублей завышена.

Проблема решается наложением S -блокировки на считываемые данные (в нашем случае это ВСЕ данные) и наложением Х -блокировок на два объекта, между которыми перемещаются средства.

  1. Как называется ситуация, когда с помощью некоторой транзакции осуществляется извлечение (обновление) записи, которая в данный момент обновляется другой транзакцией, но это обновление еще не закончено?

Чтение грязных данных (незафиксированная зависимость)

Незафиксированная зависимость возникает в ситуации, если одна транзакция выполняет чтение (извлечение) некоторой строки таблицы БД, которая в данный момент обновляется другой транзакцией, но это обновление еще не зафиксировано. Первая транзакция выполнила чтение «грязных» данных, которых нет и не было в базе данных в результате аннулирования изменения более поздним откатом транзакции второй транзакции.


В том случае, когда изменения, сделанные второй транзакцией, сразу становятся видны всем остальным (режим "грязного чтения" - см. ниже), первая транзакция читает "измененные" данные. Проведя вычисления, первая транзакция фиксирует результат. Вторая же транзакция производит откат изменений, т.е. фактически значения баланса, прочитанного первой транзакцией, никогда не существовало! Стоит отметить, что, несмотря на то, что вторая транзакция была отменена, результаты первой транзакции были уже зафиксированы и отменены не будут.

Решается Х блокировкой

  1. Как называется ситуация, когда при одновременном выполнении двух транзакций по модификации одних и тех же данных результат работы одной из них аннулируется другой транзакцией?

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

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

Решается наложением Х блокировки

  1. Какой смысл несет термин "параллелизм" при функционировании СУБД?

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

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

  1. В чем состоит требование ссылочной целостности в реляционных СУБД?


Ответы в 3 и 7 вопросе

  1. В чем состоит требование категорной целостности в реляционной СУБД?

Категорная целостность — это сущностная целостность, то есть каждая запись должна быть уникальна.

Доп инфа в 6 вопросе
  1.   1   2   3   4   5


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

Durability - если транзакция была успешно завершена никакое внешнее событие не должно привести к потере совершенных ей изменений.

ACID (Atomicity - атомарность, consistency - консистентность, isolation - изолированность, durability - стойкость) это стандартный набор свойств, которые гарантируют, надежность транзакции.

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

Isolation - работающие одновременно транзакции не влияют друг на друга то есть многопоточная обработка транзакций производится таким образом чтобы результат их параллельного исполнения соответствовал результату их последовательного исполнения.

  1. Как называется свойство транзакции, требующее, чтобы после завершения транзакции БД отвечала всем возможным ожиданиям?

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

  1. Как называется свойство транзакции, требующее, чтобы были выполнены все транзакции или не была выполнена ни одна из них?

Atomicity – транзакции атомарны, то есть либо все изменения фиксируются (commit), либо все откатываются (rollback).

  1. Что такое SQL?

SQL (Structured Query Language — «язык структурированных запросов») — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.


Подразделяется на несколько подъязыков, а именно DDL (определение, создание данных), DQL (выборка, извлечение данных), DML (изменение, модификации данных), TCL (управление транзакциями)

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

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

SQL позволяет: получать доступ к данным в системах управления РБД, описывать данные (их структуру), определять данные в БД и управлять ими, взаимодействовать с другими языками через модули SQL, библиотеки и предваритальные компиляторы, создавать и удалять БД и таблицы, создавать представления, хранимые процедуры (stored procedures) и функции в БД, устанавливать разрешения на доступ к таблицам, процедурам и представлениям

  1. Где применяется протокол WAL (Write Ahead Log)?

При выполненные транзакции результаты операций записываются в специальную структуру данных (WRITE AHEAD LOG (журнал упреждающий записи)) как строки. Когда все операции выполнены успешно то все данные из WAL переносятся в базу данных. Если что-то случилось, то все данные ликвидируются из Wal и они не поступают в базу данных. В этом заключается принцип двойной записи. Это все замедляет работу базы данных, но это обеспечивает транзакционости.

Также применяется в случае сбоя системы, с помощью этого журнала при необходимости можно повторить предыдущие действия.

  1. Какие функции выполняет в СУБД процессор запросов?

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