Введение в системы БД (542480), страница 200
Текст из файла (страница 200)
Пользователю, несомненно, в той или иной мере будет известно, что данные удалены, и поэтому он должен поступать соответственно. В истинной системе распределенных баз данных, напротив, все швы скрыты. (Большая часть этой главы посвящена выяснению вопроса. что же означает выражение "все швы скрыты".) Далее термин "распределенная система' будет означать именно истинную обобщенную систему распределенной базы данных (в противоположность обычной системе удаленного доступа к данным), если только явно не будет указано противоположное. 20.3. Двенадцать основных целей 1. Локальная независимость Узлы в распределенной системе должны быть независимы, нли автономны.
Локальная независимость означает, что все операции на узле контролируются этим узлом. Никакой узел Х не должен зависеть от некоторого узла Х, чтобы успешно функционировать (иначе, если узел Х будет отключен, узел Х не сможет функционировать, даже если на самом узле Х буде~ все в порядке; возникновение таких ситуаций, безусловно, нежелательно). Локальная независимость также означает, что локальные данные имеют локальную принадлежность, управление и учет.
Все данные "реально" принадлежат одной и той же локальной базе данных, даже если доступ к ней осуществляется с других, удаленных узлов. Следовательно, такие вопросы, как безопасность, целостность и представление локальных данных в памяти, остаются под контролем и в пределах компетенции локального узла. В действительности локальная независимость не вполне достижима — есть множество ситуаций, в которых узел Х должен отказываться в определенной степени от контроля в пользу узла Х.
Поэтому цель достижения локальной независимости точнее можно было бы сформулировать так; узлы должны быть независимыми в максимально возможной степени. (См. аннотацию к публикации [20.14], где этот вопрос описан подробнее.) 2. Отсутствие опоры на центральный узел Локальная независимость предполагает, что все узлы в распределенной системе должны рассматриваться как равные. Поэтому, в частности, не должно быть никаких обращений к "центральному" или "главному" узлу с целью получения некоторого централизованного сервиса.
Не должно быть, например, централизованной обработки запросов, централизованного управления транзакциями или централизованной службы присвоения имен, поскольку в таких случаях система в целом будет зависимой от центрального узла. Таким образом, вторая цель на самом деле является следствием первой цели — если первая цель дос~игну га, то вторая цель также заведомо достигнута.
Но достижение цели "Отсутствие опоры на центральный узел" полезно само по себе, даже если полная локальная независимость узлов не будет достигнута. Поэтому отдельная формулировка данной цели также важна. Опора на центральный узел является нежелательной по крайней мере по двум следующим причинам. Во-первых, такой центральный узел, скорее всего, станет узким местом системы, и, во-вторых (что еще хуже), система станет уязвкиой — если работа центрального узла будет нарушена, то вся система выйдет из строя (проблема "единого источника отказа").
Часть р'. дополнительные аспекты 3. Непрерывное функционирование В общем случае преимушество распределенных систем состоит в том, что они должны предоставлять более высокую степень надежности и доступности. ° Надежность понимается как высокая степень вероятности того, что система будет работоспособна и будет функционировать в любой заданный момент. Надежность распределенных систем повышается за счет того, что они не опираются на принцип "все или ничего"; распределенные системы могут непрерывно функционировать (в сокращенном варианте) даже в случаях отказов части их компонентов, таких как отдельный узел.
° Доступность понимается как высокая степень вероятности того, что система окажется работоспособной и будет непрерывно функционировать в течение определенного времени. Доступность распределенных систем также повышается — частично по тем же причинам, а также благодаря возможности дублирования данных (подробности приводятся в комментарии к цели 6). Предыдущие рассуждения относятся к случаям незапланированного отключения системы, т.е. к аварийным ситуациям, которые могут возникнуть в системе в любой момент. Незапланированные отключения системы, безусловно, нежелательны, но их трудно предупредить! Планируемые отключения системы, напротив, никогда не должны быть необходимы, т.е. никогда не должна возникать необходимость отключить систему, чтобы выполнить какую-либо задачу, например добавить новый узел или заменить на уже существующем узле текущую версию СУБД ее новой реализацией.
4. Независимость от расположения Основная идея независимости от расположения, или так называемой прозрачности расположения, проста. Пользователи не должны знать, где именно данные хранятся физически и должны поступать так (по крайней мере, с логической точки зрения), как если бы все данные хранились на их собственном локальном узле. Благодаря независимости от расположения упрощаются пользовательские программы и терминальные операции. В частности, данные могут быть перенесены с одного узла на другой, и это не должно потребовать внесения каких-либо изменений в использующие их программы или действия пользователей.
Такая переносимость желательна, поскольку она позволяет перемещать данные в сети в соответствии с изменяющимися требованиями к эффективности работы системы. Заиечание. Нетрудно заметить, что независимость от расположения представляет собой простое расширение для распределенных систем обычной концепции физической независимости оаннык. Забегая несколько вперед, следует сказать, что на самом леле каждую из целей, в названии которой употреблено слово "независимость", можно рассматривать как расширение обычной концепции физической независимости данных, в чем мы скоро убедимся.
Мы еще возвратимся к вопросу независимости от расположения в разделе 20.4, в котором будет обсуждаться присвоение имен обьектам (подраздел "Управление каталогом*'). 5. Независимость от фрагментации Система поддерживает независимость от фрагментации, если данная переменная- отношение может быть разделена на части или фрагменты при организации ее физического хранения. Фрагментация желательна для повышения производительности системы. В этом случае данные могут храниться в том месте, где они чаше всего используются, Глава 20.
Распределенные базы данных 773 что позволяет достичь локализации большинства операций и уменьшения сетевого графика. Например, рассмотрим переменную-отношение ЕИР с данными о служащих, содержание которой представлено на рис. 20.2. В системе, которая поддерживает независимость от фрагментации, два фрагмента этой переменной-отношения можно определить следующим образом (см. нижнюю часть рис. 20.2).
РЕАЯИЕИТ ЕИР АЯ И ЕИР АТ ЯХТЕ 'Иеч Хогй' ИНЕЕЕ 0ЕРТР '01' ОЕ 0ЕРТ$ '03', Ь ЕИР АТ ЯХТЕ 'Ьопбол' ИЕЕЕЕ 0ЕРТ!! ь '02' Рис. 20.2. Пример фрагментации Замечание. Здесь подразумевается, что кортежи служащих отображаются в физической памяти какнм-то непосредственным способом; что номера служащих и номера отделов представлены символьными строками, а размер заработной платы — числами; что 01 и 03 — отделы, расположенные в Нью-йорке, а 02 — отдел, расположенный в Лондоне. Таким образом, кортежи служащих из Нью-йорка хранятся на узле в Нью-йорке, а кортежи служащих из Лондона — на узле в Лонлоне.
Отметим, что внутрнснстемные имена фрагментов — И ЕИР и Ь ЕИР. Существует лва основных вида фрагментации: горизантагьная и вертикагьная; они соответствуют реляционным операциям выборки и проекции соответственно (на рис. 20,2 показан пример горизонтальной фрагментации). В более общем случае фрагмент можно представить в виде произвольного сочетания операций выборки и проекции, но со следующими ограничениями. ° В случае выборки это должна быть ортогональная декомпозиция в смысле, указанном в разделе 12.б главы 12. ° В случае проекции это должна быть декомпозиция без потерь в смысле, указанном в главах!! и 12. 774 Часть К Дополнительные аспекты Благодаря этим двум правилам все фрагменты данной переменной-отношения будут независимыии, т.е, ни один из фрагментов не может быть представлен как производный от других фрагментов, а также не может иметь выборку или проекцию, которая была бы производной от других фрагментов.