Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по бд.docx
Скачиваний:
9
Добавлен:
22.09.2019
Размер:
905.02 Кб
Скачать

Insert on Деталь to Битов

 

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

 

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

 

REVOKE INSERT ON Деталь FROM Битов

 

Конкретный пользователь СУБД опознается ею по уникальному идентификатору пользователя (user-id). Любое действие над базой данных, любой оператор языка SQL выполняется не анонимно, но от имени конкретного пользователя. Идентификатор пользователя определяет набор доступных объектов базы данных для конкретного физического лица или группы лиц. Однако он ничего не сообщает о механизме его связи с конкретным оператором SQL. Например, когда запускается интерактивный SQL, как СУБД узнает, от имени какого пользователя осуществляется доступ к данным? Для этого в большинстве СУБД используется сеанс (session) работы с базой данных. Для запуска на компьютере-клиенте программы переднего плана (например интерактивного SQL) пользователь должен сообщить СУБД свой идентификатор и пароль. Все операции над базой данных, выполненные после этого, СУБД свяжет с конкретным пользователем, который запустил программу.

 

Некоторые СУБД (Oracle, Sybase) используют собственную систему паролей, в других (Ingres, Informix) идентификатор пользователя и его пароль из операционной системы.

 

Для современных баз данных с большим количеством пользователей актуальна проблема их объединения в группы. Традиционно применяются два способа определения групп пользователей.

 

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

 

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

 

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

 

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

 

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

 

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

 

 

 

Управление транзакциями

 

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

 

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

56

Классификации СУБД

По модели данных

Примеры:

    * Иерархические

    * Сетевые

    * Реляционные

    * Объектно-ориентированные

 

По степени распределённости

 

    * Локальные СУБД (все части локальной СУБД размещаются на одном компьютере)

    * Распределённые СУБД (части СУБД могут размещаться на двух и более компьютерах).

 

По способу доступа к БД

 

    * Файл-серверные

 

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

 

На данный момент файл-серверные СУБД считаются устаревшими.

 

Примеры: Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro.

 

    * Клиент-серверные

 

Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Недостаток клиент-серверных СУБД состоит в повышенных требованиях к серверу. Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность.

 

Примеры: Oracle, Firebird, Interbase, IBM DB2, MS SQL Server, Sybase, PostgreSQL, MySQL, Cache, ЛИНТЕР.

 

    * Встраиваемые

 

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

 

Примеры: OpenEdge, SQLite, BerkeleyDB, Firebird Embedded, MySQL, Sav Zigzag, Microsoft SQL Server Compact, ЛИНТЕР.

57

Критерии выбора СУБД при создании информационных систем

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

 

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

 

    * Моделирование данных

    * Особенности архитектуры и функциональные возможности

    * Контроль работы системы

    * Особенности разработки приложений

    * Производительность

    * Надежность

    * Требования к рабочей среде

    * Смешанные критерии

 

Рассмотрим каждую из этих групп в отдельности.

 

Моделирование данных

 

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

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

    * Средства поиска. Некоторые современные системы имеют встроенные дополнительные средства контекстного поиска.

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

    * Реализация языка запросов. Все современные системы совместимы со стандартным языком доступа к данным SQL-92, однако многие из них реализуют те или иные расширения данного стандарта.

 

Особенности архитектуры и функциональные возможности

 

    * Мобильность. Мобильность - это независимость системы от среды, в которой она работает. Средой в данном случае является как аппаратура, так и программное обеспечение (операционная система).

    * Масштабируемость. При выборе СУБД необходимо учитывать, сможет ли данная система соответствовать росту информационной системы, причем рост может проявляться в увеличении числа пользователей, объема хранимых данных и объеме обрабатываемой информации.

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

    * Сетевые возможности. Многие системы позволяют использовать широкий диапазон сетевых протоколов и служб для работы и администрирования.

 

Контроль работы системы

 

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

    * Автонастройка. Многие современные системы включают в себя возможности самоконфигурирования, которые, как правило, опираются на результаты работы сервисов с амодиагностики производительности. Данная возможность позволяет выявить слабые места конфигурации системы и автоматически настроить ее на максимальную производительность.

 

Особенности разработки приложений

 

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

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

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

    * Возможности разработки Web-приложений. При разработкеразличных приложений зачастую возникает необходимость использовать возможности среды Internet. Средства разработки некоторых производителей имеют большой набор инструментов для построения приложений под Web.

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

 

Производительность

 

    * Рейтинг TPC (Transactions per Cent). Для тестирования производительности применяются различные средства, и существует множество тестовых рейтингов. Одним из самых популярных и объективных является TPC-анализ производительности систем. Фактически TPC анализ рассматривает композицию СУБД и аппаратуры, на которой эта СУБД работает. Показатель TPC - это отношение количества запросов обрабатываемых за некий промежуток времени к стоимости всей системы.

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

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

 

Надежность

 

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

 

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

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

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

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

 

Требования к рабочей среде

 

    * Поддерживаемые аппаратные платформы.

    * Минимальные требования к оборудованию.

    * Максимальный размер адресуемой памяти. Поскольку почти все современные системы используют свою файловую систему, немаловажным фактором является то, какой максимальный объем физической памяти они могут использовать.

    * Операционные системы, под управлением которых способна работать СУБД .

 

Смешанные критерии

 

    * Качество и полнота документации. К сожалению, не все системы имеют полную и подробную документацию.

    * Локализованность. Возможность использования национальных языков не во всех системах реализована полностью.

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

    * Стабильность производителя.

    * Распространенность СУБД.

 

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

 

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

58

Централизованная архитектура

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

•     База данных в виде набора файлов находится на жестком диске компьютера.

•     На том же компьютере установлены СУБД и приложение для работы с БД .

•     Пользователь запускает приложение. Используя предоставляемый приложением пользовательский интерфейс, он инициирует обращение к БД на выборку/обновление информации.

•     Все обращения к БД идут через СУБД, которая инкапсулирует внутри себя все сведения о физической структуре БД.

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

•     Результат СУБД возвращает в приложение.

•     Приложение, используя пользовательский интерфейс, отображает результат выполнения запросов.

Рис. 58.  Централизованная архитектура

Подобная архитектура использовалась в первых версиях СУБД DB2, Oracle, Ingres [[5]].

Многопользовательская технология работы обеспечивалась либо режимом мультипрограммирования (одновременно могли работать процессор и внешние устройства – например, пока в прикладной программе одного пользователя шло считывание данных из внешней памяти, программа другого пользователя обрабатывалась процессором), либо режимом разделения времени (пользователям по очереди выделялись кванты времени на выполнении их программ). Такая технология была распространена в период "господства" больших ЭВМ (IBM-370, ЕС-1045, ЕС-1060). Основным недостатком этой модели является резкое снижение производительности при увеличении числа пользователей.

 

59

Файл-сервер — это выделенный сервер, оптимизированный для выполнения файловых операций ввода-вывода. Предназначен для хранения файлов любого типа. Как правило, обладает большим объемом дискового пространства.

 

Как правило, файл-сервер оборудован RAID контроллером для обеспечения быстрой записи и чтения данных.

Архитектура «файл-сервер»

 

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

60

Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.

 

 Недостатки

 

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

    * Поддержка работы данной системы требует отдельного специалиста - системного администратора.

    * Высокая стоимость оборудования.

 

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

 

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

 

Частные случаи многоуровневой архитектуры:

 

    * Трёхуровневая архитектура

 

 Сеть с выделенным сервером

 

Сеть с выделенным сервером (англ. Client/Server network) — это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

61

Трёхуровневая архитектура

 

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

 

Visual overview of a Three-tiered application

Обзор архитектуры

 

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

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

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

 

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

 

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

Достоинства

 

По сравнению с клиент-серверной или файл-серверной архитектурой можно выделить следующие достоинства трёхуровневой архитектуры:

 

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

    * конфигурируемость — изолированность уровней друг от друга позволяет (при правильном развертывании архитектуры) быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней

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

    * высокая надёжность

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

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

 

 Недостатки

 

Недостатки вытекают из достоинств. По сравнению c клиент-серверной или файл-серверной архитектурой можно выделить следующие недостатки трёхуровневой архитектуры:

 

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

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

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

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

 

Пример трёхзвенной архитектуры клиент-сервер

 

Компоненты трёхзвенной архитектуры, с точки зрения программного обеспечения реализуют определенные сервера БД, web-сервера и браузеры. Место любого из этих компонентов может занять программное обеспечение любого производителя. Ниже представлено описание взаимодействия компонентов трехуровневой архитектуры клиент-серверного приложения. Сервер БД представлен MySQL-сервером; сервер приложений технологиями: ADO.NET, ASP.NET и web-сервером IIS; роль клиента выполняет любой web-браузер.

 

Браузер клиента 1-> Сервер IIS 2-> Исполняющая среда ASP.NET 2.0 3-> Провайдер данных ADO.NET 2.0 4-> Сервер MySQL 5-> Провайдер данных ADO.NET 2.0 6-> Исполняющая среда ASP.NET 2.0 7-> Сервер IIS 8-> Браузер клиента

 

    * 1 — браузер клиента отправляет HTTP-запрос;

    * 2 — на стороне сервера служба Web Internet Information Server (web-сервер IIS) определяет тип запрашиваемого ресурса, и для случая запроса *.aspx (расширение файлов страниц ASP.NET) загружает соответствующее ему (запросу) расширение Internet Server Aplication Programming Interface (ISAPI). Для страниц aspx это расширение isapi_aspnet.dll. IIS также осуществляет идентификацию и авторизацию пользователя от которого поступил запрос. В свою очередь расширение isapi_aspnet.dll загружает фабрику обработчиков ASP.NET. Далее, фабрика обработчиков создает объектную модель запрашиваемой страницы и обрабатывает действия пользователя.

    * 3 — в ходе генерации ответа приложению ASP.NET может потребоваться обращение к БД, в этом случае используя библиотеки классов провайдера данных ADO.NET 2.0, выполняющая среда обращается к серверу БД;

    * 4 — провайдер данных ADO.NET 2.0 передает запрос на операцию с БД серверу MySQL;

    * 5 — сервер MySQL осуществляет обработку запроса, выполняя соответствующие операции с БД ;

    * 6 — провайдер данных ADO.NET 2.0 передает результаты запроса объекту страницы;

    * 7 — объект страницы с учетом полученных данных осуществляет рендеринг графического интерфейса страницы и направляет результаты в выходной поток;

    * 8 — сервер IIS отправляет содержимое сгенерированной страницы клиентскому браузеру.

 

Использование

 

    * SAP R/3

62

Выделяются четыре подхода, реализованные в следующих технологиях:

 

·        файловый сервер (File Server — FS);

 

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

 

·        сервер баз данных (Data Base Server — DBS);

 

·        сервер приложений (Application Server — AS).

 

 

 

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

 

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

 

К недостаткам данной технологии относится:

 

·        низкий сетевой трафик (передача множества файлов, необходимых приложению),

 

·        небольшое количество операций манипуляции с данными (файлами),

 

·        отсутствие адекватных средств безопасности доступа к данным (защита только на уровне файловой системы) и т.д.

 

 

 

Доступ к удаленным данным (RDA) существенно отличается от FS методом доступа к информационным ресурсам. В данной технологии программы компонента представления и прикладного компонента совмещены и выполняются на компьютере-клиенте. Доступ к информационным ресурсам обеспечивается операторами специального языка (например, языка запросов SQL, если речь идет о базах данных) или вызовами функций специальной библиотеки (если имеется специальный интерфейс прикладного программирования — API).

 

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

 

Достоинства RDA

 

·        унификация интерфейса «клиент — сервер» в виде языка запросов;

 

·        широкий выбор средств разработки приложений.

 

Недостатки

 

·        Существенная загрузка сети при взаимодействии клиента и сервера посредством запросов;

 

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

 

 

 

Сервер баз данных (DBS) — технология реализована в некоторых реляционных (табличных) СУБД (Informix, Ingres, Sybase, Oracle).

 

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

 

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

 

Достоинства технологии:

 

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

 

·            снижение трафика (вместо SQL-запросов по сети направляются вызовы хранимых процедур);

 

·            возможность разделения процедуры между несколькими приложениями;

 

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

 

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

 

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

 

 

 

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

 

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

 

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

 

Технологии RDA и DBS опираются на двухзвенную схему разделения функций:

 

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

 

·        в DBS ответственность за их выполнение берет на себя ядро СУБД (прикладной компонент интегрируется в компонент доступа к информационным ресурсам).

 

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

 

 

 

Преимущества технологии «клиент-сервер»

 

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

 

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

 

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

 

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

63

Объектно-ориентированные СУБД

     

 

Направление объектно-ориентированных баз данных (ООБД) возникло сравнительно давно. Публикации появлялись уже в середине 1980-х. Однако наиболее активно это направление развивается в последние годы. С каждым годом увеличивается число публикаций и реализованных коммерческих и экспериментальных систем.

 

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

 

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

 

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

 

Среди языков и систем программирования наибольшее первичное влияние на ООБД оказал Smalltalk. Этот язык сам по себе не является полностью пионерским, хотя в нем была введена новая терминология, являющаяся теперь наиболее распространенной в объектно-ориентированном программировании. На самом деле, Smalltalk основан на ряде ранее выдвинутых концепций.

 

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

 

Тематика ООБД очень широка, объем этой лекции не позволяет рассмотреть все вопросы. Тем не менее, мы постараемся в систематической манере проанализировать наиболее важные аспекты ООБД.