Распределенные базы данных

Системы распределенных вычислений появляются, прежде всего, по той причине, что в крупных автоматизированных информационных системах, построенных на основе корпора­тивных сетей, не всегда удается организовать централизованное размещение всех баз данных и СУБД на одном узле сети. Поэтому системы распределенных вычислений тесно связаны с системами управления распределенными базами данных.

Распределенная база данных (РаБД) – это совокупность логически взаимосвязанных баз данных, распределенных в компьютерной сети.

Система управления распределенной базой данных (РаСУБД) – это программная система, которая обеспечивает управление распределенной базой данных и прозрачность ее распределенности для пользователей.

Распределенная база данных может объединять базы данных, поддерживающие любые модели (иерархические, сетевые, реляционные и объектно-ориентированные базы данных) в рамках единой глобальной схемы. Подобная конфигурация должна обеспечивать для всех приложений прозрачный доступ к любым данным независимо от их местоположения и формата.

Крис Дейт сформулировал основные принципы со­здания и функционирования распределенных баз данных. К их числу относятся:

1) прозрачность расположения данных для пользовате­ля (иначе говоря, для пользователя распределенная база дан­ных должна представляться и выглядеть точно так же, как и нераспределенная);

2) изолированность пользователей друг от друга (пользо­ватель должен “не чувствовать”, “не видеть” работу других пользователей в тот момент, когда он изменяет, обновляет, уда­ляет данные);

3) синхронизация и согласованность (непротиворечи­вость) состояния данных в любой момент времени.

Из основных вытекает ряд дополнительных принципов:

 локальная автономия (ни одна вычислительная установка для своего успешного функционирования не должна зависеть от любой другой установки);

 отсутствие центральной установки (следствие преды­дущего пункта);

 независимость от местоположения (пользователю все равно, где физически находятся данные, он работает так, как будто они находятся на его локальной установке);

 непрерывность функционирования (отсутствие плано­вых отключений системы в целом, например для подключения новой установки или обновления версии СУБД);

 независимость от фрагментации данных (как от гори­зонтальной фрагментации, когда различные группы записей одной таблицы размещены на различных установках или в раз­личных локальных базах, так и от вертикальной фрагментации, когда различные поля-столбцы одной таблицы размещены на разных установках);

 независимость от реплицирования (дублирования) дан­ных (когда какая-либо таблица базы данных (или ее часть) физически может быть представлена несколькими копиями, рас­положенными на различных установках, причем “прозрачно” для пользователя);

 распределенная обработка запросов (оптимизация зап­росов должна носить распределенный характер – сначала гло­бальная оптимизация, а далее локальная оптимизация на каж­дой из задействованных установок);

 распределенное управление транзакциями (в распреде­ленной системе отдельная транзакция может требовать выпол­нения действий на разных установках, транзакция считается завершенной, если она успешно завершена на всех вовлечен­ных установках);

 независимость от аппаратуры (желательно, чтобы сис­тема могла функционировать на установках, включающих ком­пьютеры разных типов);

 независимость от типа операционной системы (систе­ма должна функционировать вне зависимости от возможного различия ОС на различных вычислительных установках);

 независимость от коммуникационной сети (возможность функционирования в разных коммуникационных средах);

 независимость от СУБД, называемая интероперабельностью (на разных установках могут функционировать СУБД различного типа, на практике ограни­чиваемые кругом СУБД, поддерживающих SQL).

В обиходе СУБД, на основе которых создаются распреде­ленные информационные системы, также характеризуют тер­мином “распределенные СУБД”, и, соответственно, использу­ют термин “распределенные базы данных”.

Важнейшую роль в технологии создания и функциониро­вания распределенных баз данных играет техника “представ­лений” (Views).

Представлением называется сохраняемый в базе данных авторизованный глобальный запрос на выборку данных. Авторизованность означает возможность запуска такого запроса только конкретно поименованным в системе пользователем. Глобальность заключается в том, что выборка данных может осуществляться со всей базы данных, в том числе из данных, расположенных на других вычислительных установках. Напом­ним, что результатом запроса на выборку является набор дан­ных, представляющий временную на сеанс открытого запроса таблицу, с которой (которыми) в дальнейшем можно работать, как с обычными реляционными таблицами данных. В резуль­тате таких глобальных авторизованных запросов для конкрет­ного пользователя создастся некая виртуальная база данных со своим перечнем таблиц, связей, т. е. со “своей” схемой и со “своими” данными. В принципе, с точки зрения информацион­ных задач в большинстве случаев пользователю безразлично, где и в каком виде находятся собственно сами данные. Данные должны быть такими и логически организованы таким обра­зом, чтобы можно было решать требуемые информационные задачи и выполнять установленные функции.

При входе пользователя в распределенную систему ядро СУБД, идентифицируя пользователя, запускает запросы его ранее определенного и хранимого в базе данных представле­ния и формирует ему “свое” видение базы данных, воспринимаемое пользователем как обычная (локальная) база данных. Так как представление базы данных виртуально, то “настоя­щие” данные физически находятся там, где они находились до формирования представления. При осуществлении пользова­телем манипуляций с данными ядро распределенной СУБД по системному каталогу базы данных само определяет, где нахо­дятся данные, вырабатывает стратегию действий, т. е. опреде­ляет, где, на каких установках целесообразнее производить опе­рации, куда для этого и какие данные необходимо переместить из других установок или локальных баз данных, проверяет вы­полнение ограничений целостности данных. При этом большая часть таких операций прозрачна (т. е. невидима) для пользова­теля, и он воспринимает работу в распределенной базе данных, как в обычной локальной базе.

Технологически в реляционных СУБД техника представ­лений реализуется через введение в язык SQL-конструкций, позволяющих аналогично технике “событий–правил–процедур” создавать именованные запросы-представления:

CREATE VIEW ИмяПредставления AS

SELECT...

FROM...

…;

В данных конструкциях после имени представления и клю­чевого слова AS размещается запрос на выборку данных, соб­ственно и формирующий соответствующее представление ка­кого-либо объекта базы данных.

Авторизация представлений осуществляется применением команд (директив) GRANT, присутствующих в базовом переч­не инструкций языка SQL и предоставляющих пол­номочия и привилегии пользователям:

GRANT SELECT ОN ИмяПредставления ТО ИмяПользователя1, ИмяПользователя2, ...;

Несмотря на простоту и определенную изящность идеи “представлений”, практическая реализация подобной техноло­гии построения и функционирования распределенных систем встречает ряд серьезных проблем. Первая из них связана с раз­мещением системного каталога базы данных, так как при фор­мировании для пользователя “представления” распределенной базы данных ядро СУБД в первую очередь должно “узнать”, где и в каком виде в действительности находятся данные. Тре­бование отсутствия центральной установки приводит к выводу о том, что системный каталог должен быть на любой локаль­ной установке. Но тогда возникает проблема обновлений. Если какой-либо пользователь изменил данные или их структуру в системе, то эти изменения должны отразиться во всех копиях системного каталога. Однако размножение обновлений систем­ного каталога может встретить трудности в виде недоступнос­ти (занятости) системных каталогов на других установках в момент распространения обновлений. В результате может быть не обеспечена непрерывность согласованного состояния дан­ных, а также возникнуть ряд других проблем.

Решение подобных проблем и практическая реализация распределенных вычислений осуществляется че­рез отступление от некоторых рассмотренных выше принци­пов создания и функционирования распределенных систем. В зависимости от того, какой принцип приносится в “жертву” (отсутствие центральной установки, непрерывность функцио­нирования, согласованного состояния данных и др.) выдели­лись несколько самостоятельных направлений в технологиях распределенных систем – технологии “Клиент-сервер”, тех­нологии реплицирования, технологии объектного связывания.

Реальные распределенные информационные системы, как правило, построены на основе сочетания всех трех техноло­гий, но в методическом плане их целесообразно рассмотреть отдельно. Дополнительно следует также отметить, что техника представлений оказалась чрезвычайно плодотворной также и в другой сфере СУБД – защите данных. Авторизованный харак­тер запросов, формирующих представления, позволяет предоставить конкретному пользователю те данные и в том виде, ко­торые необходимы ему для его непосредственных задач, исклю­чив возможность доступа, просмотра и изменения других дан­ных.

2.3. Технологии и модели “Клиент-сервер”

Системы на основе технологий “Клиент-сервер” истори­чески выросли из первых централизованных многопользова­тельских автоматизированных информационных систем, ин­тенсивно развивавшихся в 70-х годах (системы mainframe), и получили, вероятно, наиболее широкое распространение в сфе­ре информационного обеспечения крупных предприятий и кор­пораций.

В технологиях “Клиент-сервер” отступают от одного из главных принципов создания и функционирования распределен­ных систем – отсутствия центральной установки. Поэто­му можно выделить две основные идеи, лежащие в основе кли­ент-серверных технологий:

1) общие для всех пользователей данные на одном или не­скольких серверах;

2) много пользователей (клиентов) на различных вычисли­тельных установках, совместно (параллельно и одновременно) обрабатывающих общие данные.

Иначе говоря, системы, основанные на технологиях “Кли­ент-сервер”, распределены только в отношении пользователей, поэтому часто их не относят к “настоящим” распределенным системам, а считают отдельным, уже упоминавшимся классом многопользовательских систем.

Важное значение в технологиях “Клиент-сервер” имеют понятия сервера и клиента.

Под сервером в широком смысле понимается любая сис­тема, процесс, компьютер, владеющие каким-либо вычисли­тельным ресурсом (памятью, временем, производительностью процессора и т. д.).

Клиентом называется также любая система, процесс, ком­пьютер, пользователь, запрашивающие у сервера какой-либо ресурс, пользующиеся каким-либо ресурсом или обслуживаемые сервером иным способом.

В своем развитии системы “Клиент-сервер” прошли не­сколько этапов, в ходе которых сформировались различные модели систем “Клиент-сервер”. Их реализация и, следователь­но, правильное понимание основаны на разделении структу­ры СУБД на три компонента:

компонент представления, реализующий функции вво­да и отображения данных, называемый иногда еще просто как интерфейс пользователя;

прикладной компонент, включающий набор запросов, событий, правил, процедур и других вычислительных функций, реализующий предназначение автоматизированной информа­ционной системы в конкретной предметной области;

компонент доступа к данным, реализующий функции хранения, извлечения, физического обновления и изменения данных (машина данных).

Исходя из особенностей реализации и распределения (рас­положения) в системе этих трех компонентов различают четы­ре модели технологий “Клиент-сервер”:

модель файлового сервера (File Server – FS);

модель удаленного доступа к данным (Remote Data Access – RDA);

модель сервера базы данных (DataBase Server – DBS);

модель сервера приложений (Application Server – AS).

Модель файлового сервера

Модель файлового сервера является наиболее простой и характеризует не столько способ образования информационной системы, сколько общий спо­соб взаимодействия компьютеров в локальной сети. Один из компьютеров сети выделяется и определяется файловым сер­вером, т. е. общим хранилищем любых данных. Суть FS-модели иллюстрируется схемой, приведенной на рис. 2.3.

В FS-модели все основные компоненты размещаются на клиентской установке. При обращении к данным ядро СУБД, в свою очередь, обращается с запросами на ввод-вывод данных за сервисом к файловой системе. С помощью функций опера­ционной системы в оперативную память клиентской установ­ки полностью или частично на время сеанса работы копирует­ся файл базы данных. Таким образом, сервер в данном случае выполняет чисто пассивную функцию.

Достоинством данной модели являются ее простота, от­сутствие высоких требований к производительности сервера (главное – требуемый объем дискового пространства). Следу­ет также отметить, что программные компоненты СУБД в дан­ном случае не распределены, т.е. никакая часть СУБД на сер­вере не инсталлируется и не размещается.

С другой стороны также очевидны и недостатки такой модели. Это прежде всего высокий сетевой трафик, достига­ющий пиковых значений особенно в момент массового вхож­дения в систему пользователей, например в начале рабочего дня. Однако более существенным с точки зрения работы с общей базой данных является отсутствие специальных механизмов безопасности файла (файлов) базы данных со стороны СУБД. Иначе говоря, разделение данных между пользователями (па­раллельная работа с одним файлом данных) осуществляется только средствами файловой системы ОС для одновременной работы нескольких прикладных программ с одним файлом.

Несмотря на очевидные недостатки, модель файлового сер­вера является естественным средством расширения возможно­стей персональных (настольных) СУБД в направлении поддер­жки многопользовательского режима и, очевидно, в этом плане еще будет сохранять свое значение.

Наши рекомендации