Одна из важнейших проблем создания локальных сетей - создание распределенной базы данных (РБД). Системы распределенных баз данных характеризуются тем, что в них между несколькими ЭВМ распределены информационные файлы и имеются соответствующие средства для управления распределенными данными.
Существует четыре альтернативные стратегии распределения данных [51, 62]:
1.Централизация (единственная копия базы данных, расположенная в одном узле).
2.Расчленение (единственная копия базы данных, непересекающиеся подмно-жества распределены по различным узлам).
3.Дублирование (несколько копий базы данных, в каждом узле располагается полная копия всех данных).
4.Смешанная (несколько копий подмножеств базы данных, в каждом узле может содержаться произвольный фрагмент базы данных).
Система управления распределенными базами данных, допускающая лишь централизованное распределение, является простейшей, а система, допускающая смешанное распределение данных, - наиболее сложной. Стратегии расчленения и дублирования являются в различной степени более сложными, чем централизованная. Стратегия расчленения предполагает наличие лишь одной копии базы данных, но при этом необходимо знать, какая часть базы данных расположена в каждом узле. Страте-гия дублирования предполагает наличие в каждом узле полной копии базы данных, причем все копии должны обслуживаться согласовано для обеспечения их полноты и целостности. Смешанная стратегия сочетает сложности двух других распределенных стратегий, приобретая при этом гибкость и достоинства обеих стратегий. Для систем управления распределенными базами данных может потребоваться следить за измене-нием состояний копий каждого подмножества базы данных, а также за размещением каждой копии.
Рассмотрим преимущества и недостатки всех стратегий распределения данных, а также типичные ситуации, когда каждая из этих стратегий является наиболее подходя-щей.
Основным преимуществом централизованной базы данных, безусловно, являет-ся простота. Все операции осуществляются под контролем единственного узла, все проблемы и действия полностью ясны, по крайней мере, по сравнению с распределен-ной базой данных.
Современным представителем стратегии централизации является система "клиент-сервер". Задача этой системы состоит в том, чтобы обеспечить доступ к данным, обрабатываемым сервером, со стороны приложений, поддерживаемых клиентом. Как правило, клиент и сервер территориально удалены друг от друга, и в этом случае они образуют или входят в состав распределенной системы обработки данных. Программные средства серверов баз данных обеспечивают реализацию многопользовательских приложений, централизованное хранение, целостность и безопасность данных. Производительность серверов баз данных на порядок выше по сравнению с традиционными файл-серверами, которые используются в локальных сетях.
Локальные вычислительные сети, первоначально созданные для совместного использования дорогостоящего периферийного оборудования, эволюционировали со временем до такой степени, что стал возможен доступ многих пользователей к одним и тем же файлам, и для многих персональных систем управления базами данных были предложены сетевые версии. Однако скоро стало ясно, что сетевые СУБД, основанные на модели файл-сервера, недостаточно мощны. В нагруженной сети неизбежно встает проблема производительности, а также безопасности и целостности данных.
Производительность является проблемой не потому, что современным процес-сорам не хватает требуемой мощности, а потому, что сегодняшние файл-серверы используют принцип "все или ничего" для исполнения запросов рабочих станций. Полные копии файлов базы данных постоянно перемещаются вперед-назад по сети. Проблемы с безопасностью и целостностью данных возникают из-за того, что файл-серверы изначально не были сконструированы с учетом целостности данных и их восстановления в случае аварии, неявного распараллеливания задач (implicit concurrency) и централизованного контроля управления данными, типичными функ-циями, выполняемыми СУБД на средних и больших ЭВМ.
Архитектура "клиент-сервер" (CSA - Client Server Architecture) заменила модель "файл-сервера" на более мощную, состоящую из "клиентов" и "серверов", что позволи-ло совместить достоинства однопользовательских (высокий уровень диалоговой поддержки, дружественный интерфейс и низкую цену) и более крупных компьютерных систем (поддержка целостности и защита данных, многозадачность).
В архитектуре "клиент-сервер" интерфейс пользователя, отображения и запросы хранятся отдельно от системы управления реальными данными и их фильтров. Внеш-ние прикладные программы сориентированы более на представление информации клиенту. Сервер же обрабатывает запросы прикладных программ, выбирает необходи-мые данные, посылает их клиентам по сети и производит обновление информации.
Серверы баз данных расширяют диапазон программ пользователей, которым доступны данные в СУБД. Это происходит за счет централизованного хранения данных (в отличие от файл-серверов, поддерживающих отдельные файлы для каждого типа приложений). Обращаться к данным могут не только специально написанные приклад-ные программы базы данных, но и электронные таблицы, настольные издательства или текстовые процессоры. Сервер базы данных обеспечивает интеграцию данных незави-симо от использующих их приложений. Данные в СУБД всегда поддерживаются в актуальном состоянии и могут быть использованы совместно многими пользователями. Централизованное хранение и программные средства сервера баз данных обеспечивают выполнение таких важных функций СУБД, как диалоговое управление и восстановле-ние целостности хранимой информации после сбоя.
Распределенные стратегии должны доказать свои преимущества путем преодо-ления некоторых недостатков, присущих централизованным системам. Так как в централизованных базах данных все данные располагаются в единственном узле, то возможный размер базы данных ограничивается объемом памяти центральной ЭВМ. Все запросы на выборку и обновление данных должны направляться в центральный узел с соответствующими временными задержками. Если в центральном узле находит-ся однопроцессорная ЭВМ, то это приведет к ограничениям на параллельную обработ-ку, следовательно, время реакции системы может быть слишком большим для пользо-вателя. Центральный узел может стать узким местом всей системы, хотя вся остальная сеть может функционировать нормально. Любая из трех других стратегий распределе-ния данных преодолевает некоторые из этих недостатков, но ценой определенных затрат.
При распределении данных на основе стратегии расчленения база данных распределяется по многим узлам сети, однако существование копий отдельных частей базы данных не допускается. База данных разделяется на непересекающиеся подмно-жества, называемые логическими фрагментами, и каждый логический фрагмент размещается в отдельном узле. Такой метод имеет ряд преимуществ перед стратегией централизации. Размер базы данных теперь ограничивается суммарным объемом памяти, имеющейся во всей сети, а не в единственном узле. Так как запросы на поиск и корректировку направляются в узлы, где расположены запрашиваемые файлы, то временная задержка может быть снижена за счет того, что большая часть запросов к базе данных будет осуществляться к своим локальным частям. С другой стороны запрос может потребовать доступа ко всем узлам сети, и это приведет к большему времени задержки, чем в случае централизованной базы данных. Время реакции системы может быть меньше по сравнению с централизованной базой данных, если используется возможный параллелизм. Доступность и надежность базы данных могут быть повышены по сравнению с централизованным подходом. Если выйдут из строя канал связи, один или несколько узлов, то система все же может оказаться частично работоспособной. Доступными могут оказаться части базы данных в отдельных узлах или в узлах, еще остающимися связанными в сети. Ключевым фактором, влияющим на надежность и доступность базы данных, является так называемая локализация ссылок (т.е. расположение запрашиваемых данных, исходя из удовлетворения запросов пользователей). Если база данных распределена по сети таким образом, что данные, расположенные в узле, запрашиваются почти исключительно пользователем этого узла, то говорят, что существует высокая степень локализации ссылок. Если же подобное расчленение базы данных невозможно, то говорят, что степень локализации ссылок мала. Следствием степени локализации ссылок обычно является и большая доступность базы данных. Например, если запрос пользователя может быть удовлетворен с помо-щью локально хранимых данных, то ошибки в других узлах или ошибки в каналах связи не окажут влияния на этот запрос. Если степень локализации мала или запрос пользователя является сложным, то могут потребоваться данные, хранимые в различ-ных узлах. И если при этом будет недоступен хотя бы один узел, то запрос не будет удовлетворен. В этой ситуации доступность базы данных может быть хуже, чем при стратегии централизации. Вероятность того, что по крайней мере один узел будет недоступен, очевидно, выше вероятности недоступности единственного узла. Следова-тельно, база данных может быть доступна меньшую часть времени, чем при использо-вании стратегии централизации.
Стратегия расчленения наиболее подходит для случая, когда либо локальная дисковая память ограничена по сравнению с объемом базы данных, либо недостаточна надежность централизованной базы данных, либо когда должна быть повышена эффективность функционирования. Эффективность функционирования может быть обычно повышена, если запросы к базе данных будут обладать высокой степенью локализации ссылок. При отсутствии локализации ссылок эффективность может упасть довольно быстро из-за большого объема передачи данных.
При распределении данных с использованием стратегии дублирования в каждом узле сети размещается полная копия базы данных (т.е. в каждом узле, в котором имеются данные, имеется вся база данных). Сетевая система управления должна согласовывать состояние многих копий данных, однако здесь отсутствуют проблемы определения, какую конкретную часть базы данных содержит каждый узел, как это было в стратегии расчленения. Сравнивать две указанные стратегии, исходя из их сложности, нельзя, поскольку они решают различные задачи. Основное преимущество стратегии дублирования относится к областям надежности, доступности и эффективно-сти выборки. Уровень надежности, обеспечиваемый этой стратегией, самый наивыс-ший из возможных, но при явных затратах используемой дисковой памяти. Объем базы данных тоже ограничен объемом дисковой памяти в каждом узле. Значительная часть обработки может быть проведена локально, но с целью согласования множественных копий базы каким-то образом должна осуществляться их синхронизация. Конкретные способы проведения согласования меняются от системы к системе в широких пределах, а уровень определенных накладных расходов будет зависеть от имеющегося уровня постоянства данных. Эта стратегия не столь легко реализует параллельную обработку одного запроса, как стратегия расчленения, что связано с необходимостью согласова-ния копий и сложностью управления, однако каждый узел может работать асинхронно. Возможно получение очень быстрых ответов на запросы пользователей, особенно в ситуациях, когда нет необходимости в межузловой связи для согласования копий баз данных, например при поиске в базе данных. Надежность базы данных является высокой не только из-за доступности данных при нарушении работоспособности узла или части сети, но также и из-за простоты замены разрушенной копии базы данных или возможности продолжения обработки, несмотря на вышедший из строя узел. Еще одним преимуществом стратегии дублирования является простота операций восстанов-ления базы данных. Согласованная копия базы данных может быть получена из любого рабочего узла. Если часть сети недоступна по какой-либо причине, то, возможно, придется ограничить выполнение некоторых запросов (например, корректирующих) для того, чтобы поддержать согласованность базы данных. Иными словами, если разрешено выполнение запросов на корректировку в двух разных узлах и не может быть осуществлена синхронизация, то при возобновлении нормального функциониро-вания сети возможно нарушение согласованности базы данных.
Стратегия дублирования наиболее подходит для тех ситуаций, когда фактор надежности является критическим, база данных - небольшой, а интенсивность обнов-ления может быть невысокой (например, база данных с интенсивными запросами справочного типа). В данном случае способ синхронизации оказывает большое влияние на эффективность распределения базы данных.
Смешанная стратегия распределения данных объединяет подходы, связанные с расчленением и дублированием данных с целью приобретения преимуществ, которыми они обладают. Но, к сожалению, эта стратегия приобретает сложности каждого из объединяемых подходов. Эта стратегия подразделяет базу данных на логические фрагменты, как это сделано в стратегии расчленения, но в дополнение к этому дает возможность иметь произвольное количество физических копий каждого фрагмента, называемых хранимыми фрагментами. Эта стратегия является общей в том, что любая часть базы данных может быть дублирована произвольное количество раз и в каждом узле может содержаться желаемая часть базы данных. Недостатком является необхо-димость хранить информацию о том, где находятся данные в сети, и согласовать произвольное количество хранимых фрагментов, связанных с каждым логическим фрагментом. Обработка и оптимизация запросов является при использовании смешан-ной стратегии нетривиальными задачами.
Ключевым преимуществом смешанной стратегии является гибкость. Например, можно установить компромисс между объемом памяти, используемой в целом и в каждом отдельном узле, обеспечиваемым уровнем надежности и различными мерами эффективности. К примеру, архивные данные целесообразно запоминать только в одном месте, напротив, более критические данные могут быть дублированы, если требуется достичь определенного уровня надежности. При дублировании логического фрагмента (запоминании более одной его копии) возникает проблема согласования, однако большее количество данных становится локально доступным, что ведет к снижению количества пересылок при выполнении запросов. Происходит это из-за того, что степень локализации может возрастать за счет дублирования. Система допускает относительно простую реализацию параллельной обработки данных, что делает возможным получение малого времени отклика. Узкие места, возникающие при связи, во многих случаях могут быть устранены. В связи с тем, что в каждом узле сети может находиться произвольное подмножество базы данных, можно получить практическую любую степень надежности при возникновении ошибок в узлах и каналах связи. Функционирование может продолжаться, хотя функциональные возможности будут ограниченны. Как и для случая стратегии дублирования, выполнение корректирующих запросов может быть ограничено с тем, чтобы автоматически поддерживалась согласо-ванность базы данных при возобновлении функционирования сети в полном объеме.
Хотя смешанная стратегия распределения данных и является предельно гибкой, остается проблема взаимозависимости различных факторов, влияющих на производи-тельность системы, ее надежность и требования к памяти. Изолировать один фактор от другого весьма трудно. Механизмы, используемые распределенными СУБД, оказывают большое влияние на производительность и другие параметры. Предположения, касаю-щиеся использования базы данных, играют большую роль в конечном распределении данных.
Смешанная стратегия является приемлемой тогда, когда ни одна из более простых стратегий не является удовлетворительной. Это случается достаточно часто. В качестве примера рассмотрим большую базу данных, в которой требования высокой надежности предъявляется лишь к определенным ее частям. Каждый узел может обращаться к некоторым частям базы данных часто, а к некоторым - редко (т.е. имеется разнообразие локализации ссылок). В этом случае стратегия расчленения не может обеспечить достаточной надежности, а стратегия дублирования может быть невыгод-ной или неприемлемой из-за требований на вторичную память.