Главная » SQL, Базы данных » СРЕДСТВА SQL ДЛЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ

0

В настоящее время в языке SQL отсутствует поддержка9 настоящих распределенных систем баз данных. Безусловно, в области обработки данных  никакой поддержки и не требуется — основная задача распределенной базы данных, с точки зрения пользователя, состоит в том, чтобы сохранить возможности обработки данных неизменными. Тем не менее, требуются операции определения данных, такие как FRAGMENT, REPLICATE И т.д. [15.6]. Однако до сих пор такие операции в языке SQL отсутствуют.

С другой стороны, язык SQL поддерживает некоторые возможности создания системы "клиент/сервер", включая, в частности, операторы CONNECT и DISCONNECT  ДЛЯ установления  и  разрыва соединений  между  клиентом  и сервером. В  действительности, приложения SQL должны выполнять операцию CONNECT для  соединения с сервером, прежде чем они смогут выдать какой-либо запрос к базе данных (хотя такая операция CONNECT может быть и неявной). Как только соединение будет установлено, приложение, т.е. клиент, сможет выдать запрос SQL обычным образом, а необходимая обработка базы данных будет выполнена сервером.

Язык SQL позволяет клиенту, который подключился к одному серверу, подключиться

и к другому серверу. После установления второго соединения первое соединение становится пассивным. Поэтому запросы будут выполняться вторым сервером до тех пор, пока клиент не переключится либо на предыдущий сервер с помощью  другой новой операции SET CONNECTION, либо еще на один сервер, и тогда второе соединение также станет пассивным и т.д. Иначе говоря, в любое время  у  клиента имеется лишь одно активное соединение и любое количество пассивных соединений и все запросы к базе данных от этого клиента направляются для обработки к серверу, с которым поддерживается активное соединение.

Примечание. Стандарт языка SQL также позволяет (но не требует), чтобы реализация поддерживала мультисерверные транзакции. В этом случае клиент может переключаться с

одного сервера на другой по ходу выполнения транзакции, поэтому одна часть транзакции выполняется на одном сервере, а другая — на другом. Отметим, в частности, что если в транзакции обновления разрешено охватывать несколько серверов, то реализация должна, по-видимому, поддерживать некий вариант двухфазной фиксации, чтобы обеспечить неразрывность транзакции, как предусмотрено стандартом языка SQL.

Наконец, каждое соединение, установленное данным клиентом (то ли активное, то ли

пассивное), рано или поздно должно быть разорвано с помощью соответствующей операции DISCONNECT, хотя в простых случаях операция DISCONNECT, как и  соответствующая операция CONNECT, может быть неявной.

Дополнительную информацию по данному вопросу (в частности, подробные сведения о средствах SQL, предназначенных для создания хранимых процедур) можно найти в самом стандарте языка SQL [4.23], [4.24] или в учебном пособии по этому языку [4.20].

21.1.      РЕЗЮМЕ

В настоящей главе кратко рассматривались системы распределенных баз данных. В качестве стержня изложения использовались двенадцать целей для этих систем [21.13]. Но еще раз подчеркнем, что не все цели равнозначны во всех ситуациях. Также здесь речь шла о технических проблемах, которые возникают в областях обработки запросов, управления  каталогом,  распространения  обновлений, управления восстановлением и управления параллельностью. Кроме того, обсуждались те вопросы, попытки решения которых  должны  обеспечить  независимость от  СУБД;  в  частности,  в  разделе  21.6 описывались  шлюзы, промежуточное программное обеспечение для доступа к данным и интегрированные  системы.  Затем  мы  познакомились  с  обработкой  данных  в  системах "клиент/сервер",   которая   может   рассматриваться   как   важный    частный   случай распределенной обработки данных в целом. Наконец, в этой  главе перечислялись те аспекты  языка  SQL,  которые  отвечают  требованиям  обработки  данных  в  системах "клиент/сервер",    а    также    подчеркивалось,    что    пользователи    должны    избегать программирования на уровне записей (т.е. операций с курсорами, как они именуются в стандарте SQL). Здесь также кратко  была описана концепция хранимых процедур и вызовов удаленных процедур.

Примечание. Одной из проблем, которую мы не обсуждали вообще, является проблема физического проектирования базы данных для распределенных систем. На самом деле, даже если не учитывать возможность фрагментации и репликации, проблема принятия решения о том, какие должны храниться данные и на каких узлах (так называемая проблема размещения), считается исключительно сложной [21.31]. Фрагментация и репликация лишь еще больше усложняют этот вопрос.

Заслуживает упоминания тот факт, что на рынке программных продуктов стало заметно присутствие так называемых массовых параллельных  компьютерных систем (см. аннотацию к [18.56]). Такие системы обычно содержат большое количество процессоров, соединенных между собой с помощью высокоскоростной шины. Каждый процессор имеет собственную основную память, собственные дисковые накопители и поддерживает собственную копию программного обеспечения СУБД, а полная база данных распределяется по всему набору дисковых накопителей. Другими словами, такие системы, по существу, представляют собой систему распределенных баз данных "в одном устройстве". Безусловно, что для подобных систем остаются справедливыми все изложенные рассуждения по таким вопросам, как стратегия обработки запросов, двухфазная фиксация, ситуация глобальной взаимоблокировки и т.д.

В заключение отметим, что двенадцать целей создания распределенных баз данных

(или их подмножество, которое включает, по крайней мере, цели 4, 5, 6 и 8), рассматриваемые совместно, похоже, равносильны правилам независимости от распределения Кодда для реляционной СУБД [10.3]. Ниже это правило приведено для использования в дальнейшем.

■   Независимость от распределения (Кодд). "Реляционная СУБД обладает  независимостью от распределения… [которая подразумевает, что] СУБД  имеет подъязык данных, который позволяет пользовательским программам  и процедурам терминальной обработки оставаться логически  незатронутыми в описанных ниже ситуациях.

а)  Когда распределение данных вводится впервые (если первоначально установленная СУБД оперировала только нераспределенными данными).

б)  Когда данные перераспределяются (если СУБД оперирует распределенными данными)".

Наконец отметим, что (как уже упоминалось в этой главе) цели 4—6 и 9—12, т.е. все цели, в названии которых есть слово "независимость", могут  рассматриваться как расширение привычного понятия независимости от данных на случай его применения для распределенной среды. При этом указанные  принципы, по сути, превращаются в инструмент защиты инвестиций в приложения.

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии