Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы_Ткаченко.docx
Скачиваний:
242
Добавлен:
20.03.2016
Размер:
155.26 Кб
Скачать

13. Проблема несогласованных данных.

Проблемы несогласованных данных. Рассмотрим ту же самую ситуацию с заказом мониторов. Предположим, что ситуация несколько изменилась. И оба оператора начинают работать практически одновременно. Они оба получают начальное состояние склада 40 мониторов, а далее первый оператор успешно завершает переговоры со своим клиентом и продает ему 30 мониторов. Он завершает работу своего приложения, и оно выполняет команду фиксации транзакции COMMIT. Состояние базы данных непротиворечивое. В этот момент, выяснив все тонкости и характеристики наших мониторов, клиент второго оператора также решает сделать заказ, и второй оператор, повторно получая состояние склада, видит, что оно изменилось. База данных находится в непротиворечивом состоянии, но второй оператор считает, что нарушена целостность его транзакции, в течение выполнения одной работы он получил два различных состояния склада. Эта ситуация возникла потому, что приложение первого оператора смогло изменить кортеж с данными, который уже прочитало приложение второго оператора.

14. Проблема данных–призраков.

Проблемы строк-призраков (строк-фантомов). Предположим, что администратор нашей фирмы поручил секретарю напечатать итоговый отчет по результатам работы за текущий месяц. И допустим, что приложение печатает отчет в двух видах: в подробном и в укрупненном. В момент, когда приложение печати начало формировать свой первый вид отчета, один из операторов принимает еще один заказ, поэтому к моменту формирования укрупненного отчета в БД появились новые сведения о продажах, которые и были внесены в укрупненный отчет. Мы получили два отчета в одном приложении, которые содержат разные цифры и не совпадают друг с другом. Такое стало возможно потому, что приложение печати выполнило два одинаковых запроса и получило два разных результата. БД находится в согласованном состоянии, но приложение печати работает некорректно.

15. Синхронизация запросов к бд с использованием блокировок. Элементы бд. Необходимость блокировки элементов бд. Элемент как примитив синхронизации. Легальное расписание.

Основные элементы:

Поле – элементарная единица логической организации данных, которая соответствует неделимой единице информации – реквизиту.

Для описания поля используются следующие характеристики:

- имя, например, Фамилия, Имя, Отчество, Дата рождения;

- тип, например, символьный, числовой календарный;

- длина, например, 15 байт, причем будет определяться максимально возможным количеством символов;

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

Запись – совокупность логически связанных полей. Экземпляр записи – отдельная реализация записи, содержащая конкретные значения ее полей.

Файл (таблица) – совокупность экземпляров записей одной структуры.

Основные рабочие характеристики баз данных:

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

- правильная организация – чем лучше структурирована база данных, тем легче в ней найти необходимые сведения;

- актуальность – любая база данных может быть точной и полной, если она постоянно обновляется, т.е. необходимо, чтобы база данных в каждый момент времени полностью соответствовала состоянию отображаемого ею объекта;

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

Блокировка.

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

  1. блокировка со взаимным доступом, называемая также S-блокировкой (от Shared locks) и блокировкой по чтению.

  2. монопольная блокировка (без взаимного доступа), называемая также X-блокировкой от (eXclusive locks) или блокировкой по записи. Этот режим используется при операциях изменения, добавления и удаления объектов.

При этом:

  1. если транзакция налагает на объект X-блокировку, то любой запрос другой транзакции с блокировкой этого объекта будет отвергнут.

  2. если транзакция налагает на объект S-блокировку, то

  3. запрос со стороны другой транзакции с X-блокировокй на этот объект будет отвергнут

  4. запрос со стороны другой транзакции с S-блокировокй этого объекта будет принят

Транзакция, запросившая доступ к объекту, уже захваченному другой транзакцией в несовместимом режиме, останавливается до тех пор, пока захват этого объекта не будет снят.

Доказано, что сериализуемость транзакций (или, иначе, их изоляция) обеспечивается при использовании двухфазного протокола блокировок (2LP - Two-Phase Locks), согласно которому все блокировки, произведенные транзакцией, снимаются только при ее завершении. Т.е выполение транзакции разбивается на две фазы: (1) - накопление блокировок, (2) - освобождение блокировок в результате фиксации или отката.

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

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

  2. блокируются отдельные таблицы

  3. блокируются страницы (страница - фрагмент таблицы размером обычно 2-4 Кб, единица выделения памяти для обработки данных системой)

  4. блокируются записи

  5. блокируются отдельные поля

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

Элемент, как примитив синхронизации//Адекватного ответа не нашел

Неблокирующая синхронизация — подход в параллельном программировании на симметрично-многопроцессорных системах, проповедующий отказ от традиционных примитивов блокировки, таких, как семафоры, мьютексы и события. Разделение доступа между потоками идёт за счёт атомарных операций и специальных, разработанных под конкретную задачу, механизмов блокировки.

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

Легальное расписание:

Расписание правильно оформленных логических элементов работы, в котором повторная блокировка ранее блокированного объекта происходит после его разблокирования, называется легальным расписанием.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]