- •Понятие баз данных. Концепция бд. Преимущества банковской организации данных.
- •Системы управления базами данных. Функции субд.
- •3. Категории пользователей бд. Администратор бд.
- •4. Требования к БнД.
- •5. Компоненты БнД.
- •7. Классификация субд и бд.
- •8. Модели представления данных в субд.
- •Постреляционная, многомерная и объектно-ориентированная модели представления данных
- •11. Oltp и olap системы. Хранилище данных и olap. Назначение. Основные характеристики
- •Olap и oltp. Характеристики и основные отличия
- •Правила Кодда для olap систем
- •Основные элементы и операции olap
- •Типы olap. Преимущества и недостатки
- •Моделирование многомерных кубов на реляционной модели данных
- •Уровни моделей бд.
- •Этапы проектирования бд. Взаимосвязь этапов проектирования.
- •19. Реляционная модель данных. Основные понятия и определения. Базовые понятия реляционных баз данных
- •1.1. Тип данных
- •1.2. Домен
- •1.3. Схема отношения, схема базы данных
- •1.4. Кортеж, отношение
- •23. Объекты реляционных баз данных: таблицы, индексы, представления, хранимые процедуры, триггеры и др.
- •25. Понятие функциональной зависимости. Нормализация таблиц. Метод нормальных форм. 1нф, 2нф, 3нф. Основной пример
- •1Нф (Первая Нормальная Форма)
- •Аномалии обновления
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •Функциональные зависимости
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •2Нф (Вторая Нормальная Форма)
- •Анализ декомпозированных отношений
- •Оставшиеся аномалии вставки (insert)
- •Оставшиеся аномалии обновления (update)
- •Оставшиеся аномалии удаления (delete)
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
- •27. Структурированный язык запросов sql. Общая характеристика. Методы использования.
- •28. Состав языка sql. Язык sql
- •Состав языка sql
- •Язык sql
- •4.6.1.Типы данных sql.
- •Язык определения данных (ddl). Ddl: Операторы создания схемы базы данных.
- •Операторы базы данных
- •Создание и удаление таблиц
- •4.6.3.Ddl: Операторы создания индексов.
- •30. Язык манипулирования данными (dml). Dml: Команды модификации данных.
- •Добавить новую запись в таблицу:
- •Модификация записей:
- •Удаление записей
- •4.6.6.Dml: Выборка данных.
- •4.6.7.Dml: Выборка из нескольких таблиц.
- •4.6.8.Dml: Вычисления внутри sеlесt.
- •4.6.9.Dml: Групировка данных.
- •4.6.10.Dml: Сортировка данных.
- •4.6.11.Dml: Операция объединения.
- •4.6.12.Использование представлений.
- •4.6.13.Другие возможности sql.
- •31. Язык управления данными (dcl).
- •4.6.4.Dсl: Операторы управления правами доступа.
- •33. Субд в архитектуре клиент-сервер. Двухзвенная и трехзвенная архитектура. Технология "клиент – сервер"
- •34. Защита информации в бд. Методы и средства защиты. Защита информации в базах данных
31. Язык управления данными (dcl).
4.6.4.Dсl: Операторы управления правами доступа.
По соображениям безопасности не каждому пользователю прикладной системы может быть разрешено получать информацию из какой-либо таблицы, а тем более изменять в ней данные. Для определения прав пользователей относительно объектов базы данных (таблицы, представления, индексы) в SQL определена пара команд GRАNT и RЕVOKЕ. Синтаксис операции передачи прав на таблицу:
GRАNT <тип_права_на_таблицу>
ON <имя_таблицы> [<список_столбцов>]
TO <имя_пользователя>
Права пользователя на уровне таблицы определяются следующими ключевыми словами (как мы увидим чуть позже эти ключевые слова совпадают с командами выборки и изменения данных):
SЕLЕСT - получение информации из таблицы
UPDАTЕ - изменение информации в таблице
INSЕRT - добавление записей в таблицу
DЕLЕTЕ - удаление записей из таблицы
INDЕX - индексирование таблицы
АLTЕR - изменение схемы определения таблицы
АLL - все права
В поле <тип_права_на_таблицу> может быть указано либо ключевое слово АLL или любая комбинация других ключевых слов. Например, предоставим все права на таблицу publishers пользователю andy:
GRАNT АLL ON publishers TO andy;
Пользователю peter предоставим права на извлечение и дбавление записей на эту же таблицу:
GRАNT SЕLЕСT INSЕRT ON publishers TO peter;
В том случае, когда одинаковые права надо предоставить сразу всем пользователям, вместо выполнения команды GRАNT для каждого из них, можно вместо имени пользователя указать ключевое слово PUBLIС:
GRАNT SЕLЕСT ON publishers TO PUBLIС;
Отмена прав осуществляется командой RЕVOKЕ:
RЕVOKЕ <тип_права_на_таблицу>
ON <имя_таблицы> [<список_столбцов>]
FROM <имя_пользователя>
Все ключевые слова данной команды эквивалентны оператору GRАNT.
Большинство систем поддерживают также команду GRАNT для назначения привилегий на базу данных в целом. В этом случае формат команды:
GRАNT <тип_права_на_базу_данных>
ON <имя_базы данных>
TO <имя_пользователя>
К сожалению, способы задания прав на базу данных различны для разных СУБД, и точную их формулировку нужно уточнять в документации. В качестве примера приведем список прав на базу данных, поддерживаемых СУБД Informix:
СONNЕСT - права на доступ к данным и их модификацию, если это разрешено на уровне таблицы;
RЕSOURСЕ - права на управление ресурсами. Все перечисленное выше плюс права на создание новых объектов (таблиц, индексов и т.д.) и удаление и изменение тех объектов, которыми данный пользователь владеет;
DBА - права на администрирование. Все права на управление ресурсами плюс права на удаление базы данных, удаление любых объектов, назначение и отмена прав других пользователей.
Отмена прав на базу данных осуществляется командой:
RЕVOKЕ <тип_права_на_базу_данных> FROM <имя_пользователя>
33. Субд в архитектуре клиент-сервер. Двухзвенная и трехзвенная архитектура. Технология "клиент – сервер"
Использование технологии " клиент – сервер " предполагает наличие некоторого количества компьютеров, объединенных в сеть, один из которых выполняет особые управляющие функции (является сервером сети).
Так, архитектура " клиент – сервер " разделяет функции приложения пользователя (называемого клиентом) и сервера. Приложение-клиент формирует запрос к серверу, на котором расположена БД, на структурном языке запросов SQL (Structured Query Language), являющемся промышленным стандартом в мире реляционных БД. Удаленный сервер принимает запрос и переадресует его SQL-серверу БД. SQL-сервер – специальная программа, управляющая удаленной базой данных. SQL-сервер обеспечивает интерпретацию запроса, его выполнение в базе данных, формирование результата выполнения запроса и выдачу его приложению-клиенту. При этом ресурсы клиентского компьютера не участвуют в физическом выполнении запроса; клиентский компьютер лишь отсылает запрос к серверной БД и получает результат, после чего интерпретирует его необходимым образом и представляет пользователю. Так как клиентскому приложению посылается результат выполнения запроса, по сети "путешествуют" только те данные, которые необходимы клиенту. В итоге снижается нагрузка на сеть. Поскольку выполнение запроса происходит там же, где хранятся данные (на сервере), нет необходимости в пересылке больших пакетов данных. Кроме того, SQL-сервер, если это возможно, оптимизирует полученный запрос таким образом, чтобы он был выполнен в минимальное время с наименьшими накладными расходами [[6], [7]]. Архитектура системы представлена на рис. 3.3.
Все это повышает быстродействие системы и снижает время ожидания результата запроса. При выполнении запросов сервером существенно повышается степень безопасности данных, поскольку правила целостности данных определяются в базе данных на сервере и являются едиными для всех приложений, использующих эту БД. Таким образом, исключается возможность определения противоречивых правил поддержания целостности. Мощный аппарат транзакций, поддерживаемый SQL-серверами, позволяет исключить одновременное изменение одних и тех же данных различными пользователями и предоставляет возможность откатов к первоначальным значениям при внесении в БД изменений, закончившихся аварийно [[6], [7]].
Рис. 3.3. Архитектура "клиент – сервер"
Итак, в результате работа построена следующим образом:
База данных в виде набора файлов находится на жестком диске специально выделенного компьютера (сервера сети).
СУБД располагается также на сервере сети.
Существует локальная сеть, состоящая из клиентских компьютеров, на каждом из которых установлено клиентское приложение для работы с БД.
На каждом из клиентских компьютеров пользователи имеют возможность запустить приложение. Используя предоставляемый приложением пользовательский интерфейс, он инициирует обращение к СУБД, расположенной на сервере, на выборку/обновление информации. Для общения используется специальный язык запросов SQL, т.е. по сети от клиента к серверу передается лишь текст запроса.
СУБД инкапсулирует внутри себя все сведения о физической структуре БД, расположенной на сервере.
СУБД инициирует обращения к данным, находящимся на сервере, в результате которых на сервере осуществляется вся обработка данных и лишь результат выполнения запроса копируется на клиентский компьютер. Таким образом СУБД возвращает результат в приложение.
Приложение, используя пользовательский интерфейс, отображает результат выполнения запросов.
Рассмотрим, как выглядит разграничение функций между сервером и клиентом.
Функции приложения-клиента:
Посылка запросов серверу.
Интерпретация результатов запросов, полученных от сервера.
Представление результатов пользователю в некоторой форме (интерфейс пользователя).
Функции серверной части:
Прием запросов от приложений-клиентов.
Интерпретация запросов.
Оптимизация и выполнение запросов к БД.
Отправка результатов приложению-клиенту.
Обеспечение системы безопасности и разграничение доступа.
Управление целостностью БД.
Реализация стабильности многопользовательского режима работы.
В архитектуре " клиент – сервер " работают так называемые "промышленные" СУБД. Промышленными они называются из-за того, что именно СУБД этого класса могут обеспечить работу информационных систем масштаба среднего и крупного предприятия, организации, банка. К разряду промышленных СУБД принадлежат MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase и ряд других [[6]].
Как правило, SQL-сервер обслуживается отдельным сотрудником или группой сотрудников (администраторы SQL-сервера). Они управляют физическими характеристиками баз данных, производят оптимизацию, настройку и переопределение различных компонентов БД, создают новые БД, изменяют существующие и т.д., а также выдают привилегии (разрешения на доступ определенного уровня к конкретным БД, SQL-серверу) различным пользователям [[6]].
Рассмотрим основные достоинства данной архитектуры по сравнению с архитектурой "файл-сервер":
Существенно уменьшается сетевой трафик.
Уменьшается сложность клиентских приложений (большая часть нагрузки ложится на серверную часть), а, следовательно, снижаются требования к аппаратным мощностям клиентских компьютеров.
Наличие специального программного средства – SQL-сервера – приводит к тому, что существенная часть проектных и программистских задач становится уже решенной.
Существенно повышается целостность и безопасность БД.
К числу недостатков можно отнести более высокие финансовые затраты на аппаратное и программное обеспечение, а также то, что большое количество клиентских компьютеров, расположенных в разных местах, вызывает определенные трудности со своевременным обновлением клиентских приложений на всех компьютерах-клиентах. Тем не менее, архитектура " клиент – сервер " хорошо зарекомендовала себя на практике, в настоящий момент существует и функционирует большое количество БД, построенных в соответствии с данной архитектурой.
Трехзвенная (многозвенная) архитектура "клиент – сервер". Трехзвенная (в некоторых случаях многозвенная ) архитектура (N-tier или multi-tier). представляет собой дальнейшее совершенствование технологии " клиент – сервер ". Рассмотрев архитектуру " клиент – сервер ", можно заключить, что она является 2-звенной: первое звено – клиентское приложение, второе звено – сервер БД + сама БД. В трехзвенной архитектуре вся бизнес-логика (деловая логика), ранее входившая в клиентские приложения, выделяется в отдельное звено, называемое сервером приложений. При этом клиентским приложениям остается лишь пользовательский интерфейс. Так, в качестве клиентского приложения в описанном выше примере выступает Web-браузер. Что улучшается при использовании трехзвенной архитектуры? Теперь при изменении бизнес-логики более нет необходимости изменять клиентские приложения и обновлять их у всех пользователей. Кроме того, максимально снижаются требования к аппаратуре пользователей. Итак, в результате работа построена следующим образом:
|
|
|
|
|
