Реляционные базы данных
Левон Авакян/ WoT Server/
l_avakyan@wargaming.net
Или как работать с данными
1
2
Оглавление
Оглавление 3
• Реляционные базы данных
• Представление данных
• Реляционная алгебра
• Проектирование реляционных баз данных
• Язык запросов SQL
• Внутри СУБД
• Современные СУБД
4
Реляционные базы
данных
Реляционные базы данных 5
• Широко распространены
• Очень простая концепция
• Существует высокоуровневые языки, которые легко позволяют оперировать данными
Модель 6
• База данных множество именованных отношений (таблиц)
• Атрибуты ( колонки), которые описывают отношения
• Кортежи ( строки) – конкретные значения атрибутов
• Каждый атрибут имеет тип (атомарный или структурный). Так же существует тип NULL
• Схема формальное описание базы данных
• Ключ – атрибут или несколько атрибутов (составной ключ) делающим кортеж уникальным
Что такое реляционная база данных
Запросы 7
Q Q2
Запросы 8
• Clan(cName,server,count)
• Player(pID,pName,rating,bCount)
• Apply(pID,cName,role,decision)
Пример
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
Запросы 9
Вывести всех игроков у которых рейтинг больше 50 и который подались в клан WG
• Реляционная алгебра – формальный язык
(𝜋𝐼𝐷 𝜎 𝑟𝑎𝑡𝑖𝑛𝑔>50⋏𝑐𝑁𝑎𝑚𝑒=′ 𝑊𝐺′(𝑃𝑙𝑎𝑦𝑒𝑟 ⋈ Apply))
• SQL – фактический язык, в основе которого лежит реляционная алгебра
(Select Player.pID From Player, Apply Where Player.pID=Apply.pID and rating>50 and cName=‘WG’)
Пример
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
10
Представление
данных
Subtitle
XML 11
Сравнение с реляционными БД
Реляционное
представление
XML
Структура Таблицы Иерархическое дерево
Схема Зафиксированная Гибкая
Запросы Достаточно простые Есть проблемы
Порядок данных Нет Подразумевается
Имплементация Поддерживается в
СУБД
Есть варианты
JSON 12
Сравнение с реляционными БД
Реляционное
представление
JSON
Структура Таблицы Вложенное множество
массивов
Схема Зафиксированная Гибкая
Запросы Достаточно простые Есть проблемы
Порядок данных Нет Массивы
Имплементация Поддерживается в
СУБД
Есть встроенные в
СУБД
13
Реляционная алгебра
Проще чем матан 
Операторы 14
Основные:
• R – relation
• 𝜎𝑐𝑜𝑛𝑑(𝐸) – выбор кортежей (select)
• 𝜋 𝐴1,…,𝐴𝑛 𝐸 - выбор атрибутов (project)
• (E1) × (E2) – кросс продукт
• E1 ∪ E2 - объединение
• E1 − E2 - разность
• PR(A1,…,An)(E) - переименование
Производные:
• E1 ⋈ E2 natural join
• E1 ⋈ 𝜃E2 условный (тета) join
• E1 ∩ E2 пересечение
Примеры 15
Вывести имена и рейтинг игроков у которых больше 1000 боев и который подались на роль
командира взвода и были отклонены
𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝐴𝑝𝑝𝑙𝑦.𝑝𝐼𝐷=𝑃𝑙𝑎𝑦𝑒𝑟.𝑝𝐼𝐷⋏𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′
(𝑃𝑙𝑎𝑦𝑒𝑟 × Apply)
Вывести имена и рейтинг игроков у которых больше 1000 боев и который подались на роль
командира взвода в кланы с более чем 50 игроками и были отклонены
𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′⋏𝑐𝑜𝑢𝑛𝑡>50
(𝑃𝑙𝑎𝑦𝑒𝑟 ⋈(Apply ⋈ 𝐶𝑙𝑎𝑛 ))
cName server count pID pName rating bCount pID cName role desc
PlayerClan Apply
Эквивалентность 16
E1∩E2≡ E1 - (E1- E2)
17
Проектирование
реляционных баз
данных
Проблема 18
• ID и имя
• Клан в который подается заявка
• Любимая техника включая нацию
• Язык
Apply(pID,pName,cName,vehicle,nation,lang)
Пример заявки в клан
pID pName cName vehicle nation lang
1 Alex WG Maus Ger RU
1 Alex WG Maus Ger BY
1 Alex Korn Maus Ger RU
… … … … … …
Аномалии 19
• Избыточность
• Аномалии-модификации проявляются в том, что изменение одних данных
может повлечь просмотр всей таблицы и соответствующее изменение некоторых
записей таблицы.
Аномалии-удаления — при удалении какого либо кортежа из таблицы может
пропасть информация, которая не связана на прямую с удаляемой записью.
Аномалии-добавления возникают, когда информацию в таблицу нельзя
поместить, пока она не полная, либо вставка записи требует дополнительного
просмотра таблицы.
Пример заявки в клан
Нормальные формы 20
Нормальная форма — требование, предъявляемое к структуре таблиц в теории
реляционных баз данных для устранения из базы избыточных функциональных
зависимостей между атрибутами
Метод нормальных форм (НФ) состоит в сборе информации о объектах решения
задачи в рамках одного отношения и последующей декомпозиции этого отношения
на несколько взаимосвязанных отношений на основе процедур нормализации
отношений.
Цель нормализации: исключить избыточное дублирование данных, которое
является причиной аномалий, возникших при добавлении, редактировании и
удалении кортежей(строк таблицы).
Шесть Нормальных форм и Нормальная форма Бойса-Кодда (НФБК)
Дизайн основаны на декомпозиции 21
• «Мега» отношения + свойства данных
• Проводим декомпозицию основываясь на свойствах данных
• Окончательное множество отношений удовлетворяет нормальным формам
• Отсутствуют аномалии
• Функциональные зависимости - Нормальная форма Бойса-Кодда (НФБК)
• Многозначная зависимость - 4НФ
Декомпозиция 22
𝑅 𝐴
𝑅1 𝐵
𝑅2 𝐶
Немного вспомним реляционную алгебру
𝐵 ∪ 𝐶 = 𝐴
𝑅1 ⋈ 𝑅2 = 𝑅
𝑅1 = 𝜋 𝐵 𝑅
𝑅2 = 𝜋 𝐶(𝑅)
Функциональная зависимость 23
• Функциональная зависимость (𝐴 → 𝐵)
• Вводятся основываясь на знаниях о мире
• Позволяет архивировать данные
• Оптимизация запросов
∀𝑡, 𝑢 ∈ 𝑅: 𝑡 𝐴 = 𝑢 𝐴 ⟹ 𝑡 𝐵 = 𝑢[𝐵]
Нормальная форма Бойса-Кодда:
𝐴 → 𝐵 , 𝐴 - ключ
𝐴 → 𝐵
Многозначная зависимость 24
𝐴 ↠ 𝐵
∀𝑡, 𝑢 ∈ 𝑅: 𝑡 𝐴 = 𝑢 𝐴 𝑡ℎ𝑒𝑛 ∃𝑣 ∈ 𝑅: 𝑣 𝐴
= 𝑡 𝐴 ∧ 𝑣 𝐵 = 𝑡 𝐵 ∧ 𝑣 𝑟𝑒𝑠𝑡 = 𝑢 𝑟𝑒𝑠𝑡
Четвертая нормальная форма
𝐴 ↠ 𝐵, 𝐴 − ключ
𝐴 ↠ 𝐵
Пробуем декомпозировать 25
Player (pID,pName)
Apply(pID,cName)
Vehicle(pID,vehicle)
Nation(vehicle,nation)
Language(pID,lang)
Пример заявки в клан
Apply(pID,pName,cName,vehicle,nation,lang)
Player (pID,pName)
Apply(pID,cName,lang)
Vehicle(pID,vehicle,nation)
26
SQL
Обзор 27
• SQL – Sequence query language
• Поддерживается все крупными реляционными базами данных
• Стандартизован
• Декларативный, основывается на реляционной алгебре
Additional information
Обзор 28
• DDL (Data Definition Language)
• Create table
• Alter table
• Drop table
• DML (Data Management Language)
• Select
• Update
• Insert
• Delete
• Другие: triggers, indexes, views, transactions, authorization, etc
Additional information
Обзор 29
Select A1,…, An from R1,…, Rm where condition
𝜋 𝐴1
,…,𝐴𝑛(𝜎 𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛(𝑅1 × ⋯ × 𝑅 𝑚))
Структура запроса
JOIN 30
Additional information
Агрегирующие функции 31
• MIN
• MAX
• SUM
• AVG
• COUNT
GROUP BY – позволяет определить подмножество атрибутов на котором будет выполняется
агрегирующая функция
HAVING – определяет условие для удаления агрегированных значений
Additional information
32
Внутри СУБД
Индексы 33
• Структура данных, которая строится по атрибуту или атрибутам для убыстрения индекса
• Основные виды:
• BTREE (Balance Tree) – хорошо для <,>,=
• Hash – хорошо для =
• В общем случае существует много видов
• Минусы:
• Занимают дополнительное место
• При изменении данных перестраиваются - занимает время
• Может потребоваться длительное время на построение
Additional information
Работа с индексами 34
• Вход: база данных (статистика) и профиль нагрузки
• Выход: рекомендуемые индексы
• Команда EXPLAIN – выводит план исполнения с примерной стоймостью выполнения
некоторого шага.
Additional information
Транзакции 35
• Несогласованность на уровне атрибутов
• Update Clan Set ccount = ccount + 1 Where cName = ‘WG’
• Update Clan Set ccount = ccount + 2 Where cName = ‘WG’
• Несогласованность на уровне кортежей
• Update Apply Set role = ‘commander’ Where pID = 123
• Update Apply Set decision = ‘Y’ Where pID = 123
• Несогласованность на уровне таблиц
• Update Apply Set decision = ‘Y’ Where pID In (Select pID From Player Where rating > 50)
• Update Player Set rating = (1.1) * rating Where bcount > 2500
• Несогласованность нескольких выражений
• Insert Into Archive Select * From Apply Where decision = ‘N’;
• Delete From Apply Where decision = ‘N’;
• Select Count(*) From Apply;
• Select Count(*) From Archive;
Конкурентность
Транзакции 36
Сценарии:
Загружаем большой объем данных – что-то пошло не так, часть данных в БД, часть нет
Выполняем последовательно операции с БД, отказ произошел между операциями –
целостность нарушена
Устойчивость к отказам
Транзакции 37
Транзакция - группа последовательных операций с БД, которая представляет собой логическую
единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно,
соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо
не выполнена вообще, и тогда она не должна произвести никакого эффекта.
Atomic
Consistency
Isolation
Durability
Упорядочиваемость – гарантируется, что поток транзакций, будет преобразован в
последовательность и так будет выполнен.
Транзакции 38
Уровень изоляции транзакции применяется только к одной транзакции.
.
Уровни изоляции транзакций
Уровень
изоляции
Проблема Dirty
read
Nonreptable
reads
phantoms
Read uncommited y y y
Read commited n y y
Repeatable read n n y
Serializable n n n
Представления 39
• Скрывают некоторые данные от некоторых пользователей
• Делают некоторые запросы проще, более естественными
• Обеспечивают гранулярность доступа к БД
• View V = ViewQuery(R1 , R2 , …, Rn )
• Схема V это схема результирующего запроса
• Запрос Q задействует V
• По настоящему, Q преобразуется, чтобы использовать R1 ,…,Rn вместо V
• Материализованные представления – это представления, которые создают копию данных на
диске.
.
View
Ограничения и триггеры 40
Накладывать ограничения на допустимые данные, помимо навязанные структурой и типами
• Зачем используются:
• Проверяют корректность ввода
• Поверяют корректность изменения
• Для соблюдения целостности
• Говорят системе о данных – как хранить, обрабатывать
• Какие бывают:
• NULL
• Key
• Ссылочные
• Основанные на атрибутах
• Основанные на кортежах
• Общие утверждения
Integrity Constraints
Ограничения и триггеры 41
Триггер — хранимая особого типа, которую пользователь не вызывает непосредственно, а
исполнение которой обусловлено действием по модификации данных: добавлением INSERT,
удалением DELETE строки в заданной таблице, или изменением UPDATE данных в
определённом столбце заданной таблицы БД. Триггеры применяются для обеспечения
целостности данных и реализации сложной бизнес логики.
Триггеры
42
Современные СУБД
MySQL 43
MySQL имеет два слоя – внешний слой sql и внутренний набор движков, из которых наиболее
часто используется движок InnoDb, как наиболее полно поддерживающий ACID.
Поддерживаются такие основные движки MyISAM, InnoDB, MEMORY, Berkeley DB. Они
отличаются между собой способом записи данных на диск, а также методами считывания.
Postgres 44
PostgreSQL – поедставляет из себя объектно реляционную базу данных, которая работает
только на одном движке — storage engine. Все таблицы представлены в виде объектов, они
могут наследоваться, а все действия с таблицами выполняются с помощью объективно
ориентированных функций. Как и в MySQL все данные хранятся на диске, в специально
отсортированных файлах, но структура этих файлов и записей в них очень сильно отличается.
Для каждого клиента на сервере создается новый процесс (не поток !). Для работы с такими
клиентскими процессами сервер использует семафоры.
Postgres vs MySQL 45
Postgres MySQL
Производительность В общем случае
производительнее,
множество настроек
Зависит от конкретных
данных и движка
Типы данных Возможность создавать
свои типы
Только типы
определенные в БД
Разработка Открытый код,
большое community
Принадлежит Oracle,
есть fork MariaDB,
Percona
Стандарт SQL Более полно
поддерживает стандарт
Идут по пути
упрощения
Возможности
обработки
Поддерживает курсор
на клиенте
Наследование таблиц
Различные индексы
Загружает весь ответ в
память клиента
Спасибо
l_avakyan@wargaming.net
46

Реляционные базы данных

  • 1.
    Реляционные базы данных ЛевонАвакян/ WoT Server/ l_avakyan@wargaming.net Или как работать с данными 1
  • 2.
  • 3.
    Оглавление 3 • Реляционныебазы данных • Представление данных • Реляционная алгебра • Проектирование реляционных баз данных • Язык запросов SQL • Внутри СУБД • Современные СУБД
  • 4.
  • 5.
    Реляционные базы данных5 • Широко распространены • Очень простая концепция • Существует высокоуровневые языки, которые легко позволяют оперировать данными
  • 6.
    Модель 6 • Базаданных множество именованных отношений (таблиц) • Атрибуты ( колонки), которые описывают отношения • Кортежи ( строки) – конкретные значения атрибутов • Каждый атрибут имеет тип (атомарный или структурный). Так же существует тип NULL • Схема формальное описание базы данных • Ключ – атрибут или несколько атрибутов (составной ключ) делающим кортеж уникальным Что такое реляционная база данных
  • 7.
  • 8.
    Запросы 8 • Clan(cName,server,count) •Player(pID,pName,rating,bCount) • Apply(pID,cName,role,decision) Пример cName server count pID pName rating bCount pID cName role desc PlayerClan Apply
  • 9.
    Запросы 9 Вывести всехигроков у которых рейтинг больше 50 и который подались в клан WG • Реляционная алгебра – формальный язык (𝜋𝐼𝐷 𝜎 𝑟𝑎𝑡𝑖𝑛𝑔>50⋏𝑐𝑁𝑎𝑚𝑒=′ 𝑊𝐺′(𝑃𝑙𝑎𝑦𝑒𝑟 ⋈ Apply)) • SQL – фактический язык, в основе которого лежит реляционная алгебра (Select Player.pID From Player, Apply Where Player.pID=Apply.pID and rating>50 and cName=‘WG’) Пример cName server count pID pName rating bCount pID cName role desc PlayerClan Apply
  • 10.
  • 11.
    XML 11 Сравнение среляционными БД Реляционное представление XML Структура Таблицы Иерархическое дерево Схема Зафиксированная Гибкая Запросы Достаточно простые Есть проблемы Порядок данных Нет Подразумевается Имплементация Поддерживается в СУБД Есть варианты
  • 12.
    JSON 12 Сравнение среляционными БД Реляционное представление JSON Структура Таблицы Вложенное множество массивов Схема Зафиксированная Гибкая Запросы Достаточно простые Есть проблемы Порядок данных Нет Массивы Имплементация Поддерживается в СУБД Есть встроенные в СУБД
  • 13.
  • 14.
    Операторы 14 Основные: • R– relation • 𝜎𝑐𝑜𝑛𝑑(𝐸) – выбор кортежей (select) • 𝜋 𝐴1,…,𝐴𝑛 𝐸 - выбор атрибутов (project) • (E1) × (E2) – кросс продукт • E1 ∪ E2 - объединение • E1 − E2 - разность • PR(A1,…,An)(E) - переименование Производные: • E1 ⋈ E2 natural join • E1 ⋈ 𝜃E2 условный (тета) join • E1 ∩ E2 пересечение
  • 15.
    Примеры 15 Вывести именаи рейтинг игроков у которых больше 1000 боев и который подались на роль командира взвода и были отклонены 𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝐴𝑝𝑝𝑙𝑦.𝑝𝐼𝐷=𝑃𝑙𝑎𝑦𝑒𝑟.𝑝𝐼𝐷⋏𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′ (𝑃𝑙𝑎𝑦𝑒𝑟 × Apply) Вывести имена и рейтинг игроков у которых больше 1000 боев и который подались на роль командира взвода в кланы с более чем 50 игроками и были отклонены 𝜋 𝑝𝑁𝑎𝑚𝑒,𝑟𝑎𝑡𝑖𝑛𝑔 𝜎 𝑏𝐶𝑜𝑢𝑛𝑡>1000⋏𝑟𝑜𝑙𝑒=′ 𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒𝑟′⋏𝑑𝑒𝑠𝑐=′ 𝑟′⋏𝑐𝑜𝑢𝑛𝑡>50 (𝑃𝑙𝑎𝑦𝑒𝑟 ⋈(Apply ⋈ 𝐶𝑙𝑎𝑛 )) cName server count pID pName rating bCount pID cName role desc PlayerClan Apply
  • 16.
  • 17.
  • 18.
    Проблема 18 • IDи имя • Клан в который подается заявка • Любимая техника включая нацию • Язык Apply(pID,pName,cName,vehicle,nation,lang) Пример заявки в клан pID pName cName vehicle nation lang 1 Alex WG Maus Ger RU 1 Alex WG Maus Ger BY 1 Alex Korn Maus Ger RU … … … … … …
  • 19.
    Аномалии 19 • Избыточность •Аномалии-модификации проявляются в том, что изменение одних данных может повлечь просмотр всей таблицы и соответствующее изменение некоторых записей таблицы. Аномалии-удаления — при удалении какого либо кортежа из таблицы может пропасть информация, которая не связана на прямую с удаляемой записью. Аномалии-добавления возникают, когда информацию в таблицу нельзя поместить, пока она не полная, либо вставка записи требует дополнительного просмотра таблицы. Пример заявки в клан
  • 20.
    Нормальные формы 20 Нормальнаяформа — требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами Метод нормальных форм (НФ) состоит в сборе информации о объектах решения задачи в рамках одного отношения и последующей декомпозиции этого отношения на несколько взаимосвязанных отношений на основе процедур нормализации отношений. Цель нормализации: исключить избыточное дублирование данных, которое является причиной аномалий, возникших при добавлении, редактировании и удалении кортежей(строк таблицы). Шесть Нормальных форм и Нормальная форма Бойса-Кодда (НФБК)
  • 21.
    Дизайн основаны надекомпозиции 21 • «Мега» отношения + свойства данных • Проводим декомпозицию основываясь на свойствах данных • Окончательное множество отношений удовлетворяет нормальным формам • Отсутствуют аномалии • Функциональные зависимости - Нормальная форма Бойса-Кодда (НФБК) • Многозначная зависимость - 4НФ
  • 22.
    Декомпозиция 22 𝑅 𝐴 𝑅1𝐵 𝑅2 𝐶 Немного вспомним реляционную алгебру 𝐵 ∪ 𝐶 = 𝐴 𝑅1 ⋈ 𝑅2 = 𝑅 𝑅1 = 𝜋 𝐵 𝑅 𝑅2 = 𝜋 𝐶(𝑅)
  • 23.
    Функциональная зависимость 23 •Функциональная зависимость (𝐴 → 𝐵) • Вводятся основываясь на знаниях о мире • Позволяет архивировать данные • Оптимизация запросов ∀𝑡, 𝑢 ∈ 𝑅: 𝑡 𝐴 = 𝑢 𝐴 ⟹ 𝑡 𝐵 = 𝑢[𝐵] Нормальная форма Бойса-Кодда: 𝐴 → 𝐵 , 𝐴 - ключ 𝐴 → 𝐵
  • 24.
    Многозначная зависимость 24 𝐴↠ 𝐵 ∀𝑡, 𝑢 ∈ 𝑅: 𝑡 𝐴 = 𝑢 𝐴 𝑡ℎ𝑒𝑛 ∃𝑣 ∈ 𝑅: 𝑣 𝐴 = 𝑡 𝐴 ∧ 𝑣 𝐵 = 𝑡 𝐵 ∧ 𝑣 𝑟𝑒𝑠𝑡 = 𝑢 𝑟𝑒𝑠𝑡 Четвертая нормальная форма 𝐴 ↠ 𝐵, 𝐴 − ключ 𝐴 ↠ 𝐵
  • 25.
    Пробуем декомпозировать 25 Player(pID,pName) Apply(pID,cName) Vehicle(pID,vehicle) Nation(vehicle,nation) Language(pID,lang) Пример заявки в клан Apply(pID,pName,cName,vehicle,nation,lang) Player (pID,pName) Apply(pID,cName,lang) Vehicle(pID,vehicle,nation)
  • 26.
  • 27.
    Обзор 27 • SQL– Sequence query language • Поддерживается все крупными реляционными базами данных • Стандартизован • Декларативный, основывается на реляционной алгебре Additional information
  • 28.
    Обзор 28 • DDL(Data Definition Language) • Create table • Alter table • Drop table • DML (Data Management Language) • Select • Update • Insert • Delete • Другие: triggers, indexes, views, transactions, authorization, etc Additional information
  • 29.
    Обзор 29 Select A1,…,An from R1,…, Rm where condition 𝜋 𝐴1 ,…,𝐴𝑛(𝜎 𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛(𝑅1 × ⋯ × 𝑅 𝑚)) Структура запроса
  • 30.
  • 31.
    Агрегирующие функции 31 •MIN • MAX • SUM • AVG • COUNT GROUP BY – позволяет определить подмножество атрибутов на котором будет выполняется агрегирующая функция HAVING – определяет условие для удаления агрегированных значений Additional information
  • 32.
  • 33.
    Индексы 33 • Структураданных, которая строится по атрибуту или атрибутам для убыстрения индекса • Основные виды: • BTREE (Balance Tree) – хорошо для <,>,= • Hash – хорошо для = • В общем случае существует много видов • Минусы: • Занимают дополнительное место • При изменении данных перестраиваются - занимает время • Может потребоваться длительное время на построение Additional information
  • 34.
    Работа с индексами34 • Вход: база данных (статистика) и профиль нагрузки • Выход: рекомендуемые индексы • Команда EXPLAIN – выводит план исполнения с примерной стоймостью выполнения некоторого шага. Additional information
  • 35.
    Транзакции 35 • Несогласованностьна уровне атрибутов • Update Clan Set ccount = ccount + 1 Where cName = ‘WG’ • Update Clan Set ccount = ccount + 2 Where cName = ‘WG’ • Несогласованность на уровне кортежей • Update Apply Set role = ‘commander’ Where pID = 123 • Update Apply Set decision = ‘Y’ Where pID = 123 • Несогласованность на уровне таблиц • Update Apply Set decision = ‘Y’ Where pID In (Select pID From Player Where rating > 50) • Update Player Set rating = (1.1) * rating Where bcount > 2500 • Несогласованность нескольких выражений • Insert Into Archive Select * From Apply Where decision = ‘N’; • Delete From Apply Where decision = ‘N’; • Select Count(*) From Apply; • Select Count(*) From Archive; Конкурентность
  • 36.
    Транзакции 36 Сценарии: Загружаем большойобъем данных – что-то пошло не так, часть данных в БД, часть нет Выполняем последовательно операции с БД, отказ произошел между операциями – целостность нарушена Устойчивость к отказам
  • 37.
    Транзакции 37 Транзакция -группа последовательных операций с БД, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще, и тогда она не должна произвести никакого эффекта. Atomic Consistency Isolation Durability Упорядочиваемость – гарантируется, что поток транзакций, будет преобразован в последовательность и так будет выполнен.
  • 38.
    Транзакции 38 Уровень изоляциитранзакции применяется только к одной транзакции. . Уровни изоляции транзакций Уровень изоляции Проблема Dirty read Nonreptable reads phantoms Read uncommited y y y Read commited n y y Repeatable read n n y Serializable n n n
  • 39.
    Представления 39 • Скрываютнекоторые данные от некоторых пользователей • Делают некоторые запросы проще, более естественными • Обеспечивают гранулярность доступа к БД • View V = ViewQuery(R1 , R2 , …, Rn ) • Схема V это схема результирующего запроса • Запрос Q задействует V • По настоящему, Q преобразуется, чтобы использовать R1 ,…,Rn вместо V • Материализованные представления – это представления, которые создают копию данных на диске. . View
  • 40.
    Ограничения и триггеры40 Накладывать ограничения на допустимые данные, помимо навязанные структурой и типами • Зачем используются: • Проверяют корректность ввода • Поверяют корректность изменения • Для соблюдения целостности • Говорят системе о данных – как хранить, обрабатывать • Какие бывают: • NULL • Key • Ссылочные • Основанные на атрибутах • Основанные на кортежах • Общие утверждения Integrity Constraints
  • 41.
    Ограничения и триггеры41 Триггер — хранимая особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определённом столбце заданной таблицы БД. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес логики. Триггеры
  • 42.
  • 43.
    MySQL 43 MySQL имеетдва слоя – внешний слой sql и внутренний набор движков, из которых наиболее часто используется движок InnoDb, как наиболее полно поддерживающий ACID. Поддерживаются такие основные движки MyISAM, InnoDB, MEMORY, Berkeley DB. Они отличаются между собой способом записи данных на диск, а также методами считывания.
  • 44.
    Postgres 44 PostgreSQL –поедставляет из себя объектно реляционную базу данных, которая работает только на одном движке — storage engine. Все таблицы представлены в виде объектов, они могут наследоваться, а все действия с таблицами выполняются с помощью объективно ориентированных функций. Как и в MySQL все данные хранятся на диске, в специально отсортированных файлах, но структура этих файлов и записей в них очень сильно отличается. Для каждого клиента на сервере создается новый процесс (не поток !). Для работы с такими клиентскими процессами сервер использует семафоры.
  • 45.
    Postgres vs MySQL45 Postgres MySQL Производительность В общем случае производительнее, множество настроек Зависит от конкретных данных и движка Типы данных Возможность создавать свои типы Только типы определенные в БД Разработка Открытый код, большое community Принадлежит Oracle, есть fork MariaDB, Percona Стандарт SQL Более полно поддерживает стандарт Идут по пути упрощения Возможности обработки Поддерживает курсор на клиенте Наследование таблиц Различные индексы Загружает весь ответ в память клиента
  • 46.

Editor's Notes

  • #7 Машина Беббиджа. Адда Лавлейс вычисление числе Бернулли.
  • #8 Машина Беббиджа. Адда Лавлейс вычисление числе Бернулли.
  • #9 Машина Беббиджа. Адда Лавлейс вычисление числе Бернулли.
  • #10 Машина Беббиджа. Адда Лавлейс вычисление числе Бернулли.