Домашнее задание 6.
Срок сдачи – 5 мая ДО лекции. Задания могут сдаваться в лаборантскую кафедры (Айслу) в любой из предыдущих дней.
В задании приведите условия задач и явно укажите все сделанные вами дополнительные предположения, если таковые у вас имеются. Будьте внимательны, для решения могут понадобиться не все условия. Если вам кажется, что условий не хватает, проанализируйте имеющиеся данные, возможно, их будет вполне достаточно для ответа на поставленный вопрос.
Задавайте вопросы на *****@***ru
Задача 1 (25 очков)
Рассмотрим систему, использующую протокол-возврата и вырабатывающую следующую последовательность в файле протокола (в указанном порядке):
<START Т>; <T, A, 10>; <T, B, 20>; <T, C, 30>; <T, D, 40>; <COMMIT T>
Одна из возможных последовательностей действий Приводящих к такому протоколу могла быть: Log(A); Log(B); Write(A); Log(C); Write(B); Log(D); Write(C); Write(D); Log(Commit);
Где Log(X) означает действие, записывающее на диск запись протокола для действия X, а Write(X) – действие, обновляющее объект базы данных X на диске.
Приведите все возможные легальные последовательности действий (при использовании протокола возврата) удовлетворяющие всем трем следующим условиям:
- Последовательность действий приводит к вышеприведенному файлу протокола; Write(A) стоит в этой последовательности раньше Log(C); Write(B) стоит в этой последовательности раньше Log(D).
Используйте для последовательности те же обозначения, что и в примере.
Задача 2 (30 очков)
Пусть протокол-возврата, сгенерированный транзакциями T и U - следующий:
<START T>;<T, A, 10>;<START U>;<U, B, 20>;<T, C, 30>;<U, D, 40>;<COMMIT U>;<T, E, 50>;<COMMIT T>.
Опишите действия по восстановлению, включая изменения в базе данных на диске и файле протокола, если в результате сбоя последняя запись в файле протокола на диске:
a) <START U>
б) <T, E, 50>
в) <COMMIT T>
Задача 3 (25 очков)
Рассмотрим систему, использующую протокол-повтора со следующей последовательностью записей (в указанном порядке):
<START>; <T, A, 10>; <T, B, 20>; <T, C, 30>; <T, D, 40>; <COMMIT T>
Приведите все возможные легальные последовательности действий (с использованием протокола-повтора), удовлетворяющие всем 3-м следующим условиям:
- Последовательность действий производит заданную последовательность записей в протоколе; Write(A) стоит в этой последовательности раньше Write(C); Log(B) стоит в этой последовательности раньше Log(D).
Для определения последовательности используйте обозначения примера задания 1.
Задача 4 (20 очков)
Рассмотрим следующий протокол-возврата-повтора с контрольными точками:
1) <START T1>
2) <T1, A, 50, 10>
3) <START T2>
4) <T1, B, 130, 10>
5) <T1, A, 70, 50>
6) <T2, C, 20, 10>
7) <T2, D, 30, 10>
8) <COMMIT T1>
9) <START T3>
10) <T3, E, 60, 10>
11) <T2, D, 40, 30>
12) <START CKPT (T2,T3)>
13) <T2, C, 70, 20>
14) <COMMIT T2>
15) <START T4>
16) <T4, F, 100, 10>
17) <T4, G, 110, 10>
18) <COMMIT T3>
19) <T4, F, 150, 100>
20) <END CKPT>
21) <T4, F, 140, 150>
22)<COMMIT T4>
Предположим, что записи протокола имеют формат <T, переменная, старое значение, новое значение >. Какими будут значения объектов базы данных A, B, C, D, E, F, и G на диске после восстановления:
a) если система дает сбой перед записью строки 10 на диск?
б) если система дает сбой перед записью строки 15 на диск?
в) если система дает сбой перед записью строки 16 на диск?
г) если система дает сбой перед записью строки 19 на диск?
д) если система дает сбой перед записью строки 22 на диск?
е) если система дает сбой сразу после записи строки 22 на диск?


