Архитектура клиент-сервер обладает рядом преимуществ:
· обеспечивается более широкий доступ к существующим базам данных;
· повышается общая производительность системы: поскольку клиенты и сервер находятся на разных компьютерах, их процессоры способны выполнять приложения параллельно.;
· снижается стоимость аппаратного обеспечения; достаточно мощный компьютер с большим устройством хранения нужен только серверу – для хранения и управления базой данных;
· сокращаются коммуникационные расходы. Приложения выполняют часть операций на клиентских компьютерах и посылают через сеть только запросы к базам данных, что позволяет значительно сократить объем пересылаемых по сети данных;
· повышается уровень непротиворечивости данных. Сервер может самостоятельно управлять проверкой целостности данных, поскольку лишь на нем определяются и проверяются все ограничения. При этом каждому приложению не придется выполнять собственную проверку.
Технология клиент-сервер разделяет работу с базой данных на две части:
– клиентская часть обеспечивает интерактивный, легкий в использовании, обычно графический интерфейс работы с базой – заполнение, ведение, поиск и выборку информации, формирование отчетов. Обычно в клиентской части выделяют следующие группы функций:
– функции ввода и отображения данных;
– функции обработки данных внутри приложения, при этом результаты обработки хранятся на локальной машине, на которой установлена клиентская часть;
– сервер обеспечивает управление данными, разделение информации, администрирование и безопасность. Находится на специально выделенных компьютерах, хранящих базы данных.
При технологии клиент-сервер клиентское приложение формирует запрос к серверу БД, на котором выполняются все команды. Результаты команд посылаются затем клиенту для использования и просмотра. Все результаты запросов хранятся на компьютере клиентской части.
Если все функции распределяются только между клиентом и сервером, говорят, что речь идет о двухуровневой модели «клиент-серверной» технологии. Существует несколько разновидностей такой модели.
При такой организации сервера предполагается следующее распределение функций: на клиенте располагаются почти все части приложения: функции ввода и отображения, функции управления информационными ресурсами. Файловый сервер содержит файлы, необходимые для обработки запросов клиентской части и самой СУБД и поддерживает доступ к файлам данных. СУБД посылает запросы файловому серверу по всем необходимым ей данным. Запрос клиента формируется в командах языка манипулирования данными. СУБД переводит этот запрос в последовательность файловых команд, осуществляющих пересылку информации на клиента, которая затем анализируется клиентом.
Передача файлов представляет собой длительную процедуру, поэтому в результате возникают ряд проблем: низкая производительность, усложнение определения целостности базы данных и т.д.
Сервер баз данных
Термин "сервер баз данных" обычно используют для обозначения СУБД, основанной на архитектуре "клиент-сервер", включая и серверную, и клиентскую части.
В этом случае база данных также хранится удаленно на сервере. Здесь же находится ядро СУБД. На клиенте располагаются части приложения, поддерживающие функции ввода и отображения данных. Такой подход имеет ряд преимуществ. Сервер принимает и обрабатывает запросы со стороны клиентов, проверяет полномочия пользователей, гарантирует соблюдение ограничений целостности, выполняет обновление данных, выполняет запросы и возвращает результаты клиенту, обеспечивает одновременный доступ к базе пользователей и ее целостность. В результате клиент получает только ответ на запрос, а не блоки информации, среди которой надо отыскивать необходимую.
1. Принципы взаимодействия между клиентскими и серверными частями. Доступ к базе данных от прикладной программы или пользователя производится путем обращения к клиентской части системы. В качестве основного интерфейса между клиентской и серверной частями выступает язык баз данных SQL.
Серверы баз данных, интерфейс которых основан исключительно на языке SQL, обладают своими преимуществами и своими недостатками. Очевидное преимущество - стандартность интерфейса. Клиентские части любой SQL-ориентированной СУБД могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел.
Недостаток тоже довольно очевиден. При таком высоком уровне интерфейса между клиентской и серверной частями системы на стороне клиента работает слишком мало программ СУБД. Это нормально, если на стороне клиента используется маломощная рабочая станция. Но если клиентский компьютер обладает достаточной мощностью, то часто возникает желание возложить на него больше функций управления базами данных, разгрузив сервер, который является узким местом всей системы.
2. Типичное разделение функций между клиентами и серверами
В типичном на сегодняшний день случае на стороне клиента СУБД работает только такое программное обеспечение, которое не имеет непосредственного доступа к базам данных, а обращается для этого к серверу с использованием языка SQL.
Из предыдущих рассуждений видно, что требования к аппаратуре и программному обеспечению клиентских и серверных компьютеров различаются в зависимости от вида использования системы.
Если разделение между клиентом и сервером достаточно жесткое (как в большинстве современных СУБД), то пользователям, работающим на рабочих станциях или персональных компьютерах, абсолютно все равно, какая аппаратура и операционная система работают на сервере, лишь бы он справлялся с возникающим потоком запросов.
Но если могут возникнуть потребности перераспределения функций между клиентом и сервером, то уже совсем не все равно, какие операционные системы используются.
Трехуровневая модель технологии «клиент-сервер»
Она является расширением двухуровневой модели и в нее вводится дополнительный элемент – посредник между клиентом и сервером. Таким посредником является сервер приложений. В такой модели клиенту отводятся те же функции. Сервер базы данных занимается исключительно функциями создания и ведения базы данных, поддержания ее целостности, восстановления базы после сбоев и т.д. Сервер приложений выполняет общие функции клиентов, работа с каталогами, обмен сообщениями и т.д.
Основные объекты структуры базы данных SQL-сервера
К основным объектам базы данных SQL Server относятся объекты, представленные в таблице:
Tables | Таблицы базы данных, в которых хранятся собственно данные |
Views | Просмотры (виртуальные таблицы) для отображения данных из таблиц |
Indexes | Индексы – дополнительные структуры, призванные повысить производительность работы с данными |
Keys | Ключи – один из видов ограничений целостности данных |
Constraints | Ограничение целостности – объекты для обеспечения логической целостности данных |
Roles | Роли, позволяющие объединять пользователей в группы |
Приведем краткий обзор основных объектов баз данных.
Таблицы
Все данные в SQL содержатся в объектах, называемых таблицами. Таблицы представляют собой совокупность каких-либо сведений об объектах, явлениях, процессах реального мира. Никакие другие объекты не хранят данные, но они могут обращаться к данным в таблице.
Представления. Представлениями (просмотрами) называют виртуальные таблицы, содержимое которых определяется запросом. Подобно реальным таблицам, представления содержат именованные столбцы и строки с данными. Для конечных пользователей представление выглядит как таблица, но в действительности оно не содержит данных, а лишь представляет данные, расположенные в одной или нескольких таблицах. Информация, которую видит пользователь через представление, не сохраняется в базе данных как самостоятельный объект.
Индексы
Индекс – структура, связанная с таблицей или представлением и предназначенная для ускорения поиска информации в них. Индекс определяется для одного или нескольких столбцов, называемых индексированными столбцами. Он содержит отсортированные значения индексированного столбца или столбцов со ссылками на соответствующую строку исходной таблицы или представления. Повышение производительности достигается за счет сортировки данных. Использование индексов может существенно повысить производительность поиска, однако для хранения индексов необходимо дополнительное пространство в базе данных.
Индексы – это наборы уникальных значений для некоторой таблицы с соответствующими ссылками на данные. Расположенные в самой таблице, они являются удобным внутренним механизмом системы SQL-сервера, с помощью которого осуществляется доступ к данным наиболее оптимальным способом. В среде SQL Server реализованы эффективные алгоритмы поиска нужного значения в строго определенной последовательности данных. Ускорение поиска достигается именно за счет того, что данные представляются упорядоченными (хотя физически, в зависимости от типа индекса, они могут храниться в соответствии с очередностью их добавления в таблицу). К настоящему времени разработаны эффективные математические алгоритмы поиска данных в упорядоченной последовательности. Создание индекса. Если выборка данных из таблицы требует значительного времени, это означает, что для нее необходимо создать индекс. Индексы могут существенно повысить производительность выполнения операций поиска и выборки данных. При выборе столбца для индекса следует проанализировать, какие типы запросов чаще всего выполняются пользователями и какие столбцы являются ключевыми, т.е. задающими критерии выборки данных, например, порядок сортировки.