

19. Распределенные системы, фрагментация и репликация данных
ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЕННЫХ СИСТЕМ
Недостатки централизованных систем:
1) Медленный отклик при территориально удаленном сервере.
2) Низкая надежность из-за единого центрального узла, низкая доступность.
Вариант решения - распределение данных по сети.
Распределённая БД - это совокупность разделяемых логических данных, физически распределённых в компьютерной сети.
Распределённая система - это система, позволяющая работать с распределенной БД и обеспечивающая полную или частичную прозрачность распределенности данных.
Особенности распределенной системы:
1. Распределенные данные логически связаны.
2. БД может быть разделена на части (фрагменты).
3. БД или фрагменты могут иметь копии (реплики).
4. Фрагменты и реплики распределены по узлам сети.
5. На серверах могут выполняться локальные и глобальные приложения.
6. Каждый узел работает под управлением СУБД.
7. Каждый узел должен участвовать хотя бы в одном глобальном приложении.
8. На серверах могут автономно выполняться локальные приложения.
Основной принцип: распределенная система с точки зрения пользователя должна вести себя как нераспределенная.
Основной принцип: распределенная система с точки зрения пользователя должна вести себя как нераспределенная.
Для распределенных систем выполняются следующие правила Дейта:
1) Локальная автономность: если другие узлы вышли из строя, то вы можете выполнять автономно свои задачи;
2) Отсутствие фиксированных центральных узлов, решающих общие задачи;
3) Непрерывность работы: на работу пользователей не должны влиять модификации в системе;
4) Независимость от фрагментации данных: пользователь не должен ощущать деление на фрагменты;
5) Независимость от репликации данных;
6) Независимость от места расположения;
7) Поддержка выполнения распределенных запросов;
8) Поддержка выполнения распределенных транзакций;
9) Независимость от оборудования;
10) Независимость от операционной системы;
11) Независимость от сети;
12) Независимость от СУБД.
ОРГАНИЗАЦИЯ РАСПРЕДЕЛЕННЫХ ДАННЫХ
ФРАГМЕНТАЦИЯ
Фрагментация - это разделение БД на 2 или более частей.
Требования к фрагментации:
1. Требования к полноте и непересекаемости: каждый элемент должен входить только в один фрагмент.
2. Восстанавливаемость: должна существовать процедура точного восстановления базы по фрагментам.
Существуют следующие варианты фрагментации:
1. Горизонтальная - таблица делится на подмножества картежей.
Подмножества определяются заданным предикатом.
Фрагментация выполняется операцией ограничения по выбранным условиям, а дефрагментация - операцией объединения.
2. Вертикальная фрагментация - таблица делится на подмножества атрибутов.
Выполняется операцией проекции на столбцы, дефрагментация - операцией соединения по первичному ключу.
3. Смешанная фрагментация - сначала выполняется вертикальная, а затем горизонтальная фрагментация или наоборот.
4. Производная фрагментация - фрагментация дочерней таблицы в соответствии с горизонтальной фрагментацией родительской таблицы.
Общая последовательность фрагментации:
1) Определяются нефрагментируемые таблицы;
2) Выполняется основное фрагментирование (таблицы фрагментируются на кусочки);
3) Производное фрагментирование (зависит от того, как фрагментировались таблицы).
РЕПЛИКАЦИЯ
Репликация - это создание и ведение копий БД или фрагментов (ее частей).
Варианты репликации:
1. По моменту исполнения:
§ Синхронная. Обновление в реплике вместе с обновлением исходного варианта. Для реализации репликации включают в транзакцию. Также они могут использоваться в триггерах.
§ Асинхронная. Обновление выполняется в отложенном режиме (по расписанию, по желанию пользователя).
2. По объёму захвата: полная и выборочная.
3. По способу обновления: моментальным снимком, инкрементное, транзакционное.
При моментальных снимках полный объём всей основной реплики копируется в удалённые узлы. При этом блокируются операции копирования данных. Это хорошо, если объём невелик и копирование происходит нечасто.
Транзакционные снимки: копируются только изменения данных. Репликация происходит время от времени. В промежуток времени изменения накапливаются, и в момент репликации все изменения отрабатываются на копиях. Имеет смысл, если изменений немного. Если изменения выполняются часто, то объём копируемых данных может быть больше, чем моментальный снимок.
4. По стороне инициализации: от подчиненной, от главной.
5. По схеме обновления:
А) Ведущий-ведомый (основной): данные обновляются только в главной реплике, обновляются подчиненные. Главная реплика фиксирована. Переназначение может быть осуществлено средствами администрирования, а не в программном коде.
Б) Рабочий поток: данные меняются только в одной реплике, в остальные обновляются, но главная реплика может менять место.
В) Симметричная схема: обновление может выполняться на любой стороне. Может возникнуть конфликт обновления. Для разрешения конфликта выполняется выбор по одному или нескольким признакам:
- репликам могут быть присвоены приоритеты;
- по косвенным данным (временные метки);
- по значению (выбор максимального или минимального) и др.
6. Принудительный вариант или по запросу. При принудительном варианте репликация выполняется по инициативе ведущего по заданному расписанию. Репликация по запросу выполняется по инициативе ведомого.
В зависимости от реализации может быть разный уровень прозрачности распределения:
1) Прозрачность фрагментации (скрыто разбиение БД на фрагменты).
2) Прозрачность репликации (не видим реплик, но видим фрагменты).
3) Прозрачность места положения (видны реплики).
Фрагментацию следует применять при высокой степени разделения данных или операциях изменения данных.
При среднем уровне разделяемости данных использование фрагментации зависит от соотношения локальных и глобальных вопросов. Хороший результат может дать репликация.
При низкой степени разделяемости данных, возможно, следует отказаться от распределений системы.
Операции с распределенными данными
1) Распределенный запрос: с узла инициализации запрашивается информация на нескольких узлах.
Варианты решения:
- на инициализирующий узел записываются таблицы с интересующими данными;
- перезапись на узел инициализации отфильтрованных данных от других узлов;
- выполнение промежуточных соединений на удаленных узлах, окончательная сборка на своем узле.
Все сборки (промежуточные и окончательные) производятся в наиболее подходящих узлах.
2) Распределенные транзакций: инициализация на одном из узлов, по ходу выполнения инициализирует подтранзакции, результаты возвращаются на узел инициализации.
Существует 2 проблемы:
1) обеспечение параллельности транзакций. Основное решение - распределенная блокировка данных.
2) Фиксация транзакции. Можно просмотреть какие данные заблокированы и выбрать, распределенная схема блокировки данных.
Для фиксации распределенной транзакции рекомендуется протокол двухфазового подтверждения (фиксации). Выделяется 2 этапа:
1.Голосование: инициализирующий узел рассылает указания о подготовке к фиксации; остальные узлы готовят данные к фиксации, сообщают о готовности (данные из буферов на диск).
2.Принятие решения: если все отклики положительные, то посылается сообщение о фиксации. Если есть отрицательный либо нет отклика, то - сообщение об откате.
Главная проблема - разрыв связи с инициализирующим узлом.
Лимбы - повисшие транзакции (например, связь оборвалась после согласия о готовности).
Недостатки централизованных систем:
1) Медленный отклик при территориально удаленном сервере.
2) Низкая надежность из-за единого центрального узла, низкая доступность.
Вариант решения - распределение данных по сети.
Распределённая БД - это совокупность разделяемых логических данных, физически распределённых в компьютерной сети.
Распределённая система - это система, позволяющая работать с распределенной БД и обеспечивающая полную или частичную прозрачность распределенности данных.
Особенности распределенной системы:
1. Распределенные данные логически связаны.
2. БД может быть разделена на части (фрагменты).
3. БД или фрагменты могут иметь копии (реплики).
4. Фрагменты и реплики распределены по узлам сети.
5. На серверах могут выполняться локальные и глобальные приложения.
6. Каждый узел работает под управлением СУБД.
7. Каждый узел должен участвовать хотя бы в одном глобальном приложении.
8. На серверах могут автономно выполняться локальные приложения.
Основной принцип: распределенная система с точки зрения пользователя должна вести себя как нераспределенная.
Основной принцип: распределенная система с точки зрения пользователя должна вести себя как нераспределенная.
Для распределенных систем выполняются следующие правила Дейта:
1) Локальная автономность: если другие узлы вышли из строя, то вы можете выполнять автономно свои задачи;
2) Отсутствие фиксированных центральных узлов, решающих общие задачи;
3) Непрерывность работы: на работу пользователей не должны влиять модификации в системе;
4) Независимость от фрагментации данных: пользователь не должен ощущать деление на фрагменты;
5) Независимость от репликации данных;
6) Независимость от места расположения;
7) Поддержка выполнения распределенных запросов;
8) Поддержка выполнения распределенных транзакций;
9) Независимость от оборудования;
10) Независимость от операционной системы;
11) Независимость от сети;
12) Независимость от СУБД.
ОРГАНИЗАЦИЯ РАСПРЕДЕЛЕННЫХ ДАННЫХ
ФРАГМЕНТАЦИЯ
Фрагментация - это разделение БД на 2 или более частей.
Требования к фрагментации:
1. Требования к полноте и непересекаемости: каждый элемент должен входить только в один фрагмент.
2. Восстанавливаемость: должна существовать процедура точного восстановления базы по фрагментам.
Существуют следующие варианты фрагментации:
1. Горизонтальная - таблица делится на подмножества картежей.
Подмножества определяются заданным предикатом.
Фрагментация выполняется операцией ограничения по выбранным условиям, а дефрагментация - операцией объединения.
2. Вертикальная фрагментация - таблица делится на подмножества атрибутов.
Выполняется операцией проекции на столбцы, дефрагментация - операцией соединения по первичному ключу.
3. Смешанная фрагментация - сначала выполняется вертикальная, а затем горизонтальная фрагментация или наоборот.
4. Производная фрагментация - фрагментация дочерней таблицы в соответствии с горизонтальной фрагментацией родительской таблицы.
Общая последовательность фрагментации:
1) Определяются нефрагментируемые таблицы;
2) Выполняется основное фрагментирование (таблицы фрагментируются на кусочки);
3) Производное фрагментирование (зависит от того, как фрагментировались таблицы).
РЕПЛИКАЦИЯ
Репликация - это создание и ведение копий БД или фрагментов (ее частей).
Варианты репликации:
1. По моменту исполнения:
§ Синхронная. Обновление в реплике вместе с обновлением исходного варианта. Для реализации репликации включают в транзакцию. Также они могут использоваться в триггерах.
§ Асинхронная. Обновление выполняется в отложенном режиме (по расписанию, по желанию пользователя).
2. По объёму захвата: полная и выборочная.
3. По способу обновления: моментальным снимком, инкрементное, транзакционное.
При моментальных снимках полный объём всей основной реплики копируется в удалённые узлы. При этом блокируются операции копирования данных. Это хорошо, если объём невелик и копирование происходит нечасто.
Транзакционные снимки: копируются только изменения данных. Репликация происходит время от времени. В промежуток времени изменения накапливаются, и в момент репликации все изменения отрабатываются на копиях. Имеет смысл, если изменений немного. Если изменения выполняются часто, то объём копируемых данных может быть больше, чем моментальный снимок.
4. По стороне инициализации: от подчиненной, от главной.
5. По схеме обновления:
А) Ведущий-ведомый (основной): данные обновляются только в главной реплике, обновляются подчиненные. Главная реплика фиксирована. Переназначение может быть осуществлено средствами администрирования, а не в программном коде.
Б) Рабочий поток: данные меняются только в одной реплике, в остальные обновляются, но главная реплика может менять место.
В) Симметричная схема: обновление может выполняться на любой стороне. Может возникнуть конфликт обновления. Для разрешения конфликта выполняется выбор по одному или нескольким признакам:
- репликам могут быть присвоены приоритеты;
- по косвенным данным (временные метки);
- по значению (выбор максимального или минимального) и др.
6. Принудительный вариант или по запросу. При принудительном варианте репликация выполняется по инициативе ведущего по заданному расписанию. Репликация по запросу выполняется по инициативе ведомого.
В зависимости от реализации может быть разный уровень прозрачности распределения:
1) Прозрачность фрагментации (скрыто разбиение БД на фрагменты).
2) Прозрачность репликации (не видим реплик, но видим фрагменты).
3) Прозрачность места положения (видны реплики).
Фрагментацию следует применять при высокой степени разделения данных или операциях изменения данных.
При среднем уровне разделяемости данных использование фрагментации зависит от соотношения локальных и глобальных вопросов. Хороший результат может дать репликация.
При низкой степени разделяемости данных, возможно, следует отказаться от распределений системы.
Операции с распределенными данными
1) Распределенный запрос: с узла инициализации запрашивается информация на нескольких узлах.
Варианты решения:
- на инициализирующий узел записываются таблицы с интересующими данными;
- перезапись на узел инициализации отфильтрованных данных от других узлов;
- выполнение промежуточных соединений на удаленных узлах, окончательная сборка на своем узле.
Все сборки (промежуточные и окончательные) производятся в наиболее подходящих узлах.
2) Распределенные транзакций: инициализация на одном из узлов, по ходу выполнения инициализирует подтранзакции, результаты возвращаются на узел инициализации.
Существует 2 проблемы:
1) обеспечение параллельности транзакций. Основное решение - распределенная блокировка данных.
2) Фиксация транзакции. Можно просмотреть какие данные заблокированы и выбрать, распределенная схема блокировки данных.
Для фиксации распределенной транзакции рекомендуется протокол двухфазового подтверждения (фиксации). Выделяется 2 этапа:
1.Голосование: инициализирующий узел рассылает указания о подготовке к фиксации; остальные узлы готовят данные к фиксации, сообщают о готовности (данные из буферов на диск).
2.Принятие решения: если все отклики положительные, то посылается сообщение о фиксации. Если есть отрицательный либо нет отклика, то - сообщение об откате.
Главная проблема - разрыв связи с инициализирующим узлом.
Лимбы - повисшие транзакции (например, связь оборвалась после согласия о готовности).