- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2.2 Архитектура «файл-сервер»
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
1.2.3. Архитектура «клиент-сервер»
Применительно к информационным системам архитектура «клиент-сервер» интересна и актуальна главным образом потому, что обеспечивает простое и относительно дешевое решение проблемы коллективного (многопользовательского) доступа к базам данных в локальной или глобальной сети.
Информационная система архитектуры «клиент-сервер» разбивается на две части, которые могут выполняться в разных узлах сети, - клиентскую и серверную части. На серверную часть возлагаются функции хранения и значительной части обработки данных, на клиентскую – функции взаимодействия с пользователем и, частично, обработки данных, полученных с сервера (рис. 1.6).
Рис. 1.6 - Архитектура «клиент-сервер»
Следует заметить, что обе части системы (серверная и клиентская) могут располагаться и на одном компьютере, такой вариант можно применять в процессе отладки клиент-серверной системы.
Для того, чтобы прикладная программа, выполняющаяся на клиентском компьютере, могла запросить услугу у сервера, требуется некоторый интерфейсный программный слой, поддерживающий взаимодействие сервера с клиентами. Прикладное ПО или конечный пользователь взаимодействуют с клиентской частью системы. Клиентская часть системы при потребности обращается по сети к серверной части. Интерфейс серверной части определен и фиксирован.
В современных информационных системах таким интерфейсом, как правило, является язык SQL, т.е. сервер принимает от клиентской части SQL-запрос и выполняет необходимые операции в базе данных, после чего возвращает ответ клиенту. По сути дела, язык SQL представляет собой стандарт интерфейса СУБД в открытых системах (концепция открытых систем затрагивалась в предыдущем разделе).
В системе «клиент-сервер» возможно создание новых клиентских частей уже существующей системы, причем максимальное количество одновременно работающих с общей БД клиентов несравнимо больше, чем в файл-серверной архитектуре, т.е. система клиент-сервер является более масштабируемой. Это объясняется тем, что сетевой трафик в клиент-серверной системе невысок (от клиента передаются только тексты запросов, от сервера – уже отобранные данные, а не вся база данных, как в архитектуре файл-сервер).
Термин «сервер баз данных» обычно используют для обозначения всей СУБД, основанной на архитектуре "клиент-сервер", включая серверную и клиентскую части. Собирательное название SQL-сервер относится ко всем серверам баз данных, основанных на использовании языка SQL.
В настоящее время имеется несколько широко распространенных коммерческих SQL-серверов – Oracle, DB-2, MS SQL Server, Sybase, Informix, Interbase и свободно распространяемые серверы с открытым исходным кодом PostGres (PostgreeSQL), MySQL, FireBird (свободно распространяемый вариант сервера Interbase). Приведенный список далеко не полон.
SQL-cерверы обладают преимуществами и недостатками. Очевидное преимущество - стандартность интерфейса. В пределе, хотя на практике это пока не совсем так, клиентские части могли бы работать с любым SQL-сервером вне зависимости от того, кто его произвел. Иными словами, прикладное программное обеспечение на стороне клиента легко настраивается на взаимодействие с любым новым SQL-сервером.
Недостаток – большая нагрузка на сервер, который должен отрабатывать запросы всех клиентов, и малая нагрузка на клиентскую часть. По мере роста количества одновременно работающих пользователей сервер часто становится узким местом всей системы и возникает необходимость его разгрузки. Для этого существуют два пути.
Если клиентские компьютеры обладают достаточной мощностью, то можно возложить на них больше функций обработки данных, разгрузив сервер.
В случае применения маломощных клиентских компьютеров (а это более типичная ситуация), применяют многозвенную (многоуровневую) архитектуру «клиент-сервер», выделив промежуточные дополнительные слои программного обеспечения между клиентом и сервером.
