ПБД (9) - Лекция №1 - Постреляционные базы данных: различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
(Новая страница: «== Определения == === Базы данных === Большой объём долгосрочно хранящихся данных. === СУБД === ...»)
 
мНет описания правки
 
Строка 158: Строка 158:
** распределённая работа.
** распределённая работа.


[[Категория:Постреляционные базы данных (9 семестр)]]
[[Категория:Постреляционные базы данных (9 семестр)]]
[[Категория:Конспекты лекций и семинаров]]
[[Категория:Конспекты лекций и семинаров]]

Текущая версия от 19:47, 19 сентября 2012

Определения

Базы данных

Большой объём долгосрочно хранящихся данных.

СУБД

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

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

Технология работы с БД

  • Определение структуры данных:
    • ER-реляция (SQL);
    • объектная реляция (расширенный SQL);
    • объектно-ориентированная (ODL);
    • полуструктурированная (XML).
  • Программирование БД:
    • SQL + объектное расширение SQL;
    • OQL;
    • Datalog;
    • xQuery, xPath;
    • драйвера доступа (ODBC, LINQ, MVC);
    • all in/out;
    • проекция классов;
    • хранимые процедуры, функции, триггеры.
  • Реализация СУБД;
  • Интеграция информации (OLAP, data-mining).

Поколения СУБД

Первое поколение

1960 годы, сетевые и иерархические системы. Применялись в следующих сферах:

  • бронирование и продажа билетов;
  • банковскиие системы;
  • корпоративные системы (покупки, продажи, сотрудники).

Второе поколение

1970-90 годы. Реляционные БД. Связи хранятся в виде таблиц отношений. SQL.

Третье поколение

Постреляционные БД - это БД и СУБД так называемого третьего поколения.

Проблемы реляционных БД и задачи постреляционных БД:

  • уменьшение и удешевление систем;
  • большие объёмы хранимых данных. Реляционные БД нормально справляются с гигабайтами, но уже с трудом с терабайтами и выше;
  • появление третичных устройств хранения (первичные - RAM, вторичные - HDD), то есть съёмных дисков. Суть в том, что скорость чтения всё ниже и ниже;
  • параллельное хранение данных (типа RAID). Запросы теперь нужно разбивать, а потом соединять;
  • данные со сложной структурой (мультимедийные данные). Требуются новые типы данных;
  • появление распределённых архитектур;
  • интеграция информации и наследование БД.

Постреляционные БД

Делятся на два вида:

  • объектно-ориентированные БД;
  • объектно-реляционные БД.

Оба очень близки и различаются, в основном, только внутренней реализацией.

Основные возможности постреляционных БД

Расширение системы типов данных

  • могут создаваться новые типы:
    • описывается его интерфейс (функции, сигнатуры);
    • реализация.
  • конструктор составных типов:
    • структуры, множества, списки, массивы, объединения;
    • ортогональность конструкторов (список массивов, объединения множеств);
    • система образования пользовательских систем встроенных типов однообразны.

Инкапсуляция

В БД хранятся объекты. У объектов есть данные и методы, открытые и закрытые поля. Для разрешения проблемы необходимости доступа к скрытым полям используются специальные методы: обозреватели (get) и модификаторы (set);

Наследование

  • добавление свойств;
  • добавление методов;
  • ограничение значений.

Полиморфизм и позднее связывание

Типы и классы

Тип - это некоторое описание, как следует работать с переменной или объектом. Используются на этапе компиляции для проверки соответствия.

Класс поддерживает иерархию и от типа отличается:

  • используется для производства (генерации) новых объектов;
  • экстент - множество объектов конкретного класса.

Идентифицируемость объекта

У БД идентификатором объекта является первичный ключ записи таблицы. В программировании идентификатором объекта является его адрес в памяти.

Различаются два понятия: равенство (одинаковый с другим) и идентичность (он сам).

Копирование может быть поверхностным и глубоким. При поверхностном копировании копируется только ссылка, а при глубоком также и внутренняя структура объекта.

Правила и триггеры

Правила обеспечивают целостность данных и накладывают логические условия на БД. Например, что значение поля "зарплата" в таблице "директора" не может быть меньше значения поля "зарплата" в таблице "сотрудники".

Триггеры являются процедурами, которые вызываются и выполняются. Могут вызываться при любых ситуациях (DDL-триггеры), в отличие от реляционных БД.

Обновление представления

Обновляемые представления позволяют скрыть от пользователя структуру БД и изменять данные.

Для их реализации могут использоваться правила либо специальные триггеры типа instead.

Язык работы с БД

  • DDL, язык высокого уровня
    • поддерживает создание новых типов данных, конструкторы типов данных
    • добавление новых данных
    • чёткое разделение физической и логической структуры
  • DML, язык высокого уровня
    • работает на уровне логики, а не конкретной физической реализации
    • должна быть возможность выполнять незапланированные запросы
    • должна быть возможность работать с элементами типов (обращение в элементу массива, к полю структуры)
  • SQL + расширения, которые обеспечивают:
    • вычислительную полноту
    • ресурсную полноту - возможность обратиться к любым ресурсам компьютера

Проблемы взаимодействия ПО и СУБД

  • обращение должно идти на языке высокого уровня;
  • встраивание запроса в язык;
  • стабильное хранение данных;
    • неявное хранение объекта ПО в БД (выключили компьютер, а объект сохранился);
  • соответствие систем типов;
    • временные типы - существующие только на момент выполнения запроса (извлекли только фамилии и адреса);
  • использование кэша на стороне клиента;
  • восстановление после сбоев;
  • оптимизация запросов - неизвестно, сколько будет выполняться та или иная функция;
  • возможность конфигурирования физической структуры (индексы, кластеры);
  • поддержка транзакций и параллельной работы;
  • дополнительно:
    • версионность;
    • множественное наследование;
    • распределённая работа.