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

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

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

Архитектура клиент-сервер допускает различные варианты реализации. Исторически первыми появились распределенные БД с применением файл-серверной архитектуры. В таких БД по запросам пользователей файлы базы данных передаются на персональные компьютеры (ПК), где и производится их обработка. В таком случае БД может располагаться на файл-сервере, в качестве которого может использоваться либо специально выделенный компьютер, либо одна из объединенных в сеть наиболее мощных ПЭВМ. Функция файл-сервера заключается в основном в хранении БД и обеспечении доступа к ним пользователей, работающих на различных компьютерах. Эти функции обеспечиваются, как правило, той же СУБД, которая работает и на компьютерах пользователя. Для каждого клиента во время работы создается локальная копия данных, с которой он работает. При этом решаются задачи, связанные с возможным одновременным доступом нескольких пользователей к одним и тем же данным. Забота о целостности данных при такой организации работы целиком возлагается на программы клиентов. Если они недостаточно продуманы, в базу данных можно легко занести ошибки, которые могут отразиться на всех пользователях. Если используемая СУБД или не имеет достаточных средств для обеспечения многопользовательского доступа к данным, или неправильно сконфигурирована, то нарушение целостности может произойти также и при попытке одновременного изменения одних и тех же данных. Зачастую такие действия приводит к полному повреждению внутренней структуры БД.

При небольших объемах данных архитектура файл-сервер вполне соответствует современным требованиям, но с увеличением числа компьютеров в сети или ростом БД начинают возникать проблемы, связанные с резким падением производительности системы. Первый недостаток такого подхода связан с увеличением объема данных, передаваемых по сети, так как вся обработка производится на компьютере пользователя. Если пользователю потребуется несколько строк из таблицы объемом в сотни тысяч записей, то сначала вся таблица с файл-сервера будет передана на его компьютер, а затем СУБД отберет нужные записи. Даже реализация постепенной постраничной подкачки данных не решает проблему. Намного более удобной для совместной обработки данных является технология клиент-сервер. Технология клиент-сервер разделяет приложение на две части, используя лучшие качества с обеих сторон. Клиентская часть (Front-end) находится на компьютерах пользователей и обеспечивает легкий в использовании интерактивный интерфейс. Сервер (Back-end) находится на выделенном компьютере и обеспечивает управление данными, разделение информации, администрирование, обеспечение целостности, безопасности и секретности.

При технологии клиент-сервер клиентское приложение устанавливает соединение с сервером и формирует запрос к серверу БД. Выполнение запроса происходит на сервере. Затем результат запроса посылается клиенту для использования и просмотра. Так как обычно результатом запроса является небольшая часть хранимой в БД информации, то нагрузка на сеть сильно уменьшается. На сервере происходит также обработка транзакций и правил целостности (бизнес–логики). Так как SQL предоставляет стандартный интерфейс для СУБД различных типов, то он может использоваться как средство коммуникации между сервером и клиентом. В таком случае сервер часто называется сервером запросов (SQL сервером). Если главной задачей сервера является одновременная обработка большого количество запросов от многих клиентов (транзакций), то сервер называется сервером транзакций.

Если вся обработка данных происходит на стороне сервера, то клиент выполняет только функции интерфейса с пользователем. В этом случае клиентское приложение называют «тонким» клиентом. Если часть обработки данных производится на стороне клиента, то говорят о «толстом» клиенте. По разделению функций между клиентом и сервером можно выделить следующие типы архитектур (смотри рис 6.3):

1. Удаленное представление,

2. Распределенная функция,

3. Удаленный доступ к данным.

Рис. 6.3. Модели архитектуры клиент-сервер

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

Модель удаленного представления, иначе модель сервера БД (Database Server – DBS) отличается от предыдущей модели тем, что функции компьютера-клиента ограничиваются функциями представления, в то время как прикладные функции (обязательно включающие обеспечение целостности, безопасности и секретности) реализуются на стороне сервера. Логика работы приложения реализуются в виде хранимых процедур и триггеров. Процедуры хранятся в словаре БД и разделяются несколькими клиентами. В некоторых СУБД на сервере можно хранить и сами запросы, называемые в таком случае хранимыми командами. Хранимые команды выполняются значительно быстрее, так как не требуется каждый раз производить их синтаксический разбор и оптимизацию кода. Достоинствами модели DBS являются: возможность централизованного администрирования приложений и обеспечения целостности, а также эффективное использование вычислительных и коммуникационных ресурсов. К недостаткам модели следует отнести ограниченность действий, которых можно выполнять с помощью хранимых процедур и триггеров и сравнительно низкая эффективность использования вычислительных ресурсов обоих компьютеров.

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

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

Многоярусные базы данных

Если функцию хранения данных вынести на отдельный компьютер сети, то получим трехъярусный (трехзвенный) вариант представления данных. На нижнем уровне на компьютерах пользователя расположены приложения клиентов, обеспечивающих пользовательский интерфейс. На втором уровне расположен сервер приложений, обеспечивающий управление данными и реализующий несколько прикладных функций, каждая из которых оформлена как служба предоставления услуг всем требующим этого программам. Серверов приложений может быть несколько, причем каждый из них предоставляет свой вид сервиса. Любая программа, запрашивающая услугу у сервера приложений, является для него клиентом. На третьем уровне расположен удаленный сервер баз данных. Поскольку центральным звеном является сервер приложений, такую модель называют моделью сервера приложений, или AS-моделью (Application Server). Достоинством AS-модели является разгрузка сервера БД, а к недостаткам можно отнести увеличение нагрузки на сеть.

Многоярусные базы данных

Если функцию хранения данных вынести на отдельный компьютер сети, то получим трехъярусный (трехзвенный) вариант представления данных. На нижнем уровне на компьютерах пользователя расположены приложения клиентов, обеспечивающих пользовательский интерфейс. На втором уровне расположен сервер приложений, обеспечивающий управление данными и реализующий несколько прикладных функций, каждая из которых оформлена как служба предоставления услуг всем требующим этого программам. Серверов приложений может быть несколько, причем каждый из них предоставляет свой вид сервиса. Любая программа, запрашивающая услугу у сервера приложений, является для него клиентом. На третьем уровне расположен удаленный сервер баз данных. Поскольку центральным звеном является сервер приложений, такую модель называют моделью сервера приложений, или AS-моделью (Application Server). Достоинством AS-модели является разгрузка сервера БД, а к недостаткам можно отнести увеличение нагрузки на сеть.