Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТС ПС 2013.docx
Скачиваний:
50
Добавлен:
13.02.2016
Размер:
179.61 Кб
Скачать
  1. Информационные системы, построенные по архитектуре клиент-сервер

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

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

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

Наконец, клиентская часть сервера баз данных, используя средства сетевого доступа, обращается к серверу баз данных, передавая ему текст оператора языка SQL.

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

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

1. Выполнять клиентские запросы по извлечению и модификации данных;

2. Обеспечивать одновременный доступ к данным нескольких пользователей;

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

4. Обеспечивать целостность и непротиворечивость данных в случае аппаратных и программных сбоев;

5. Защищать данные от несакционированного доступа;

6. Предоставлять дополнительные средства администрирования информационной системы.

Рассмотрим эти требования более подробно.

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

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

Другой аспект многопользовательского доступа - это распараллеливание доступа. То есть сервер баз данных должен уметь обрабатывать несколько запросов одновременно. Другими словами, если два пользователя почти одновременно обратились к серверу баз данных со своими запросами, то сервер не должен обрабатывать их строго по очереди (“вначале выполнить целиком один запрос, а только затем другой”). В противном случае, какой-то один очень сложный запрос может заставить ждать многих пользователей с простыми запросами. В этом аспекте сервер баз данных аналогичен многозадачной операционной системе.

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

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

Что касается программных сбоев, то здесь надо различать умышленные попытки исказить информацию, или случайные ошибки в программах, которые могут привести к таким же последствиям. Например, списывание денег с банковского счета должно приводить или к зачислению этой суммы на другой счет, или к появлению расходного документа. То есть нельзя просто так списать или начислить деньги на счет. Злоумышленник, получивший доступ к банковской системе, не должен иметь возможность просто так увеличить сумму на своем счете. Кроме того, при программированиии банковской системы в нее может закрасться ошибка, которая может привести к рассогласованию данных. Поэтому сервер базы данных должен уметь проверять корректность производимых манипуляций с данными.

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

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

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

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

Функции программы-клиента базы данных

Как правило, программаклиент в системах управления базами данных отвечает за взаимодействие с пользователем. Взаимодействие может строится на основе каких-либо экранных форм или диалога (как именно, в нашем рассмотрении не важно). На основе команд, введенных пользователем, программаклиент формирует запрос к серверу базы данных. После того, как запрос будет отработан и нужные данные найдены и переданы программеклиенту, программаклиент выдает их на экран.

Могут существовать программыклиенты, которые не ведут никакого диалога с пользователем, а выполняют системные задачи. Например, принимают сообщения по почте, извлекают из них данные и заносят в базу данных. В любом случае, программаклиент выполняет роль взаимодействия с внешним миром, но не занимается вопросами внутреннего представления и хранения данных.

Преимуществами данной архитектуры являются:

  • возможность, в большинстве случаев, распределить функции вычислительной системы между несколькими независимыми компьютерами в сети;

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

  • поддержка многопользовательской работы;

- гарантия целостности данных. Недостатки:

- неработоспособность сервера может сделать неработоспособной всю вычислительную сеть;

- администрирование данной системы требует квалифицированного профессионала;

- высокая стоимость оборудования;

- бизнес логика приложений осталась в клиентском ПО.

  1. Многоуровневая архитектура информационных систем Многоуровневая архитектура клиент-сервер (Multitierarchitecture) - разновидность архитектуры клиент-сервер, в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов.

Среди многоуровневой архитектуры клиент-сервер наиболее распространена трехуровневая архитектура (трехзвенная архитектура, three-tier), предполагающая наличие следующих компонентов приложения: клиентское приложение (обычно говорят "тонкий клиент" или терминал), подключенное к серверу приложений, который в свою очередь подключен к серверу базы данных.

Терминал - это интерфейсный (обычно графический) компонент, который представляет первый уровень, собственно приложение для конечного пользователя. Первый уровень не должен иметь прямых связей с базой данных (по требованиям безопасности), быть нагруженным основной бизнес-логикой (по требованиям масштабируемости) и хранить состояние приложения (по требованиям надежности). На первый уровень может быть вынесена и обычно выносится простейшая бизнес-логика: интерфейс авторизации, алгоритмы шифрования, проверка вводимых значений на допустимость и соответствие формату, несложные операции (сортировка, группировка, подсчет значений) с данными, уже загруженными на терминал.

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

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

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

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

Плюсами данной архитектуры являются:

  • клиентское ПО не нуждается в администрировании;

  • масштабируемость;

  • конфигурируемость - изолированность уровней друг от друга позволяет быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней;

  • высокая безопасность;

  • высокая надежность;

  • низкие требования к скорости канала (сети) между терминалами и сервером приложений;

  • низкие требования к производительности и техническим характеристикам герминалов, как следствие снижение их стоимости.

Минусы:

- растет сложность серверной части и, как следствие, затраты на администрирование и обслуживание;

  • более высокая сложность создания приложений;

  • сложнее в разворачивании и администрировании;

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

  • высокие требования к скорости канала (сети) между сервером базы данных и серверами приложений.

Многоуровневая архитектура

В основу работы Базы Данных (БД) в системе заложен принцип многоуровневой архитектуры, который заключается в реализации двух основных принципов:

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

- освобождение сервера БД от несвойственных ему функций.

На практике эти принципы реализуются введением в систему дополнительного звена - сервера приложений.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]