ПБД (9) - Лекция №10 - Работа с СУБД
Этот конспект ещё не дописан. Здесь не хватает: - примеров для CLR.NET |
Содержание
Работа с СУБД
Виды взаимодействия с СУБД-сервером
Работа на стороне СУБД-сервера
Несколько видов:
- система правил, триггеры, ограничения (DML, DDL);
- SQL/PSM;
- подключение внешних модулей (например, CLR.NET);
- внешние вызовы, (
call-out
):- вызов внешней программы:
- в синхронном режиме - управление возвращается в вызвавшую программу;
- в асинхронном режиме - после вызова вызвавщая продолжает работать, не ждёт;
- из библиотеки.
- вызов внешних объектов (COM, ActiveX):
- создаётся объект-посредник;
- обращение через него к функциям и методам нужного;
- вызов внешней программы:
- обращение к внешним БД:
- через связные серверы;
- через проекции.
Работа на стороне клиента
Тоже несколько вариантов:
- CLI (ODBC/JDBC);
- встраиваемый SQL;
- обращение к объектному представлению (
call-in
); - обращение к управляемому объекту (Server Managment Objects).
Варианты клиент-серверных приложений
Трёхуровневая архитектура, "тонкий клиент":
- СУБД;
- прослойка в виде сервера приложений;
- клиент.
Импорт и экспорт данных
Разовая выгрузка из СУБД либо наоборот - загрузка данных в СУБД. Используется, например, XML.
Репликации
Синхронное копирование одной БД на несколько, чтобы между всеми была однозначность.
Приципы взаимодействия клиента и сервера СУБД
Иерархия СУБД:
- среда - хранение данных и выполнение процессов (сервера и клиента);
- кластер;
- каталог - коллекция схем;
- схема - коллекция объектов.
Для работы с БД устанавливается соединение с ней. Соединений может быть сколько угодно. Но один момент времени может быть активно только одно соединение.
Клиент и сервер работают в сеансе. Сеанс - последовательность команд.
Приложения БД
Существует несколько видов:
- встроенный SQL - статический, базовый язык, внутрь него помещаются команды на SQL-языке. Далее функции и вызовы функций через компилятор. Подключается библиотека, связанная с конкретной СУБД;
- динамический SQL - в приложении клиента создаётся запрос, выполняются следующие шаги:
-
prepare
- подготовка; -
execute
- выполнение.
-
Программирование сервера
CLR.NET
Можно создавать библиотеки (сборки) и подключать:
- хранимые процедуры;
- триггеры;
- пользовательские типы.
Архитектура:
- среда разработки (Visual Studio);
- библиотека классов .NET;
- CLR;
- сервер.
Написанное на разных языках преобразуется в СIL - промежуточный язык, сборку, которая дальше помещается в конкретную среду и запускается на исполнение.
Сборки используются для того, что сложно или невозможно сделать средствами SQL, например запись на диск, сложные расчёты или обращение к другим БД.
Среда загружает сборку и выполняет её разбор: проверку и интерпретацию (преобразование в двоичный код конкретной платформы). Потом извлекает запрошенную функцию и выполняет её. Среда также выполняет следующие функции:
- сборка мусора;
- поддержка системных данных;
- обеспечение безопасности;
- обработка ошибок.
Пример чего-то:
class SomeClass { public: // инициализация переменных init() {S = 0;} // sum нигде не объявлен, но мы догадываемся, что это сумма SQLInt32 terminate() {return sum;} acomulate(SQLInt32 a) {sum = sum + a;} // слияние (каких-то) групп merge() {} private: Int32 S; }