Распределенная СУБД - Стратегии проектирования
В предыдущей главе мы представили различные варианты дизайна. В этой главе мы изучим стратегии, которые помогают в принятии замыслов. Стратегии можно условно разделить на репликацию и фрагментацию. Однако в большинстве случаев используется их комбинация.
Репликация данных
Репликация данных - это процесс хранения отдельных копий базы данных на двух или более сайтах. Это популярный метод отказоустойчивости распределенных баз данных.
Преимущества репликации данных
Reliability - В случае отказа любого сайта система базы данных продолжает работать, поскольку копия доступна на другом сайте (ах).
Reduction in Network Load- Поскольку доступны локальные копии данных, обработка запросов может выполняться с меньшим использованием сети, особенно в лучшие часы. Обновление данных можно производить в нерабочее время.
Quicker Response - Доступность локальных копий данных обеспечивает быструю обработку запросов и, как следствие, быстрое время ответа.
Simpler Transactions- Для транзакций требуется меньшее количество объединений таблиц, расположенных на разных сайтах, и минимальная координация в сети. Таким образом, они становятся более простыми по своей природе.
Недостатки репликации данных
Increased Storage Requirements- Поддержание нескольких копий данных связано с увеличением затрат на хранение. Требуемое пространство для хранения кратно объему хранения, необходимому для централизованной системы.
Increased Cost and Complexity of Data Updating- Каждый раз, когда элемент данных обновляется, обновление должно отражаться во всех копиях данных на разных сайтах. Это требует сложных методов и протоколов синхронизации.
Undesirable Application – Database coupling- Если сложные механизмы обновления не используются, устранение несогласованности данных требует сложной координации на уровне приложений. Это приводит к нежелательному связыванию приложения и базы данных.
Некоторые часто используемые методы репликации:
- Репликация снимков
- Репликация почти в реальном времени
- Репликация по запросу
Фрагментация
Фрагментация - это задача разделения таблицы на набор меньших таблиц. Подмножества таблицы называютсяfragments. Фрагментация бывает трех типов: горизонтальная, вертикальная и гибридная (сочетание горизонтальной и вертикальной). Горизонтальную фрагментацию можно разделить на два метода: первичная горизонтальная фрагментация и производная горизонтальная фрагментация.
Фрагментация должна производиться таким образом, чтобы исходная таблица могла быть восстановлена из фрагментов. Это необходимо для того, чтобы исходную таблицу можно было при необходимости восстановить из фрагментов. Это требование называется «реконструктивностью».
Преимущества фрагментации
Поскольку данные хранятся рядом с местом использования, эффективность системы баз данных увеличивается.
Для большинства запросов достаточно методов локальной оптимизации запросов, поскольку данные доступны локально.
Поскольку нерелевантные данные недоступны на сайтах, можно поддерживать безопасность и конфиденциальность системы баз данных.
Недостатки фрагментации
Когда требуются данные из разных фрагментов, скорость доступа может быть очень высокой.
В случае рекурсивной фрагментации для восстановления потребуются дорогостоящие методы.
Отсутствие резервных копий данных на разных сайтах может сделать базу данных неэффективной в случае сбоя сайта.
Вертикальная фрагментация
При вертикальной фрагментации поля или столбцы таблицы группируются во фрагменты. Чтобы сохранить реконструктивность, каждый фрагмент должен содержать поле (поля) первичного ключа таблицы. Вертикальная фрагментация может использоваться для обеспечения конфиденциальности данных.
Например, предположим, что база данных университета хранит записи всех зарегистрированных студентов в таблице Student, имеющей следующую схему.
СТУДЕНТ
Regd_No | название | Курс | Адрес | Семестр | Сборы | Метки |
Теперь детали комиссии хранятся в разделе счетов. В этом случае дизайнер фрагментирует базу данных следующим образом:
CREATE TABLE STD_FEES AS
SELECT Regd_No, Fees
FROM STUDENT;
Горизонтальная фрагментация
Горизонтальная фрагментация группирует кортежи таблицы в соответствии со значениями одного или нескольких полей. Горизонтальная фрагментация также должна подтверждаться правилом реконструктивности. Каждый горизонтальный фрагмент должен содержать все столбцы исходной базовой таблицы.
Например, в схеме студента, если детали всех студентов курса компьютерных наук необходимо поддерживать в Школе компьютерных наук, дизайнер будет горизонтально фрагментировать базу данных следующим образом:
CREATE COMP_STD AS
SELECT * FROM STUDENT
WHERE COURSE = "Computer Science";
Гибридная фрагментация
При гибридной фрагментации используется комбинация методов горизонтальной и вертикальной фрагментации. Это наиболее гибкий метод фрагментации, поскольку он генерирует фрагменты с минимальным количеством посторонней информации. Однако восстановление оригинального стола часто бывает дорогостоящим.
Гибридная фрагментация может быть выполнена двумя альтернативными способами:
Сначала сгенерируйте набор горизонтальных фрагментов; затем сгенерируйте вертикальные фрагменты из одного или нескольких горизонтальных фрагментов.
Сначала сгенерируйте набор вертикальных фрагментов; затем сгенерируйте горизонтальные фрагменты из одного или нескольких вертикальных фрагментов.