Архитектура информационной системы
Архитектура «файл-сервер»
Для предприятий малого бизнеса возможна организация информационной системы на базе архитектуры "файл-сервер" с использованием СУБД Access, FoxPro (Visual FoxPro), Paradox и ряда других. Если количество пользователей системы не велико, подобное решение оптимально.
В архитектуре файл-сервер вся обработка данных выполняется на клиентских компьютерах, сервер служит в качестве хранилища данных (рис. 1.
Копии базы данных передаются для обработки на клиентские компьютеры, при этом постоянно выполняется синхронизация основной базы данных с ее копиями в случае их обновления.
Недостаток архитектуры файл-сервер – большая нагрузка на сеть и клиентские компьютеры, поскольку на всех клиентских компьютерах должна быть установлена копия СУБД, которая выполняет все необходимые функции по обработке данных, при этом все изменения в копиях обязательно передаются по сети в основную базу данных, существенно повышая сетевой трафик
Преимущество состоит в том, что не требуется мощный сервер. Такую архитектуру можно реализовать даже в одноранговой сети без выделенного сервера, необходимо только выделить один из компьютеров в качестве хранилища общей базы данных.
Количество пользователей системы в архитектуре файл-сервер обычно не должно превышать 10-15, в противном случае пользователи будут ощущать замедление работы. Данное обстоятельство служит нарушением принципа масштабируемости, поэтому по мере роста количества пользователей ИС (допустим, произошло существенное расширение бизнеса) приходится выполнять переход от файл-серверной к клиент-серверной архитектуре. При разработке файл-серверной системы всегда нужно учитывать возможность такого перехода в будущем
Архитектура «клиент-сервер»
Применительно к информационным системам архитектура «клиент-сервер» интересна и актуальна главным образом потому, что обеспечивает простое и относительно дешевое решение проблемы коллективного (многопользовательского) доступа к базам данных в локальной или глобальной сети.
Информационная система архитектуры «клиент-сервер» разбивается на две части, которые могут выполняться в разных узлах сети, - клиентскую и серверную части. На серверную часть возлагаются функции хранения и значительной части обработки данных, на клиентскую – функции взаимодействия с пользователем и, частично, обработки данных, полученных с сервера (рис. 1.6).
Следует заметить, что обе части системы (серверная и клиентская) могут располагаться и на одном компьютере, такой вариант можно применять в процессе отладки клиент-серверной системы.
Для того, чтобы прикладная программа, выполняющаяся на клиентском компьютере, могла запросить услугу у сервера, требуется некоторый интерфейсный программный слой, поддерживающий взаимодействие сервера с клиентами. Прикладное ПО или конечный пользователь взаимодействуют с клиентской частью системы. Клиентская часть системы
при потребности обращается по сети к серверной части. Интерфейс серверной части определен и фиксирован.
В современных информационных системах таким интерфейсом, как правило, является язык SQL, т.е. сервер принимает от клиентской части SQL-запрос и выполняет необходимые операции в базе данных, после чего возвращает ответ клиенту. По сути, язык SQL представляет собой стандарт интерфейса СУБД в открытых системах (концепция открытых систем затрагивалась в предыдущем разделе).
В системе «клиент-сервер» возможно создание новых клиентских частей уже существующей системы, причем максимальное количество одновременно работающих с общей БД клиентов несравнимо больше, чем в файл-серверной архитектуре, т.е. система клиент-сервер является более масштабируемой. Это объясняется тем, что сетевой трафик в клиент-серверной системе невысок (от клиента передаются только тексты запросов, от сервера – уже отобранные данные, а не вся база данных, как в архитектуре файл-сервер).
Термин «сервер баз данных» обычно используют для обозначения всей СУБД, основанной на архитектуре "клиент-сервер", включая серверную и клиентскую части. Собирательное название SQL-сервер относится ко всем серверам баз данных, основанных на использовании языка SQL.
В настоящее время имеется несколько широко распространенных коммерческих SQL-серверов – Oracle, DB-2, MS SQL Server, Sybase, In-formix, Interbase и свободно распространяемые серверы с открытым исходным кодом PostGres (PostgreeSQL), MySQL, FireBird (свободно распространяемый вариант сервера Interbase). Приведенный список далеко не полон.
SQL-cерверы обладают преимуществами и недостатками. Очевидное преимущество - стандартность интерфейса. В пределе, хотя на практике это пока не совсем так, клиентские части могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел. Иными словами, прикладное программное обеспечение на стороне клиента легко настраивается на взаимодействие с любым новым SQL-сервером.
Недостаток – большая нагрузка на сервер, который должен отрабатывать запросы всех клиентов, и малая нагрузка на клиентскую часть. По мере роста количества одновременно работающих пользователей сервер часто становится узким местом всей системы и возникает необходимость его разгрузки. Для этого существуют два пути.
• Если клиентские компьютеры обладают достаточной мощностью, то можно возложить на них больше функций обработки данных, разгрузив сервер.
• В случае применения маломощных клиентских компьютеров (а это более типичная ситуация), применяют многозвенную (многоуровневую) архитектуру «клиент-сервер», выделив промежуточные дополнительные слои программного обеспечения между клиентом и сервером