Файл-серверные приложения
Компоненты информационной системы, выполняемые на разных рабочих станциях (PC), взаимодействуют только за счет наличия общего хранилища файлов, которое хранится на файл-сервере. В классическом случае в каждой PC дублируются не только прикладные программы, но и средства управления базами данных. Файл-сервер представляет собой разделяемое всеми PC комплекса расширение дисковой памяти (рисунок 2.1).
Основным достоинством является простота организации.
Рис. 2.1. Классическое представление информационной системы в архитектуре "файл-сервер"
С другой стороны, во-первых, информационной системе предстоит работать с базой данных. Следовательно, эта база данных должна быть качественно спроектирована.
Во-вторых, необходимыми требованиями к базе данных информационной системы являются поддержание ее целостного состояния и гарантированная надежность хранения информации.
Под истинным сервером баз данных будем понимать программное обеспечение, привязанное к соответствующей базе (базам) данных, существующее, в общем, независимо от существования пользовательских (клиентских) процессов и выполняемое, в общем (хотя и не обязательно) на выделенной аппаратуре.
Серверы баз данных существенно сложнее по организации, чем СУБД, на зато обеспечивают более эффективное управление базами данных. В дальнейшем, при употреблении термина "сервер баз данных" мы будем иметь в виду истинные серверы баз данных.
В целом, в файл-серверной архитектуре имеем "толстого" клиента и очень "тонкий" сервер в том смысле, что почти вся работа выполняется на стороне клиента, а от сервера требуется только достаточная емкость дисковой памяти.
|
Клиент-серверные приложения
Под клиент-серверным приложением будем понимать информационную систему, основанную на использовании серверов баз данных. Общее представление информационной системы в архитектуре "клиент-сервер" показано на рисунке 2.3.
При этом:
· На стороне клиента выполняется код приложения, в который обязательно входят компоненты, поддерживающие интерфейс с конечным пользователем, производящие отчеты и выполняющие другие, специфичные для приложения функции (пока нас не будет занимать, как строится код приложения).
· Клиентская часть приложения взаимодействует с частью программного обеспечения управления базами данных.
Рис. 2.3. Общее представление информационной системы в архитектуре "клиент-сервер"
Процессы, происходящие на стороне сервера баз данных следующие:
(Отметим, что в продуктах практически всех компаний сервер получает от клиента текст оператора на языке SQL).
· Сервер производит компиляцию полученного оператора.
· Если компиляция завершилась успешно происходит выполнение оператора.
2. Поддержка языков БД обеспечивает поддержку языка обработки данных и языка манипулирования данными, а также другие инструкции поддержки данных.
Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).
В типовой структуре реляционной СУБД логически можно выделить
· ядро СУБД;
· компилятор языка БД;
· подсистему поддержки времени выполнения;
|
· набор утилит.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Ядро обладает собственным интерфейсом, недоступным пользователям, и является основной резидентной частью СУБД. При использовании архитектуры «клиент-сервер» ядро является основной составляющей серверной части системы.
Основной функцией компилятора языка БД является преобразование операторов языка БД в выполняемую программу.
Так как языки реляционных систем являются непроцедурными, то есть в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия, компилятор должен решить, каким образом выполнять оператор прежде, чем произвести программу. Для этого применяются достаточно сложные методы оптимизации операторов, что бы выполняемая программа была представлена в выполняемом внутреннем машинно-независимом коде.
В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой интерпретатор этого внутреннего языка.
В отдельные утилиты обычно выделяют такие процедуры, которые слишком сложно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности и другие.
|
Утилиты программируются с использованием интерфейса ядра СУБД.
Производительность СУБД оценивается:
· временем выполнения запросов;
· скоростью поиска информации в неиндексированных полях;
· временем выполнения операций импортирования базы данных из других форматов;
· скоростью создания индексов и выполнения операций обновление, добавления и, удаление данных;
· максимальным числом параллельных обращений к данным в многопользовательском режиме;
· временем генерации отчета.
Представления
Представление (VIEW)- объект данных который не содержит никаких данных его владельца. Это- тип таблицы, чье содержание выбирается из других таблиц с помощью выполнения запроса. Поскольку значения в этих таблицах меняются, то автоматически, их значения могут быть показаны представлением.
Типы таблиц, с которыми имели дело до сих пор, будем называть - базовыми таблицами. Это- таблицы, которые содержат данные. Представления работают в запросах и операторах DML точно также как и основные таблицы. Представление- это фактически запрос, который выполняется всякий раз, когда представление становится активным.
Виды представлений
Представления могут быть трех видов:
- горизонтальные;
- вертикальные;
- смешанные.
Горизонтальные – это представления, которые ограничивают доступ к некоторым столбцам исходной таблицы и разрешают просматривать все строки.
SELECT city, snum
FROM Salespeople;
Вертикальные – это представления, которые ограничивают доступ к некоторым строкам исходной таблицы и разрешают просмотр всех столбцов.
SELECT *
FROM Salespeople
WHERE city = "London";
Смешанное – это представление, которое ограничивает доступ, как к некоторым столбцам исходной таблицы, так и к некоторым строкам.
SELECT city, snum
FROM Salespeople
WHERE city = "London";
4. Определение модифицируемости представления
Если команды модификации могут выполняться в представлении, представление будет модифицируемым; в противном случае оно предназначено только для чтения при запросе. Выражение "модифицируемое представление" (updating a view), означает возможность выполнения в представлении любой из трех команд модификации DML (Вставить, Изменить и Удалить), которые могут изменять значения.
Использование этого принципа на практике, однако, затруднено. Кроме того, некоторые представления, которые являются модифицируемыми в теории, на самом деле не являются модифицируемыми в SQL. Критерии, по которые определяют, является ли представление модифицируемым или нет, в SQL, следующие:
· Оно должно выводиться в одну и только в одну базовую таблицу.
· Оно должно содержать первичный ключ этой таблицы (это технически не предписывается стандартом ANSI, но было бы неплохо придерживаться этого).
· Оно не должно иметь никаких полей, которые бы являлись агрегатными функциями.
· Оно не должно содержать DISTINCT в своем определении.
· Оно не должно использовать GROUP BY или HAVING в своем определении.
· Оно не должно использовать подзапросы (это - ANSI ограничение которое не предписано для некоторых реализаций)
· Оно может быть использовано в другом представлении, но это представление должно также быть модифицируемыми.
· Оно не должно использовать константы, строки, или выражения значений (например: comm * 100) среди выбранных полей вывода.
· Оно на должно содержать операторов Объединения (UNION) и Объединения всего (UNIOM ALL).
· Для INSERT, оно должно содержать любые поля основной таблицы, которые имеют ограничение NOT NULL, если другое ограничение по умолчанию, не определено.
· Упорядочение по (ORDER BY) никогда не используется в определении представлений.