МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ТПИ
Курсовая работа
По дисциплине: «Технологии баз данных»
Факультет: ПМИ
Группа: ПМИ-21
Вариант: 2
Студент: Давыдов Д.В.
Преподаватель: Стасышин В.М.
Новосибирск
2015
-
Задание:
Изучение технологий тиражирования данных.
Вариант 2.
Схема репликации:
Многонаправленное тиражирование “Центр-филиалы”. Изменение (вставка, модификация, удаление), выполненное в одной из ПБД, тиражируются в ЦБД, после чего изменения реплицируются во все другие ПБД.
Запуск репликатора:
Запуск репликатора через определенный интервал времени в секундах, задаваемый при запуске программы РД.
Разрешение коллизий:
Разрешение коллизий в пользу более раннего обновления. Постановка задачи
Разрабатываемое программное обеспечение состоит из трех программ:
-
Программа инициализации данных (ИД).
-
Программа имитации работы системы (ИРС).
-
Программы репликатора данных (РД).
I. Программа инициализации данных генерирует и записывает данные во все таблицы, участвующие в реализуемой схеме модели репликации. Модель данных определяется выбранным вариантом.
При этом
- в поле даты/времени заносится текущее время инициализации данных;
- в поле идентификации операции заносится значение “начальные данные”.
Содержимое таблицы, идентичное во всех условных базах данных, запоминается в журнале содержимого таблиц (файл данных).
II. Программа имитации работы системы c определенной дискретностью (интервал в несколько секунд) моделирует процесс работы информационной системы, выполняя следующие действия:
- случайным образом выбирает одну из условных баз данных;
- случайным образом выбирает одну из операций (вставка/обновление/удаление);
- если выполняется операция вставки, то в выбранную базу данных вставляется строка, в которой:
- в поле даты/времени заносится текущее время вставки;
- в поле идентификации операции заносится значение “вставка в БДi”, где i=1,2…;
- в журнале изменений (файл данных) запоминается
- время вставки;
- база данных, в которую выполняется вставка;
- вставленная строка.
- если выполняется операция обновления, то в выбранной базе данных обновляется строка с минимальным oid, в которой:
- в поле даты/времени заносится текущее время обновления;
- в поле идентификации операции заносится значение “обновление в БДi”, где i=1,2…;
- в журнале изменений запоминается
- время обновления;
- база данных, в которую выполняется обновление;
- старое и новое состояние обновляемой строки.
- если выполняется операция удаления, то в выбранной базе данных удаляется строка с максимальным oid;
- перед удалением в журнале изменений запоминается
- время удаления;
- база данных, из которую выполняется удаление;
- удаляемая строка.
III. Программа репликатора данных работает в соответствии с моделью репликации, определенной условиями (схема репликации, условие запуска репликатора, способ разрешения коллизий), заданными в табл.1. После выполнения цикла репликации (переноса данных и обеспечения согласованного состояния таблиц) программа РД фиксирует в журнале содержимого таблиц:
- текущее время;
- содержимое всех таблиц условных баз данных (“ЦБД”, “ПБД” и т.д.).
-
Алгоритм решения задачи
Репликация — механизм синхронизации содержимого нескольких копий объекта (например, содержимого базы данных). Репликация — это процесс, под которым понимается копирование данных из одного источника на другой (или на множество других) и наоборот.
При репликации изменения, сделанные в одной копии объекта, могут быть распространены в другие копии.
Существует два вида репликации: синхронная и асинхронная.
Основным достоинством синхронной репликации является соблюдение принципов ACID на всех узлах. В основе синхронной репликации лежит двухфазный сетевой протокол.
Первая фаза: ведущий узел рассылает всем узлам SQL-запрос. Каждый узел проверяет корректность запроса и, если все нормально, отсылает OK.
Если подтверждение получено от всех узлов, начинается вторая фаза: ведущий отсылает команду на фиксацию запроса. Если на первой фазе хотя бы один узел не ответил OK, то мастер вместо подтверждения фиксации разошлет команду abort (отмена запроса).
Недостатки этого подхода: во-первых, он порождает сетевой трафик по обмену подтверждениями, во-вторых, снижает производительность, поскольку нужно ждать, пока все узлы будут синхронизированы.
Асинхронная репликация – это однофазный процесс.
Ведущий узел фиксирует свои изменения, но не занимается одновременной отсылкой запросов по узлам. Вместо этого он складывает их в очередь и выполняет отложенную рассылку запросов.
Узел при получении запроса просто фиксирует его. Реализация асинхронной репликации зависит полностью от правильной логики приложения. Главный недостаток этого подхода – это возможность рассинхронизации данных по узлам. Но у него есть и масса достоинств: уменьшение сетевого трафика, повышение производительности. У ведущего узла, что называется, развязываются руки – не нужно ничего контролировать и синхронизировать.
Реализуем асинхронную репликацию, это значит, что после обновления одной реплики , обновление на других распространится не в той же транзакции, а через некоторое время.
Согласно варианту коллизии решаются в пользу более раннего обновления.