Глава 5. Сетевой и транспортный уровни
5.22. Распределенные базы данных (РБД).
Системы распределенных вычислений появляются прежде всего по той причине, что в крупных автоматизированных информационных системах, построенных на основе корпоративных сетей, не всегда удается организовать централизованное размещение всех баз данных и СУБД на одном узле сети. Поэтому системы распределенных вычислений тесно связаны с системами управления распределенными базами данных.
При построении РБД приходится решать ряд сложных проблем, связанных с минимизацией трафика, обеспечением интероперабельности обработки данных и целостности данных.
Минимизация трафика нужна в связи с тем, что обслуживание запроса может потребовать использования данных из многих узлов, пересылаемых по сети. Возможности минимизации видны из примера обработки данных нескольких таблиц из разных узлов. Очевидно, что целесообразна однократная пересылка таблиц, причем таблиц именно меньшего размера, на один узел, на котором и будет обрабатываться запрос.
Интероперабельность, как об этом сказано выше, выражает способность взаимодействия программ, работающих в гетерогенных сетях (в разных операционных средах или с разными СУБД). Интероперабельность обеспечивается или с помощью программ-шлюзов (конверторов или драйверов, см. рис. 5.11) для каждой пары взаимодействующих сред, или с помощью единого унифицированного языка взаимодействия. Таким языком является язык SQL, подход реализуется в известной системе ODBC.
Рис. 5.11. Обеспечение интероперабельности с помощью драйверов СУБД
Обеспечение целостности в РБД намного сложнее, чем в одноузловых БД. Поэтому вместо классических РБД чаще применяют БД, основанные на тиражировании БД. Тиражирование - асинхронный процесс переноса изменений данных на все локальные БД, размещаемые в серверах ячейки DCE. Перенос осуществляет сервер тиражирования - репликатор. Он реагирует на события, фиксируемые триггерами, и периодически пересылает обновленные данные в копии БД.
Тиражирование вносит избыточность в хранимые данные, появляются трудности с разрешением конфликтов из-за возможных несогласованных изменений в локальных БД. Однако по сравнению с классическими РБД, в которых данные не дублируются, заметно уменьшается трафик, надежнее и проще работа с локальными БД. Обеспечение надежности и удобства работы особенно актуально в случае ненадежных и медленных каналов связи, что имеет место во многих сетях в России.
Тиражирование может быть реализовано также следующим образом. В периферийных узлах имеются копии БД или некоторых частей БД, в которых возможны не только чтение, но и запись. Тиражирование (перепись обновленных частей БД) происходит периодически. Если обновление одной и той же части было более чем в одном месте, т.е. фиксируется конфликт, то выдается сигнализация о конфликте, а его разрешение осуществляется в соответствии с приоритетами, устанавливаемыми администратором БД.
В распределенных СУБД (РСУБД) необходимо управление одновременным доступом, которое должно гарантировать целостность (сериализуемость) БД. Наиболее широко используются алгоритмы управления, основанные на механизме блокировки. При этом блокировкой называют ситуацию, когда некоторая транзакция объявила о желании получить полномочия на доступ к странице памяти и, следовательно, другие транзакции не имеют права занимать этот ресурс.
Одним из способов управления является централизованное блокирование, при котором на одном из узлов поддерживается единая таблица блокировок. Такой узел устанавливает очередность выполнения транзакций, что исключает конфликты. Однако при централизованном управлении невысока надежность и требуется мощный сервер.
В РСУБД с репликацией имеется единственный узел, в котором возможно обновление данных, - это узел, хранящий первичную копию. Поэтому здесь нет проблемы согласования при записи действий многих узлов. Собственно тиражирование чаще всего выполняется по правилу полной эквивалентности: обновленные данные сразу же после изменившей их транзакции рассылаются по всем локальным БД. Чтение же выполняется из БД одного конкретного узла, наиболее близкого к пользователю в функциональном или географическом смысле.
Сложнее решать проблемы распределенного управления, что требуется в РСУБД без тиражирования. Одним из распространенных протоколов распределенного управления является протокол двухфазной фиксации транзакций (2РС). На первой фазе инициатор транзакции (координатор) рассылает участникам выполнения транзакции оповещения о блокировке. В ответ узлы сообщают о своей готовности или неготовности. На второй фазе координатор сообщает либо о "глобальной фиксации", т.е. о выполнении транзакции, либо об откате транзакции. Неприятности возможны при сбоях, которые могут оставить некоторый узел в заблокированном состоянии: он не может ни выполнять транзакцию, ни отменять ее в одностороннем порядке.
[ Общее Содержание ]
[ Назад ]
[ Содержание раздела ]
[ Вперед ]
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|