Существуют два основных метода распределения данных на множество серверов базы данных:
♦ распределенные транзакции;
♦ репликация данных.
Распределенная транзакция - это транзакция, где все изменения во всех размещениях (где хранятся распределенные данные) собираются вместе и выполняются синхронно. Системы распределенных баз данных используют метод, называемый двухфазовым подтверждением для реализации распределенных транзакций.
Каждая база данных, вовлеченная в распределенную транзакцию, имеет собственную технику восстановления, которая используется в случае ошибки. (Помните, что все операторы внутри транзакции либо выполняются в своей неделимости, либо вместе отменяются.) Менеджер глобального восстановления (называемый координатором) координирует обе фазы распределенного процесса.
На первой фазе этого процесса координатор проверяет, все ли участвующие сайты готовы выполнять их часть распределенной транзакции. Вторая фаза состоит из фактического выполнения транзакции на всех участвующих сайтах. В течение этого процесса любая ошибка на любом сайте приводит к тому, что координатор останавливает транзакцию. В этом случае он отправляет сообщение каждому менеджеру локального восстановления, чтобы он отменил ту часть транзакции, которая уже была выполнена на этом сайте.
В течение процесса репликации данных копии данных распределяются от исходной базы данных к одной или более целевым базам данных, размещенным на отдельных компьютерах. По этой причине репликация данных отличается от распределенных транзакций в двух аспектах: промежутком времени и задержкой по времени.
В отличие от метода распределенных транзакций, где все данные являются одними и теми же на всех участвующих сайтах, репликация данных позволяет сайтам иметь различные данные в одно и то же время. Кроме того, репликация данных является асинхронным процессом. Это означает, что существует некоторая задержка по времени, когда все копии данных становятся одинаковыми на всех участвующих в процессе сайтах. (Эта задержка может изменяться в диапазоне от единиц секунд до нескольких дней или недель.)