Введение в системы БД (542480), страница 209
Текст из файла (страница 209)
скажем, СУБД 1лз5 или какой-либо другой не Бьь'-системой (подробности, опять же, приводятся в [20,16)1. На время написания этой книги продукт Рлагазогпег поддерлсивал транзакции обновления (с двухфазной фиксацией) талька лэеэсду узлолт с СУБД 12В2, Огас1е, Бубазе и 1пгоглил. 799 Глава 20. Распределенные базы данных ние данных и применять свои знания о специфических возможностях систем "за сценой*' (а также сетевые характеристики) для составления "глобально оптимальных" планов выполнения запроса. Компьютер клиента (одновременно может быть и сервером) Глобальный каталог Глобальная олтимиэяция 80ь Зе|чег ПВЗ для 08/390 Огясэе Зуьяве 1М8 ЧЗАМ -.
и т.д. Рис. 20.9. Рагаlатег — прил|ер прамежуточнага ираграмннага обеспечения для дас- тупак даннылт Замечание. В продукте Рата)о)пег также эмулируются некоторые возможности языка БОБ СУБД РВ2 для систем, которые не поддерживают такие возможности непосредственно. Примером может служить опция Н1ТН НОБВ для объявления курсора (см. главу 14). Система, подобная описанной выше, — еще далеко не полная распределенная система баз данных, поскольку множество узлов "за сценой" не знает о существовании друг друга (т.е, они не могут рассматриваться как равноправные партнеры в совместном деле).
Однако, если "за сценой'* будет добавлен любой новый узел, он сможет использовать все возможности, предоставляемые узлам клиентов, и, следовательно, выдавать запросы через соединитель Ра)а)о)пег, который гарантирует доступ к любому узлу (или сразу ко всем остальным узлам). Значит, в целом, система составляет так называемую интегрированную систему, которая известна и как система мультибаз данных 120.19). Интегрированная система — это распределенная система, обычно неоднородная, поддерживающая почти полную локальную автономию. Локальные транзакции в ней управляются локальными СУБД; реализация же глобальных транзакций — это отдельный вопрос 120.8).
Для каждой системы "за сценой" в состав продукта РаЫо)пег включается компонент соединителя; фактически это шлюз "точка — точка" в смысле, описанном в предыдущем подразделе. (Для доступа к удаленной системе такие соелинители обычно предусматривают использование механизма ОРВС.) Продукт Рата)о)пег также поддерживает глобальный каталог, который используется, в частности, для определения действий в ситуациях, когда встречается семантическое несовпадение между системами. 8ОО Часть )'.
Дополнительные аспекты Отметим, что продукт ОаЫо!пег может применяться сторонними поставщиками, которые разрабатывают общие средства (например, средства для написания отчетов, статистические пакеты и т.д.), чтобы не слишком заботиться о различиях между теми продуктами СУБД, на которых предполагается их использовать. Заключительное слово Очевидно, что при попытках предоставить полную независимость от СУБД возникают значительные проблемы, даже если все участвующие СУБД являются БОЬ- системами. Однако в будущем эти усилия должны окупиться с лихвой, даже если решения будут не совсем совершенны.
В настоящее время доступно несколько продуктов промежуточного доступа к данным, и их, безусловно, будет еще больше в ближайшем будущем. Но предупреждаем, что решения в таких продуктах неизбежно будут далеки от совершенства, хотя поставщики утверждают обратное (предупреждение автора). 20.7.
Средства Б0Ь В настоящее время в языке БОЬ отсутствует поддержка настоящих распределенных систем. Конечно, в области обработки данных никакой поддержки и не требуется— основная задача распределенной базы данных, с точки зрения пользователя, состоит в том, чтобы сохранить возможности обработки данных неизменными. Тем не менее оцзебуююся операции определения данных, такие как РййОМЕМТ, ЕЕРЫСАТЕ и т.д.
120.15]. Однако до сих пор такие операции в языке БОЬ отсутствуют. С другой стороны, язык БОЬ поддерживает некоторые возможности системы построения "клиент/сервер", включая, в частности, операторы СОММЕСТ и 01ЕСОММЕСТ для установления и разрыва соединения. В действительности БОЬ-приложения должны выполнять операцию СОММЕСТ для соединения с сервером, прежде чем они смогут выдать какой-либо запрос к базе данных (хотя такая операция СОММЕСТ может быть и неявной). Как только соединение булет установлено, приложение, т.е. клиент, сможет выдать БОЬ-запрос обычным порядком и необходимая обработка базы данных будет выполнена сервером. Язык Б( ПЬ позволяет клиенту, который подключился к одному серверу, подключиться и к другому серверу.
После установления второго соединения первое соединение становится пассивным. Поэтому запросы будут выполняться вторым сервером до тех пор, пока клиент не переключится либо на предыдущий сервер с помощью другой новой операции ЕЕТ СОММЕСТ10М, либо еще на олин сервер, и тогда второе соединение также станет пассивным, и т.д. Иначе говоря, в любое время у клиента имеется лишь одно активное соединение и любое количество пассивных соединений и все запросы к базе данных от этого клиента направляются для обработки к серверу, с которым установлено активное соединение. Замечание. Стандарт языка БОЬ также позволяет (но не требует), чтобы реализация поддерживала.чязьтисерверные или многоканальные транзакции.
В этом случае клиент может переключаться с одного сервера на другой по ходу выполнения транзакции, так что одна часть транзакции выполняется на одном сервере, а другая — на другом. Отметим, в частности, что если для транзакции обновления разрешено охватывать несколько серверов, то реализация должна, по-видимому, поддерживать некий вариант двухфазной фиксации, чтобы обеспйчить атомарность транзакции, как предусмотрено стандартом языка БОЬ. 801 Глава 20.
Распределенные базы данных И наконец, каждое соединение, обеспечиваемое данным клиентом (то ли активное, то ли пассивное), рано или поздно должно быть отключено с помощью соответствующей операции 01ЯСОЕЕЕСТ, хотя в простых случаях такая операция, как и соответствующая операция СОЕЕЕСТ, может быть неявной. Дополнительную информацию по данному вопросу можно найти в самом стандарте языка БО!. 1422] или в учебном пособии по этому языку 14.19]. 20.8.
Резюме В настоящей главе кратко рассматривались системы распределенных баз данных. В качестве плана изложения использовались двенадцать целей для этих систем 120,!4]. Однако еше раз подчеркнем, что не все цели равносильны во всех ситуациях. Также здесь речь шла о технических проблемах, которые возникают в областях обработки запросов, управления каталогом, распространения обновлений, управления восстановлением и управления параллельностью. Обсуждались те вопросы, попытки решения которых должны обеспечить независимость от СУБД; в частности, в разделе 20.6 описывались шлюзы и промежуточное программное обеспечение для доступа к данным.
Затем мы познакомились с обработкой данных в системах "клиент/сервер", которая может рассматриваться как специальный случай распределенной обработки данных в целом. Популярность подобных программных продуктов, присутствующих на рынке, постоянно возрастает.
В частности, в этой главе перечислялись те аспекты языка ЯЯ., которые отвечают требованиям обработки данных в системах "клиент/сервер", а также подчеркивалось, что пользователи должны избегать программирования на уровне записей, т.е. операций с курсором. Кратко была описана концепция хранимых процедур н вызовов удаленных процедур. Заиечавие. Одна из проблем, которую мы не обсуждали совсем, — проблема физического проектирования базы данных для распределенных систем. На самом деле, лаже если не учитывать возможность фрагментации и репликации, проблема принятия решения о том, какие данные и на каких узлах должны храниться (так называемая проблема размещения), известна как исключительно сложная [20.33].
Фрагментация и репликация лишь еще больше усложняют этот вопрос. Заслуживает упоминания тот факт, что на рынке программных продуктов стало заметно присутствие некоторых так называемых массовых ааратлельных компьютерных систем (см. аннотацию к (17.58] в главе!7). Такие системы обычно содержат большое количество процессоров, соединенных между собой с помощью высокоскоростной шины. Каждый процессор имеет собственную основную память, собственные дисковые накопители и выполняет собственную копию программного обеспечения СУБД, а полная база данных распределяется по всему набору дисковых накопителей. Другими словами, такие системы, по существу, представляют собой систему распределенных баз данных "в одном пакете".
Безусловно, что для подобных систем остаются справедливыми все наши рассуждения по таким вопросам, как стратегия обработки запросов, двухфазная фиксация, ситуация глобальной взаимной блокировки и т.д. В заключение отметим, что двенадцать целей создания распределенных баз данных (или их подмножество, которое включает по крайней мере цели 4-б и 8), рассматриваемых совместно, похоже, равносильны правилам "независимости от распределения" Кодда (Содд) для реляционной СУБД 19.5]. Приведем это правило здесь для ссылок, 802 Часть К Дополнительные аспекты ° Независимость от распределения (Кодл): "Реляционная СУБД обладает независимостью от распределения...
1которая подразумевает, что) СУБД имеет подъязык данных, который позволяет пользовательским программам и процедурам терминальной обработки оставаться логически незатронутыми в следующих ситуациях. а) Когда распределение данных вводится впервые (если первоначально установленная СУБД оперировала только нераспределенными данными). б) Когда данные перераспределяются (если СУБД оперирует распределенными данными)". И наконец отметим, что (как уже упоминалось в этой главе) цели 4-6 и 9-12, т.е. все цели, в названии которых есть слово "независимость", могут рассматриваться как расширение привычного понятия независимости данных на случай его применения для распределенной среды.