Технологии реализации распределенных баз данных


Существует две основные технологии:
1) Фрагментация баз данных – под фрагментированной базой данных понимают базу данных, включающую фрагменты из нескольких баз данных, располагающихся на различных узлах сети компьютера и, возможно, управляющихся различными СУБД. Фактически, фрагментированная база данных для пользователя выглядит как обычная локальная база данных. В этом смысле распределенность отражает не способ организации базы данных, а способ осуществления доступа. Доступ осуществляется к отдельным частям одновременно.

Фрагментация бывает построчная – часть строчек находится на одном узле, часть – на другом, часть – на третьем (это наиболее просто вариант), и поколоночная – часть колонок в одной базе данных, часть – в другой, часть – в третьей (это более сложный вариант);

Нерешенные проблемы для реализации фрагментации:
1) Оптимизация параллельных запросов, то есть запросов сразу к нескольким базам данных;
2) Распараллеливание прикладных программ – прикладные программы сразу должны обращаться к нескольким базам данным, а данные могут приходить в разное время, что порождает проблемы;
3) Физическое проектирование базы данных – можно, сидя в разных офисах, и не договориться о том, как должна выглядеть база данных;
4) Утилиты и процедуры организации баз данных;
В таких РСУБД на сегодня не достигнута хорошая производительность и слабо поддерживается ссылочная целостность.

2) Тиражирование данных – в отличие от фрагментации данных тиражирование данных предполагает отказ от их физического разделения и опирается на идею дублирования данных на всех узлах в общем случае. Функции тиражирования выполняет специальный модуль СУБД, называемый сервером тиражирования данных или репликатор. Его назначение – поддерживать идентичность данных во всех СУБД. Таким образом, получается, что каждый клиент формально работает с одной локальной базой данных, которая, в общем, полная, делает какие-то изменения, которые репликатор с указанной задержкой должен сам распределить и поменять на других узлах. То есть каждый пользователь работает не со всеми базами данных сразу, а работает локально, потому что все копии находятся у него. Изменение своих локальных данных у него проходят вообще без задержки, а данные, корректируемые на других узлах, проходят с некоторой задержкой, обусловленной времен срабатывания репликатора.

В конце концов, репликатор все базы данных приводит в идентичное состояние, когда на каждом локальном узле есть полная копия того, что есть у всех. Это и есть идея репликации. Сигнал запуска репликатора может быть либо временной, либо установленный какими-то правилами (например, после массовых изменений).

Достоинства тиражирования данных:
1) Данные всегда располагаются там, где обрабатываются, поэтому время доступа минимально, но расходы на хранение максимальны;
2) По сети в процессе репликации передаются только операции изменения данных, а не сами базы данных;
3) Репликатор выступает как некий процесс, инициируемый одним пользователем, в то время как в истинно распределенной системе фактически все пользователи конкурируют друг с другом;
4) Никакой продолжительный сбой в такой системе не способен нарушить передачу изменений, поскольку на каком-то из серверов есть полная копия, откуда все можно все восстановить.

Недостатки тиражирования данных:
1) Избыточность;
2) Когда несколько человек внесли изменения в одну и ту же запись неясно, чью версию считать последней и главной;
3) Репликация требует дополнительного объема памяти.


Комментарии запрещены.




Статистика