ПБД (9) - Лекция №10 - Работа с СУБД

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
Этот конспект ещё не дописан.
Здесь не хватает:
   - примеров для CLR.NET


Работа с СУБД

Виды взаимодействия с СУБД-сервером

Работа на стороне СУБД-сервера

Несколько видов:

  • система правил, триггеры, ограничения (DML, DDL);
    • SQL/PSM;
    • подключение внешних модулей (например, CLR.NET);
  • внешние вызовы, (call-out):
    • вызов внешней программы:
      • в синхронном режиме - управление возвращается в вызвавшую программу;
      • в асинхронном режиме - после вызова вызвавщая продолжает работать, не ждёт;
      • из библиотеки.
    • вызов внешних объектов (COM, ActiveX):
      • создаётся объект-посредник;
      • обращение через него к функциям и методам нужного;
  • обращение к внешним БД:
    • через связные серверы;
    • через проекции.

Работа на стороне клиента

Тоже несколько вариантов:

  • CLI (ODBC/JDBC);
  • встраиваемый SQL;
  • обращение к объектному представлению (call-in);
  • обращение к управляемому объекту (Server Managment Objects).

Варианты клиент-серверных приложений

Трёхуровневая архитектура, "тонкий клиент":

  1. СУБД;
  2. прослойка в виде сервера приложений;
  3. клиент.

Импорт и экспорт данных

Разовая выгрузка из СУБД либо наоборот - загрузка данных в СУБД. Используется, например, XML.

Репликации

Синхронное копирование одной БД на несколько, чтобы между всеми была однозначность.

Приципы взаимодействия клиента и сервера СУБД

Иерархия СУБД:

  1. среда - хранение данных и выполнение процессов (сервера и клиента);
  2. кластер;
  3. каталог - коллекция схем;
  4. схема - коллекция объектов.

Для работы с БД устанавливается соединение с ней. Соединений может быть сколько угодно. Но один момент времени может быть активно только одно соединение.

Клиент и сервер работают в сеансе. Сеанс - последовательность команд.

Приложения БД

Существует несколько видов:

  1. встроенный SQL - статический, базовый язык, внутрь него помещаются команды на SQL-языке. Далее функции и вызовы функций через компилятор. Подключается библиотека, связанная с конкретной СУБД;
  2. динамический SQL - в приложении клиента создаётся запрос, выполняются следующие шаги:
    1. prepare - подготовка;
    2. execute - выполнение.

Программирование сервера

CLR.NET

Можно создавать библиотеки (сборки) и подключать:

  • хранимые процедуры;
  • триггеры;
  • пользовательские типы.

Архитектура:

  1. среда разработки (Visual Studio);
  2. библиотека классов .NET;
  3. CLR;
  4. сервер.

Написанное на разных языках преобразуется в СIL - промежуточный язык, сборку, которая дальше помещается в конкретную среду и запускается на исполнение.

Сборки используются для того, что сложно или невозможно сделать средствами SQL, например запись на диск, сложные расчёты или обращение к другим БД.

Среда загружает сборку и выполняет её разбор: проверку и интерпретацию (преобразование в двоичный код конкретной платформы). Потом извлекает запрошенную функцию и выполняет её. Среда также выполняет следующие функции:

  • сборка мусора;
  • поддержка системных данных;
  • обеспечение безопасности;
  • обработка ошибок.

Пример чего-то:

class SomeClass
{
 public:
    // инициализация переменных
    init() {S = 0;}
 
    // sum нигде не объявлен, но мы догадываемся, что это сумма
    SQLInt32 terminate() {return sum;}
    
    acomulate(SQLInt32 a) {sum = sum + a;}
    
    // слияние (каких-то) групп
    merge() {}
    
 private:
    Int32 S;
}