Основы проектирования реляционных баз данных

В этой лекции мы будем


В этой лекции мы будем заниматься формированием навыков решения следующей профессиональной задачи проектирования баз данных - задачи разработки серверного кода.
В многопользовательских системах пользователи совместно используют вычислительные ресурсы, в частности ресурсы дисковой памяти и оперативной памяти процессора. Вычислительные ресурсы могут быть сконцентрированы в одном месте (централизованные вычисления) или быть рассредоточенными в различных узлах, объединенных в компьютерную сеть (распределенные вычисления). СУБД в любом случае призвана координировать и осуществлять доступ пользователей к базам данных и их объектам.
Большинство современных СУБД поддерживают концепцию клиент- серверной технологии для распределенных вычислений. Это означает, что существуют концентраторы вычислений (называемые серверами), на которых выполняется наибольший объем вычислений с данными (серверы баз данных), и машины пользователей (клиенты), на которых выполняются приложения пользователей.
Приложения формируют запросы в форме команд SQL к базам данных, отправляют их серверам баз данных, получают запрашиваемые данные и обрабатывают их. Такие действия приложения порождают сетевой трафик, который в некоторых случаях может оказаться значительным и снизить производительность обработки запросов.
В клиент-серверной вычислительной среде приложение может взаимодействовать с сервером баз данных по другой схеме, когда приложение отправляет запрос, этот запрос обрабатывается на сервере, а приложению возвращается готовый результат. Перенос определенной части обработки бизнес-логики из клиентской части приложения на серверную может значительно сократить межсетевой обмен и тем самым повысить производительность информационной системы с базой данных.
Работа приложения по последней схеме основывается на использовании так называемого серверного кода (server-side code) - любого кода, выполняемого компьютером, на котором установлена СУБД. Ядро СУБД выполняет этот код в базе данных и возвращает приложению только результат.
Например, это может быть несколько колонок строки или вычисленное значение.
Использование серверного кода может значительно сократить объем сетевого трафика, и тем самым увеличить производительность базы данных в целом. Однако СУБД должна иметь встроенные средства для распознавания и обработки такого кода. Многие фирмы-производители промышленных СУБД, в том числе и Oracle, предлагают процедурные расширения SQL, с помощью которых можно выполнять построчную обработку данных, использовать циклы, сложные вычисления и операции управления данными.
PL/SQL является таким расширением SQL в СУБД Oracle. Он позволяет создавать серверный код в виде объектов реляционной базы данных, таких, как хранимые процедуры, функции, пакеты и триггеры. Проектировщик реляционной базы данных, который использует для создания базы данных СУБД Oracle, имеет возможность рассмотреть создание таких объектов с целью сокращения сетевого трафика или принять решение о переносе определенного объема обработки на сервер, особенно в тех случаях, когда эта обработка выполняется очень интенсивно. Например, несколько строк разных таблиц проверяются перед вставкой новой строки.
Таким образом, разработка серверного кода сводится к решению следующих подзадач:
  • принятие решения и создание хранимых процедур;
  • принятие решения и создание функций;
  • принятие решения и создание пакетов;
  • принятие решения и создание триггеров.


Содержание раздела