ПБД (9) - Лекция №1 - Постреляционные базы данных
Содержание
Определения
Базы данных
Большой объём долгосрочно хранящихся данных.
СУБД
Система управления базами данных. Чтобы программа могла называться СУБД, она должна обеспечивать следующее:
- специальные языки, которые предоставляют:
- 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 + расширения, которые обеспечивают:
- вычислительную полноту
- ресурсную полноту - возможность обратиться к любым ресурсам компьютера
Проблемы взаимодействия ПО и СУБД
- обращение должно идти на языке высокого уровня;
- встраивание запроса в язык;
- стабильное хранение данных;
- неявное хранение объекта ПО в БД (выключили компьютер, а объект сохранился);
- соответствие систем типов;
- временные типы - существующие только на момент выполнения запроса (извлекли только фамилии и адреса);
- использование кэша на стороне клиента;
- восстановление после сбоев;
- оптимизация запросов - неизвестно, сколько будет выполняться та или иная функция;
- возможность конфигурирования физической структуры (индексы, кластеры);
- поддержка транзакций и параллельной работы;
- дополнительно:
- версионность;
- множественное наследование;
- распределённая работа.