- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
6. Независимость от репликации
Система поддерживает репликацию данных, если данная хранимая переменная- отношение— или в общем случае данный фрагмент данной хранимой переменной- отношения — может быть представлена несколькими отдельными копиями или репликами, которые хранятся на нескольких отдельных узлах. Рассмотрим конкретный пример (рис. 20.3). Обратите внимание, что внутри системы дубликаты имеют имена NL_EMP и LN_EMP.
REPLICATE N ЕМР AS
LN ЕМР AT SITE 'London' ;
REPLICATE L EMP AS
NL EMP AT SITE 'New York' ;
|
New York || |
|
|
|
|
|| London | |||
|
N_EMP |
|
|
L_EMP |
|
| |||
|
|
EMP# |
DEPT# |
SALARY |
|
EMP# |
DEPT# |
SALARY |
|
|
|
El |
Dl |
40K |
|
E3 |
D2 |
30K |
|
|
|
E2 |
Dl |
42K |
|
E4 |
D2 |
35K |
|
|
|
E5 |
D3 |
48K |
|
|
| ||
|
|
|
|
EMP# |
dept#"~ |
SALARY" |
| ||
|
|
EMP# |
DEPT# |
SALARY_. |
|
El |
Dl |
40K |
|
|
|
E3 |
D2 |
30K |
|
E2 |
Dl |
42K |
|
|
|
E4 |
D2 |
35K |
|
E5 |
D3 |
48K |
|
|
NL EMP (дубликат L EMP) |
LN EMP (дубликат N EMP) | |||||||
Рис. 20.3. Пример репликации данных
Репликация желательна по крайней мере по двум причинам. Во-первых, она способна обеспечить более высокую производительность, поскольку приложения смогут обраба- тывать локальные копии вместо того, чтобы устанавливать связь с удаленными узлами. Во-вторых, наличие репликации может также обеспечивать более высокую степень дос- тупности, поскольку любой реплицируемый объект остается доступным для обработки (по крайней мере для выборки данных), пока хотя бы одна реплика в системе остается доступной. Главным недостатком репликации, конечно, является то, что если реплици- руемый объект обновляется, то и все его копии должны быть обновлены (проблема распространения обновления). В разделе 20.4 мы еще скажем несколько слов относи- тельно этой проблемы.
Отметим, между прочим, что репликация в распределенных системах представляется специфическим приложением идеи контролируемой избыточности, которая обсужда- лась в главе 1.
Очевидно, что репликация, как и фрагментация, теоретически должна быть "прозрачной для пользователя". Другими словами, система, которая поддерживает репликацию данных, также должна поддерживать независимость от репликации (иногда говорят "прозрачность репликации"). Для пользователей должна быть создана такая среда, чтобы они, по крайней мере с логической точки зрения, могли считать, что в действительности данные не дублируются. Независимость от репликации (как и независимость от располо- жения, и независимость от фрагментации) является весьма желательной, поскольку она уп- рощает создание пользовательских программ и выполнение терминальных операций. В ча-
стности, независимость от репликации позволяет создавать и уничтожать дубликаты в лю- бой момент в соответствии с изменяющимися требованиями, не затрагивая при этом ника- кие из пользовательских программ или терминальных операций.
Из требования независимости от репликации следует, что к обязанностям системного оптимизатора также относится определение, какой именно из физических дубликатов будет применен для доступа к данным при выполнении каждого введенного пользовате- лем запроса. Здесь мы опускаем детали этого вопроса.
Завершая подраздел, отметим, что многие коммерческие продукты в настоящее время поддерживают такой вид репликации, который не обеспечивает полной независимости от репликации, т.е. репликация будет не полностью "прозрачна для пользователя". Неко- торые дополнительные замечания по этому вопросу будут приведены в подразделе о распространении обновления в разделе 20.4.
