Московский государственный инженерно-физический институт (технический университет) распределенные базы данных
Объем
Кафедра-исполнитель
Автор программы Зайцев К.С.
Для групп К7-171, К7-172
Дата утверждения
Аннотация. В курсе изучаются задачи, возникающие при создании современных территориально распределенных информационных систем, и методы их решения в свете обеспечения независимости данных и операций.
Учебная задача. Данный курс является продолжением курса "Базы данных" в части организации баз данных сложных компьютерных систем, узлы которых территориально распределены. Подобные системы являются сегодня наиболее распространенными при решении многих государственных и коммерческих задач обеспечения деятельности хозяйствующих субъектов.
Структура курса: лекции - 24 часа, практические занятия - 8 часов,
Формы контроля: промежуточный - контрольная работа; итоговый - зачет, экзамен.
Содержание курса
Тема 1. Основные понятия
Причины создания. Глобальные транзакции и агенты – схемы обработки. Планирование и диспетчирование выполнения транзакций в распределенной системе.
Тема 2 Фундаментальный принцип создания
Фундаментальный принцип создания распределенных баз данных (РБД) и решаемые при этом задачи обеспечения независимости данных и операций.
Локальная автономия данных узла распределенной системы. Центральный и периферийные узлы. Способы организации данных. Независимость от центрального узла.
Обеспечение непрерывности функционирования РБД. Надежность и доступность системы в заданные временные интервалы. Способы достижения надежности и доступности.
Независимость от расположения данных на узлах. Понятие прозрачности данных. Распределение таблиц БД между узлами сети. Метод Белла и Гримсона.
Тема 3. Независимость от фрагментации и репликации.
Независимость от фрагментации. Горизонтальная и вертикальная фрагментация и их связь с операциями SELECT и PROJECT. Изменение схемы фрагментации в процессе работы.
Независимость от репликации и обработка распределенных запросов. Анализ моделей данных при работе с РБД. Обмен сообщениями при работе с РБД, время обработки сообщений.
Тема 4. Поисковые запросы в рбд
Стратегии реализации поисковых запросов в РБД. Источники и причины сокращения времени передачи данных между узлами. Задержка доступа и интенсивность обмена. Использование операции «Полусоединение» для обработки запросов.
Управление каталогом РБД. Схемы хранения каталога, их преимущества и недостатки. Влияние принципов именования объектов промышленных РБД на ведение каталога. Локальные и системные имена.
Тема 5 Распространение обновления и управление транзакциями
Распространение обновления отношений по узлам распределенной системы. Одновременность обновления и стратегия первичной копии.
Управление распределенными транзакциями. Восстановление транзакций и протокол двухфазной фиксации. Точка фиксации и операции COMMIT и ROLLBACK. Журнал выполнения транзакций для РБД.
Тема 6 Восстановление системы
Восстановление распределенной системы. Контрольные точки в системном журнале и их использование для восстановления системы. Списки повторяемых и отменяемых транзакций. Двухфазная фиксация при восстановлении системы.
Управление параллелизмом выполнения транзакций. Распределенная двухфазная блокировка. Использование меток времени для управления параллелизмом. Операции чтения и записи в РБД.
Тема 7 Независимость от компьютерной платформы и СУБД
Независимость РБД от компьютерной платформы. Особенности гомогенных и гетерогенных распределенных систем. Влияние аппаратного обеспечения и операционных систем на создание РБД.
Независимость от СУБД. Шлюзы и их использование в РБД. Совместимость языков запросов различных СУБД и стандарты SQL. Взаимодействие узлов с реляционной и не реляционной СУБД в распределенной системе.
Тема 8 Системы типа клиент-сервер
Системы типа клиент-сервер и их стандарты. SQL/92, SQL для рабочих групп (SAG) и удаленный доступ к данным (RDA). Стандарт архитектуры реляционной БД (DRBA).
Примеры прототипов и промышленных РБД.
ЛИТЕРАТУРА
Основная
1. Хансен Г., Хансен Д. Базы данных: разработка и управление : -М.: ЗАО «Издательство БИНОМ», 1999. – 704с.
2. Дейт К. Введение в системы баз данных. –Киев-Москва: Диалектика, 1998.
3. Озкарахан Э. Машины баз данных и управление базами данных. –М.: Мир, 1989. – 696с.
Дополнительная
1. Корнеев В.В., Гарев А.Ф., Васютин С.В., Райф В.В. Базы данных. Интеллектуальная обработка информации. -М:, Нолидж, 2000.
2. Энсор Д., Стивенсон Й. ORACLE. Проектирование баз данных. -К: BHV, 2000
Экзаменационных билетов (примеры).
1.
1.1. Локальная автономия данных узла распределенной системы. Центральный и периферийные узлы. Способы организации данных. Независимость от центрального узла.
1.2. Для модели данных, состоящей из отношений:
Поставщики (П#, Пнаимен., Статус, Город) 1.000 кортежей на узле А,
Детали (Д#, Днаимен., Вес, Цвет) 100.000 А,
Проекты (Пр#, ПрНаимен., Город) 1.000 В,
Поставки (П#, Д#, Пр#, Количество) 1.000.000 С
предложить варианты горизонтальной и вертикальной фрагментации.
2.
2.1. Независимость от фрагментации. Горизонтальная и вертикальная фрагментация и их связь с операциями SELECT и PROJECT. Изменение схемы фрагментации в процессе работы.
2.2. Вычислить полусоединение соединяемых отношений
R1=X Y Z R2= Z V W
c b a a d e
d e f a f h
c b d b a b
e a b c d c
h j k c b a
находящихся на узлах 1 и 2 соответственно, если запрос пришел с узла 1. Проиллюстрировать эти действия.
3.
3.1. Стратегии реализации поисковых запросов в РБД. Источники и причины сокращения времени передачи данных между узлами. Задержка доступа и интенсивность обмена. Использование операции «Полусоединение» для обработки запросов.
3.2. Для транзакций, выполняемых в системе предложить и обосновать время (такт) контрольной точки, если авария произошла в момент t10/
Транзакции/Метки
Такты времени |
Т1/5 |
Т2/10 |
Т3/15 |
Т4/20 |
Т5/25 |
|
t1 |
|
|
|
|
Read (B) |
|
t2 |
|
Read (A) |
|
|
|
|
t3 |
Write (B) |
|
Write (D) Read(C) |
|
Read (D) |
|
t4 |
|
|
|
|
|
|
t5 |
|
Read (D) |
|
|
|
|
t6 |
|
|
|
|
|
|
t7 |
Read (A) Write (C) |
|
|
Write (C) |
|
|
t8 |
|
|
|
|
|
|
t9 |
|
|
|
|
Write (C) Write (B) |
|
T10 |
|
|
|
|
|
|
4.
4.1. Стратегии реализации поисковых запросов в РБД. Источники и причины сокращения времени передачи данных между узлами. Задержка доступа и интенсивность обмена. Использование операции «Полусоединение» для обработки запросов.
4.2. Для модели данных, состоящей из отношений:
Поставщики (П#, Пнаимен., Статус, Город) 1.000 кортежей на узле А,
Детали (Д#, Днаимен., Вес, Цвет) 100.000 А,
Проекты (Пр#, ПрНаимен., Город) 1.000 В,
Поставки (П#, Д#, Пр#, Количество) 1.000.000 С
Определить оптимальную стратегию обработки распределенного запроса "Получить сведения о Проектах в Москве, для которых Поставщики из Москвы поставляют красные Детали". Интенсивность обмена - 50.000 bit/c,
задержка доступа - 0.3 с. Дополнительную количественную информацию выбрать самостоятельно.
5.
5.1. Восстановление распределенной системы. Контрольные точки в системном журнале и их использование для восстановления системы. Списки повторяемых и отменяемых транзакций. Двухфазная фиксация при восстановлении системы.
5.2. Вычислить полусоединение соединяемых отношений
R1=X Y Z R2= Z V W
c b a a d e
d e f a f h
c b d b a b
e a b c d c
h j k c b a
находящихся на узлах A и B соответственно, если запрос пришел с узла B. Проиллюстрировать эти действия по шагам.
6.
6.1. Управление параллелизмом выполнения транзакций. Распределенная двухфазная блокировка. Использование меток времени для управления параллелизмом. Операции чтения и записи в РБД.
6.2. Получим ли мы выигрыш в передаче данных, если будем использовать операцию полусоединения для таблиц A и В, расположенных на разных узлах системы
A=X Y Z B= Z V W
c b a a d e
d e f a f h
c b d b a b
e a b c d c
h j k c b a
Вопросы к зачету (примеры)
1 Учитывая, что в распределенной системе имеется шесть узлов емкостью 20 Mb каждый, произвести распределение файлов модели данных “Поставщики-Детали-Проекты-Поставки”, используя если необходимо фрагментацию и репликацию файлов
Файлы (Mb)
Узлы |
1(15) |
2(10) |
3(12) |
4(30) |
1 |
130 |
12 |
100 |
12 |
2 |
150 |
56 |
45 |
34 |
3 |
20 |
12 |
65 |
67 |
4 |
12 |
17 |
66 |
120 |
5 |
150 |
6 |
8 |
54 |
6 |
7 |
45 |
1 |
150 |
Далее, учитывая распределенность таблиц, на языке реляционной алгебры сформулировать следующие запросы:
1. Найти номера Проектов, для которых Детали поставляют Поставщики из Москвы и Твери.
2. Определить наименования Поставщиков, поставляющих для Проектов с номерами 56 и 71 “Шайбы” и “Болты”.
3. Найти наименования Поставщиков из Калуги, поставляющих для Проекта “Синхрофазатрон”, по крайней мере, те же детали, что и Поставщик П12.
--------------------------------------------------------------------------------------------------------
2 Учитывая, что в распределенной системе имеется пять узлов емкостью 25 Mb каждый, произвести распределение файлов модели данных “Больница-Врач-Палата-Лаборатория-Пациент-Персонал”, используя если необходимо фрагментацию и/или репликацию файлов
Файлы (Mb)
Узлы |
1(10) |
2(15) |
3(10) |
4(5) |
5(12) |
6(10) |
1 |
130 |
12 |
100 |
12 |
12 |
110 |
2 |
150 |
56 |
45 |
34 |
56 |
15 |
3 |
20 |
12 |
65 |
67 |
30 |
5 |
4 |
12 |
17 |
66 |
120 |
12 |
15 |
5 |
150 |
6 |
8 |
54 |
17 |
10 |
Далее, учитывая распределенность таблиц, на языке реляционной алгебры сформулировать следующие запросы:
1. Найти личные номера обслуживающего Персонала Больницы, работающего в тех же Лабораториях, что и Врачи, лечившие Пациента “Куркина А.В.”.
2. Определить названия Палат, в которых практиковали Врачи, лечившие Пациентов с регистрационными номерами с N5 по N12/
3. Найти специальности Врачей, не работавших в тех Палатах, где проходили лечение Пациенты, с группой крови “В 2”.
--------------------------------------------------------------------------------------------------------
3. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц X,Y и Z в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц X,Y и Z равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел, соответственно 1, 2, 3 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времени |
Т1/1 |
Т2/2 |
Т3/3 |
Т4/4 |
Т5/5 |
|
t1 |
|
|
|
|
Read (Y) |
|
t2 |
|
Read (X) |
|
|
|
|
t3 |
Read (X) |
|
Write (X) Write (Z) |
|
Read (Z) |
|
t4 |
|
|
|
|
|
|
t5 |
|
Read (Z) |
|
|
|
|
t6 |
|
|
|
|
|
|
t7 |
Read (Y) |
|
|
Write (Z) |
|
|
t8 |
|
|
|
|
|
|
t9 |
|
|
|
|
Write (Y) Write (Z) |
|
T10 |
|
|
|
|
|
|
Заполнить журнал регистрации транзакций, начиная с момента t1.
----------------------------------------------------------------------------
4. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц A,B,C и D в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел {5,10,15,20,25,…}, соответственно 5, 10, 15 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времени |
Т1/5 |
Т2/10 |
Т3/15 |
Т4/20 |
Т5/25 |
|
t1 |
|
|
|
|
Read (B) |
|
t2 |
|
Read (A) |
|
|
|
|
t3 |
Write (B) |
|
Write (D) Read(C) |
|
Read (D) |
|
t4 |
|
|
|
|
|
|
t5 |
|
Read (D) |
|
|
|
|
t6 |
|
|
|
|
|
|
t7 |
Read (A) Write (C) |
|
|
Write (C) |
|
|
t8 |
|
|
|
|
|
|
t9 |
|
|
|
|
Write (C) Write (B) |
|
T10 |
|
|
|
|
|
|
Заполнить журнал регистрации транзакций, начиная с момента t1.
Тексты контрольных работ (примеры)
1.
1.1. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц X,Y и Z в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц X,Y и Z равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел, соответственно 1, 2, 3 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времени |
Т1/1 |
Т2/2 |
Т3/3 |
Т4/4 |
Т5/5 |
|
t1 |
|
|
|
|
Read (Y) |
|
t2 |
|
Read (X) |
|
|
|
|
t3 |
Read (X) |
|
Write (X) Write (Z) |
|
Read (Z) |
|
t4 |
|
|
|
|
|
|
t5 |
|
Read (Z) |
|
|
|
|
t6 |
|
|
|
|
|
|
t7 |
Read (Y) |
|
|
Write (Z) |
|
|
t8 |
|
|
|
|
|
|
t9 |
|
|
|
|
Write (Y) Write (Z) |
|
T10 |
|
|
|
|
|
|
Заполнить журнал регистрации транзакций, начиная с момента t1.
1.2. Далее, используя механизм контрольных точек, провести восстановление системы после отказа в момент времени t10 для двух случаев:
-
контрольная точка – t4;
-
контрольная точка – t8.
Определить в каком порядке завершатся транзакции и какие метки будут иметь строки таблиц X,Y и Z после проведения процедуры восстановления.
----------------------------------------------------------------------------
2
2.1. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц A,B,C и D в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел {5,10,15,20,25,…}, соответственно 5, 10, 15 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времени |
Т1/5 |
Т2/10 |
Т3/15 |
Т4/20 |
Т5/25 |
|
t1 |
|
|
|
|
Read (B) |
|
t2 |
|
Read (A) |
|
|
|
|
t3 |
Write (B) |
|
Write (D) Read(C) |
|
Read (D) |
|
t4 |
|
|
|
|
|
|
t5 |
|
Read (D) |
|
|
|
|
t6 |
|
|
|
|
|
|
t7 |
Read (A) Write (C) |
|
|
Write (C) |
|
|
t8 |
|
|
|
|
|
|
t9 |
|
|
|
|
Write (C) Write (B) |
|
T10 |
|
|
|
|
|
|
Заполнить журнал регистрации транзакций, начиная с момента t1.
2.2.. Далее, используя механизм контрольных точек, провести восстановление системы после отказа в момент времени t10 для двух случаев:
-
контрольная точка – t4;
-
контрольная точка – t8.
Определить в каком порядке завершатся транзакции и какие метки будут иметь строки таблиц после проведения процедуры восстановления.
----------------------------------------------------------------------------------------------------------------------
3
3.1. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц X,Y и Z в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц X,Y и Z равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел, соответственно 1, 2, 3 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времени |
Т1/1 |
Т2/2 |
Т3/3 |
Т4/4 |
Т5/5 |
T6/6 |
t1 |
|
|
|
|
Read (X) |
|
t2 |
|
Read (Y) |
|
|
|
|
t3 |
Read (X) |
|
Write (Z) |
|
Read (Z) |
Read (Y) |
t4 |
|
|
|
|
|
|
t5 |
|
Read (Z) Write (X) |
|
Read (X) Write (Y) |
|
|
t6 |
Read (Y) |
|
|
|
|
|
t7 |
|
|
|
|
|
|
t8 |
|
|
|
|
|
Write (Z) |
t9 |
|
|
|
|
Read(Y) Write (Z) |
|
T10 |
|
|
|
|
|
|
Заполнить журнал регистрации транзакций, начиная с момента t1.
2. Далее, используя механизм контрольных точек, провести восстановление системы после отказа в момент времени t10 для двух случаев:
-
контрольная точка – t4;
-
контрольная точка – t7.
Определить в каком порядке завершатся транзакции и какие метки будут иметь строки таблиц X,Y и Z после проведения процедуры восстановления.
----------------------------------------------------------------------------
4
4.1. Используя протокол меток времени, определить в каком порядке завершатся транзакции Т1, Т2 и т.д. и какие метки будут иметь строки таблиц X,Y,Z и т.д. в безотказно работающей системе. Изначально известно, что времена чтения (Read) и записи (Write) строк таблиц равны 0; транзакции Т1, Т2, Т3 и т.д. при первом запуске получили метки из возрастающей последовательности целых чисел, соответственно 2, 4, 6 и т.д. Если транзакция прерывается, то при новом запуске ей присваивается очередная метка из последовательности меток, а времена исполнения ее агентов смещаются на один такт времени.
Транзакции/Метки
Такты времен |
Т1/2 |
Т2/4 |
Т3/6 |
Т4/8 |
Т5/10 |
T6/12 |
T7/14 |
T1 |
|
|
|
|
Read(Y) |
|
|
T2 |
|
Read(X) |
|
|
|
|
|
T3 |
Read(X) |
|
Write(X) Write(Z) |
|
Read(Z) |
|
|
T4 |
Read(Y)Write(V) |
Read(Z) |
|
|
|
|
|
T5 |
|
|
|
|
|
|
|
T6 |
|
|
Read(W) |
|
|
|
Read(X) |
T7 |
|
|
|
|
|
|
|
T8 |
|
Read(W) |
|
Write(Z) |
|
Read(Z) |
|
T9 |
|
|
Write(V) Write(W) |
|
Write(Y) Write(Z) |
|
|
T10 |
|
|
|
|
|
|
|
T11 |
|
|
|
|
Read(V) |
Write(V) |
|
T12 |
|
|
|
|
|
|
|
T13 |
|
|
|
|
Read(W) |
|
Write(V) |
Заполнить журнал регистрации транзакций, начиная с момента t1.
2. Далее, используя механизм контрольных точек, провести восстановление системы для двух случаев:
-
после отказа в момент времени t10 для контрольной точки – t5,
-
после отказа в момент времени t12 для контрольной точки – t7.
Определить в каком порядке завершатся транзакции и какие метки будут иметь строки таблиц после проведения процедуры восстановления.