Базы данных в архитектуре клиент/сервер
Словарь данных
Фундаментальное различие между RDBMS и другими БД и файловыми системами заключается в способе доступа к данным. RDBMS позволяет обращаться к физическим данным в более абстрактной, логической форме, обеспечивая легкость и гибкость при разработке кода приложения. Программы, использующие RDBMS, обращаются к данным через "машину" базы данных без непосредственной зависимости от фактического источника данных, изолируя приложение от деталей "нижележащих" физических структур данных. Вместо обращения к номеру заказчика как к байтам с 1 по 10 в записи о заказчике приложение просто обращается к атрибуту Customer Number. RDBMS сама заботится о том, где поле хранится в базе данных. Рассмотрим объем модификаций программного обеспечения, который потребуется для изменения структуры записи в приложении, использующем файловую систему. Например, если поле номера заказчика перемещается из байтов с 1 по 10 в байты с 11 по 20, чтобы разместить дополнительное поле, во всех программах, использующих атрибут номера заказчика, потребуются модификации. Однако при использовании RDBMS приложение продолжало бы обращаться к атрибуту по имена, а не по позиции в записи, что исключает потребность в каких-либо изменениях.
Такая независимость данных возможна благодаря словарю данных RDBMS, который хранит мета-данные (данные о данных) для всех объектов, расположенных в базе данных. Словарь данных Огас1е — множество таблиц и объектов базы данных, которое хранится в специальной области базы данных и ведется исключительно ядром Огас1е. Запросы чтения или обновления базы данных обрабатываются ядром Oracle с использованием информации из словаря данных. Информация в словаре данных предназначена для подтверждения существования объектов, обеспечения доступа к ним и описания фактического физического расположения в памяти.
RDBMS не только обеспечивает размещение данных, но также определяет оптимальный путь доступа для хранения или выборки данных. Огас1е использует сложные алгоритмы, которые позволяют выбирать информацию с наибольшей производительностью, исходя из критерия скорейшего получения первых строк результата или критерия минимального времени выполнения запроса в целом.
Непроцедурный доступ к данным (SQL)
Характерной чертой RDBMS является способность обработки данных как множества; файловые системы и СУБД с другими моделями обрабатывают данные способом "запись-за-записью". С RDBMS можно общаться, используя структурированный язык запросов (Structured Query Language — SQL; произносится "сиквел". Sequel — по английски "результат"). SQL — непроцедурный язык, который разработан специально для операций доступа к нормализованным структурам реляционных баз данных. Основное различие между SQL и традиционными языками программирования состоит в том, что операторы SQL указывают, какие операции с данными должны выполниться, а не способ их выполнения. Уменьшая объем программирования, мы уменьшаем общие издержки разработки и сопровождения модулей приложения, отвечающих за доступ к данным.
Репутация Oracle Corporation как компании-разработчика СУБД основана на полнофункциональном высокопроизводительном сервере RDBMS. Начав с СУБД, краеугольного камня своей производственной деятельности, Oracle Corp. превратилась в нечто большее, чем просто компания, разрабатывающая СУБД. Теперь сервер RDBMS дополняется разнообразными хорошо интегрированными программными продуктами, которые созданы специально для организации распределенной обработки данных и разработки приложений клиент/сервер. По мере того как сервер базы данных Oracle развивается, ориентируясь на поддержку крупномасштабных ("уровня предприятия") систем обработки транзакций и поддержки принятия решений, корпорация Oracle также разрабатывает другие программные продукты, что позволяет предлагать завершенные решения для развертывания приложений клиент/сервер. В этой главе содержатся краткие сведения об особенностях СУБД в среде клиент/ сервер и об архитектуре программных продуктов Oracle, которая поддерживает их реализацию.
Глава 4. Краткий обзор обработки данных в среде клиент/сервер
Основная идея среды клиент/сервер состоит в распределении выполняемой задачи между несколькими процессорами в сети. Каждый процессор предназначен для определенного набора подзадач, с которыми он справляется наилучшим образом, а конечный результат выражается в увеличении производительности и эффективности системы в целом. Распределение выполнения задач между процессорами осуществляется с использованием протокола сервисных запросов; один процессор, клиент, запрашивает обслуживание у другого процессора, сервера. Чаще всего при построении систем клиент/сервер часть приложения, отвечающая за пользовательский интерфейс, отделяется от части, отвечающей за доступ к данным.
Клиент в типичной конфигурации клиент/сервер — это автоматизированное рабочее место, использующее графический интерфейс (Graphical User Interface - GUI), обычно Microsoft Windows, Macintosh или Motif. Сервером является сервер базы данных, часто управляемый операционной системой UNIX, NetWare, Windows NT или VMS.
Архитектура клиент/сервер также может быть построена в конфигурации сервер-сервер. В этой компоновке один сервер играет роль клиента, который запрашивает данные (или вообще "сервис") у другого сервера. Несколько серверов базы данных могут образовывать единую логическую базу данных, обеспечивая прозрачный доступ к данным, которые распределены по сети.
Цель проектирования эффективного приложения клиент/сервер — равномерно распределить задачи между процессорами при оптимальном использовании имеющихся ресурсов. Учитывая возрастающую сложность и соответственно требуемую вычислительную мощность для поддержки графического интерфейса пользователя (GUI), а также возрастающие требования к производительности серверов баз данных и сетей, поиск соответствующего распределения задач становится проблемой. Разработка и поддержка системы клиент/сервер более трудна по сравнению с традиционной централизованной системой по следующим причинам:
- Компоненты системы клиент/сервер распределяются по процессорам различных типов. Имеется также множество компонентов программного обеспечения, которые выполняют функции клиентов, сетей и серверов. Эти функции должны быть распределены по нескольким уровням инфраструктуры и соответствующим образом сконфигурированы, чтобы обеспечивалась правильная совместная работа.
- Приложения, работающие с GUI, значительно сложнее своих предшественников, работающих с алфавитно-цифровыми терминалами. GUI способен представить пользователю намного больше информации и предлагает много дополнительных навигационных элементов интерфейса.
- Анализ проблем производительности и ошибок затруднен вследствие большего количества компонентов и уровней в системе.
Технологии клиент/сервер изменили облик и архитектуру прикладных систем: существенным изменениям подверглись поддерживающее архитектуру аппаратное, обеспечение, а также сами подходы к проектированию логики приложения.
До появления технологии клиент/сервер большинство приложений Oracle функционировало на одной ЭВМ. Обычно приложение, использующее алфавитно-цифровой, интерфейс, обращалось к экземпляру базы данных, работающему на той же машине, и конкурировало с сервером RDBMS за тот же центральный процессор и ресурсы памяти. Одна система отвечала не только за всю обработку базы данных, но также и за выполнение логики приложения. Кроме того, та же система обрабатывала весь обмен с каждым терминалом; все нажатия клавиш и элементы отображения обслуживались тем же процессором, который обрабатывал запросы к базе данных и логику приложения.
Системы клиент/сервер значительно изменили эту архитектуру, переместив все интерфейсные функции и часть обработки приложения с основного процессора системы на процессор клиента.
Наряду с качественным улучшением аппаратных средств, расширение возможностей серверов RDBMS также повлияло на архитектуру приложений. До выпуска 7-й версии RDBMS Oracle обладала не столь изощренными возможностями поддержки логики обработки, необходимой для обеспечения целостности данных. Например, контроль соответствия первичного и внешнего ключей выполнялся приложением. Поэтому база данных чрезмерно зависела от приложения при поддержании целостности, а код приложения становился громоздким и сложным. Следующий рисунок иллюстрирует различия между традиционными централизованными приложениями и приложениями клиент/сервер. Приложения базы данных клиент/сервер могут использовать преимущества Огас1е Server для реализации некоторых функций логики приложения.
До Oracle7 базы данных выполняли на уровне ядра только контроль типа данных, однако с приходом Oracle7 значительная часть логики приложения может выполняться ядром базы данных. Огас1е предоставляет такие возможности, как хранимые процедуры, поддержка ограничений целостности, определяемые пользователем функции и триггеры базы данных. Все это позволяет приложению хранить большое количество бизнес-правил (или семантику модели данных) на уровне базы данных. В результате приложение освобождается для выполнения более тонких задач обработки, таких как управление интерфейсом GUI и взаимодействие с другими приложениями и инструментальными средствами, поддерживающими модель "клиент-сервер". Как показано на рисунке выше, такая СУБД намного более устойчива; она уже не использует код приложения для, поддержания целостности.