2.80M
Категория: Базы данныхБазы данных

Блок 5.1 Хранение данных

1.

ХРАНЕНИЕ
ДАННЫХ

2.

Определение БД
● База данных – предназначенная для машинной обработки совокупность
интегрированных данных, т.е. данных, предназначенных для удовлетворения
нужд многих пользователей
● База данных – совокупность данных, организованных по определенным
правилам, предусматривающим общие принципы описания, хранения и
манипулирования данными, независимо от прикладных программ (ГОСТ
34,003 ЕКС АС)
● База данных – совокупность взаимосвязанных, хранящихся вместе данных
при наличии такой минимальной избыточности, которая допускает их
использование оптимальным образом для одного или нескольких приложений

3.

Определение СУБД
СУБД (система управления базами данных) – специализированное
программное обеспечение, с помощью которого реализуется
централизованное управление данными, хранимыми в базе, доступ к ним и
поддержание их в состоянии, соответствующим состоянию предметной
области
Свойства:
● Поддержание логически согласованного набора файлов
● Обеспечение языка манипулирования данными
● Восстановление информации после сбоев
● Обеспечение параллельной работы нескольких пользователей

4.

Модели данных
Модель данных – совокупность структур данных и операций их
обработки
Классические модели:
● Иерархическая
● Сетевая
● Реляционная
Новые модели:
● Постреляционная
● Многомерная
● Объектно-ориентированная

5.

Реляционная модель
Реляционная база данных – это упорядоченная информация, связанная
между собой определенными отношениями
смысла данных
Достоинства:
Недостатки:
● возможность сравнительно просто моделировать ● ограниченность при использовании в
большую часть распространенных предметных
нетрадиционных областях, в которых
областей
требуются предельно сложные
● наличие простого и в то же время мощного
структуры данных
математического аппарата, опирающегося главным
образом на теорию множеств и математическую
логику
● возможность манипулирования данными без
необходимости знания конкретной физической
организации баз данных во внешней памяти

6.

Типы данных
Типы данных, используемые в БД:
● Целочисленные
● Вещественные
● Строковые
● Логические
● Денежные
● Временные (дата и/или время)
● Двоичные
Студент
№ личного ФИО
дела
Дата
рождения
16493
Иванов
01.06.1997
16597
Петров
15.09.2000
16695
Сидоров
28.03.1999
№ личного Оценка 1
дела
Оценка 2
16493
4
3
16597
5
4
16695
5
5


Сессия


7.

Постреляционная модель данных
Постреляционная модель данных Номер
Номер
Название
расширенная реляционная модель, снимающая накладной покупателя товара
ограничение неделимости данных, хранящихся в
0373
8723
Сыр
записях таблиц
Рыба
Постреляционная модель допускает
8374
8732
Лимонад
многозначные поля. Набор значений
Сок
многозначных полей считается самостоятельной
7364
8723
Печенье
таблицей, встроенной в основную таблицу
Йогурт
Достоинства:
Высокая наглядность и повышение
эффективности обработки
информации
Количество
3
2
1
6
2
1
Недостатки:
Сложность решения проблемы
обеспечения целостности и
непротиворечивости хранимых данных

8.

Поддержка языков баз данных
Специализированные языки:
○ язык определения схем данных (Schema Definition Language,
SDL) позволяет определение логической структуры БД
○ язык манипулирования данными (Data Manipulation Language,
DML) позволяет заносить данные в базу, удалять,
модифицировать, выбирать существующие данные
Интегрированные языки:
○ SQL (Structured Query Language) – структурированный язык
запросов
○ QBE (Query By Example) – язык запросов по образцу

9.

Управление транзакциями
Транзакцией называется последовательность
операций над БД, Рассматриваемых СУБД как
единое целое
Если хотя бы одна операция транзакции
заканчивается неудачей, то транзакция
Свойства:
считается невыполненной и производится
● Атомарность
откат — отмена всех изменений данных,
● Сериализуемость
● Долговечность
произведенных
в
ходе
выполнения
транзакции, и возврат БД к состоянию до
начала выполнения транзакции
Если все операции успешно выполнены, то транзакция также считается
успешно выполненной и СУБД фиксирует все изменения данных, произведенные
этой транзакцией

10.

Протоколирование (журнализация)
Надежность хранения: СУБД должна быть в состоянии восстановить последнее согласованное
состояние БД после любого аппаратного или программного сбоя.
Аппаратные сбои:
Программные сбои –
● мягкие сбои связаны с
последствия ошибок в
программах:
внезапной остановкой работы
компьютера
● в самой СУБД = мягкий
● жесткие сбои характеризуются
аппаратный сбой
потерей информации на
носителях внешней памяти
● в пользовательской
программе
Восстановление:
● индивидуальный откат
транзакции
● мягкий сбой
● жесткий сбой

11.

Домен (domain)
Доменом называется множество атомарных значений одного и того же типа. Домен можно
рассматривать как подмножество значений некоторого типа данных имеющих определенный
смысл. Домен имеет уникальное имя (в пределах базы данных)
Атомарное (неразложимое) для данной модели значение данных — это наименьшая
единица данных реляционной модели
Домен
Базовый тип
Ограничение
Имена_Специальности
строковый
строки, которые могут изображать
имя и название специальности
Даты_рождения
временной
допустимый диапазон дат рождения
студентов
Номера_курсов
Номера_студ_билетов
целочисленный
целые числа, которые могут
обозначать номер курса
университета (обычно от 1 до 6)
и номер студенческого билета
(обязательно положительное число)

12.

Атрибуты, схема и степень отношения
Атрибуты — столбцы отношения. Им присваиваются имена, по которым к ним
затем производится обращение
Домены могут отличаться для разных атрибутов, но также несколько атрибутов
могут иметь один домен
Схема отношения — список имен атрибутов отношения с указанием имен
доменов (или типов, если домены не поддерживаются)
Степень отношения — это число его атрибутов.
● унарное отношение
● бинарное отношение
● тернарное отношение
● ...
● n-арное отношение

13.

Кортеж, пустые значения
● Кортеж, соответствующий данной схеме отношения, представляет собой
множество пар (имя атрибута, значение), которое содержит одно вхождение
каждого имени атрибута, принадлежащего схеме отношения
● Степень кортежа — число элементов в нем — совпадает со степенью
соответствующей схемы отношения
● Отношение — множество кортежей, соответствующих одной схеме
отношения
● Кардинальное число (мощность отношения) — число его кортежей
● Пустое значение — это неизвестное значение атрибута, которое не
определено в данный момент времени и в принципе может быть определено
позднее (это не ноль и не пустая строка).
Обозначение: NULL

14.

Пример

15.

Ключи
Первичный ключ (primary key) непосредственно применяется для идентификации строк в
таблице.
Он должен соответствовать следующим ограничениям:
● Первичный ключ должен быть уникальным все время
● Он должен постоянно присутствовать в таблице и иметь значение
● Он не должен часто менять свое значение. В идеале он вообще не
должен изменять значение

16.

Ключи
Суперключ
сложный (составной) ключ
с бóльшим числом
столбцов, чем необходимо
для того, чтобы быть
уникальным
идентификатором
Вторичный ключ
Внешний ключ
представляет собой
это атрибут (множество
комбинацию атрибутов, атрибутов) одного отношения,
отличную от комбинации, являющийся ключом другого
составляющей первичный
(или того же самого)
ключ. Причем вторичные
отношения.
ключи не обязательно
обладают свойством
уникальности

17.

Индексы
Индекс - указатель на данные, размещенные в реляционной таблице
Индекс – средство ускорения операции поиска записей в таблице
Индекс хранит информацию о местонахождении записей, относящихся к
индексируемому столбцу таблицы. При добавлении в таблицу новых
записей или удалении существующих индекс модифицируется
При выполнении запроса к БД, в условие поиска которого входит
индексированный столбец, поиск значений производится в первую
очередь в индексе

18.

Условия целостности данных
Целостность – свойство БД, означающее, что она содержит полную, непротиворечивую
и адекватно отражающую предметную область информацию
Ограничения целостности – правила, определяющие возможные значения в БД:
● Категорийная целостность
○ никакой атрибут первичного ключа не может быть пустым
● Ссылочная целостность
○ Каждой записи основной таблицы соответствует нуль или более записей
дополнительной таблицы
○ Каждая запись дополнительной таблицы имеет только одну родительскую запись
основной таблицы

19.

Внешние ключи и связи
Базы данных могут содержать таблицы, которые связаны между собой различными
связями
Связь (relationship) представляет ассоциацию между сущностями разных типов
При выделении связи выделяют главную или родительскую таблицу (primary key
table / master table) и зависимую, дочернюю таблицу (foreign key table / child table)
Связи между таблицами бывают следующих типов:
● Один к одному (One to one)
● Один ко многим (One to many)
● Многие ко многим (Many to many)

20.

Связь один к одному
Данный тип связей встречается не часто. В этом случае объекту одной сущности можно
сопоставить только один объект другой сущности.
Например, на некоторых сайтах пользователь может иметь только один блог. То есть возникает
отношение один пользователь - один блог
Например, таблица Users представляет пользователей и имеет следующие столбцы:
● UserId (идентификатор, первичный ключ)
● Name (имя пользователя)
И таблица Blogs представляет блоги пользователей и имеет следующие столбцы:
● BlogId (идентификатор, первичный и внешний ключ)
● Name (название блога)
В этом случае столбец BlogId будет хранить значение из столбца UserId из
таблицы пользователей. То есть столбец BlogId будет выступать одновременно
первичным и внешним ключом

21.

Связь один ко многим
Это наиболее часто встречаемый тип связей. В этом типе связей несколько строк из
дочерний таблицы зависят от одной строки в родительской таблице
К примеру, пусть будет таблица Articles, которая представляет статьи блога и которая имеет
следующие столбцы:
● ArticleId (идентификатор, первичный ключ)
● BlogId (внешний ключ)
● Title (название статьи)
● Text (текст статьи)
В этом случае столбец BlogId из таблицы статей будет хранить
значение из столбца BlogId из таблицы блогов

22.

Связь многие ко многим
В этом типе связей множество экземпляров одной сущности связаны со
множеством экземпляров другой сущности
Например, в случае со статьями и тегами пусть будет таблица Tags, которая имеет два
столбца:
● TagId (идентификатор, первичный ключ)
● Text (текст тега)
Также пусть будет промежуточная таблица
ArticleTags со следующими полями:
● TagId (идентификатор, первичный и внешний ключ)
● ArticleIdId (идентификатор, первичный и внешний ключ)

23.

Ссылочная целостность данных
При изменении первичных и внешних ключей следует соблюдать такой аспект как ссылочная
целостность данных (referential integrity). Ее основная идея состоит в том, чтобы две таблице в
базе данных, которые хранят одни и те же данные, поддерживали их согласованность
В каких случаях целостность данных может нарушаться:
● Аномалия удаления (deletion anomaly)
● Аномалия вставки (insertion anomaly)
● Аномалии обновления (update anomaly)

24.

SQL СУБД

25.

noSQL СУБД

26.

Базы данных «ключ – значение»

27.

Документоориентированные базы данных

28.

Колоночные базы данных

29.

Графовые базы данных

30.

SQL vs noSQL
SQL СУБД
noSQL СУБД
База состоит из таблиц, таблицы из
колонок и строк. Строки в одной таблице
одинаковы по структуре
Схема данных определена и строго
типизирована. Имеются ограничения для
обеспечения целостности данных.
Нормализация, данные распределены по
таблицам. Связь через отношения между
таблицами.
Работа с данными через SQL запросы,
которые почти одинаковы для всех БД.
База может содержать коллекции, которые
содержат записи. Записи могут иметь
разную структуру.
Нет: схемы данных, ограничений, контроля
целостности. У любой записи – любые поля
Данные извлекаются SQL запросами из
одной или нескольких таблиц, используя
joinы, условия и агрегатные функции.
Никаких join-ов, простые условия
сравнения на равенство (key = const), в
некоторых БД имеется агрегация и
индексы.
Данные денормализованы. Между
коллекциями и записями явных отношений
не задано.
Работа с данными API, у каждой БД свое.

31.

Характеристики при выборе СУБД
консистентность реплик;
объем данных;
размер транзакций (длительность, объем данных,
кол-во одновременных транзакций);
количество одновременных соединений/сессий;
соотношение операций чтения/записи;
масштабирование;
шардинг;

32.

Характеристики для работы СУБД
выбор структуры хранения: монолит, кластер,
шарды, распределенная сеть, облако;
оценка нагрузки;
оценка роста;
оценка производительности;
определение требований к производительности;
организация резервного копирования;
обеспечения высокой доступности.

33.

Выбор СУБД
1. Номер 1 в мире
2. Инновационные технологии
3. Тех. поддержка
4. Высокая скорость обработки
данных
1. Стоимость !!!
2. Требовательность к ресурсам
3. Сложность работы на
начальном уровне
1. Бесплатная (не всегда)
2. Легкость использования
3. Поддержка облачных
технологий
1. Не полностью бесплатная
2. Масштабируемость

34.

Выбор СУБД
1. Широкий функционал
(совместима с MySQL)
2. Высокая защита и
шифрование данных
3. Полностью бесплатная
Небольшое сообщество
пользователей
1. Различные версии, в том
числе бесплатная
2. Тех. поддержка
3. Переход в облака – Microsoft
Azure
1. Стоимость полной версии
2. Сложность настройки на
начальном этапе

35.

Выбор СУБД
1. Полностью бесплатная
2. Большое количество
сторонних расширений
3. Встроенная репликация
1. Сложность масштабирования
2. Нет автоматического
переключения мастера из коробки

36.

Выбор СУБД
1. Простота работы с данными
(json)
2. Масштабируемость
3. JavaScript-like синтаксис
4. Высокая скорость обработки
данных
1. Большая нагрузка на CPU
2. Слабая защищенность данных
1. Гибкий язык запросов (CQL)
2. Быстрота записи
3. Быстрое чтение по ключу
1. Медленные сложные запросы
2. Большие расходы аппаратных
ресурсов

37.

Технологический стек
Установка PostgreSQL – ОС Windows
https://www.postgresql.org/download/windows/
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
Установка MongoDB
https://docs.mongodb.com/manual/installation
Утилиты управления СУБД
DBeaver (https://dbeaver.io/) – PostgreSQL, MySQL, MS SQLServer, Oracle, SQLite

38.

39.

Полезные материалы
Документация: https://docs.mongodb.com/manual/
MySQL и MongoDB — когда и что лучше использовать
https://habr.com/ru/post/322532/
Should I Use MongoDB or PostgreSQL?
https://medium.com/geekculture/should-i-use-mongodb-orpostgresql-ba2c1bb8b768
English     Русский Правила