Проходил 14 сентября в 20:00

Открытый вебинар Реляционные СУБД
Использование индексов

Открытый вебинар онлайн

Поговорим о типах индексов (Btree, Bitmap, Hash), обсудим их преимущества и недостатки. В каких случаях какие именно применяются, как они работают при операциях SELECT/INSRT/UPDATE/DELETE, а также когда их применять не стоит.
Преподаватель
Алексей Цыкунов

Запись

О курсе

Реляционные СУБД
37 000 ₽
3 месяца
Начало 27 декабря
Цель курса — научить слушателя эффективно работать с любой реляционной базой данных с помощью языка структурированных запросов SQL. На курсе будут подробно раскрыты следующие темы: 1. Как устроены и работают реляционные СУБД? 2. Как решать вопросы оптимального хранения и выборки данных? 3. Как пользоваться SQL-командами? 4. Как писать корректные оптимальные запросы?
Высокая практическая ориентированность
...
Программа курса
Модуль 1
Сущности и связи
Модуль 2
SQL
Модуль 3
Оптимизация БД
Модуль 4
Проект
Сущности и связи
Реляционная модель данных. Реляционная алгебра
Сущности, связи.
Домены, кортежи, атрибуты, отношения.
Нормальные формы.
Трехзначная логика.
27 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Строим модель данных. За основу берем практическую структуру данных
Варианты:
1) заказ в ресторане: клиент, столик, состав заказа, цена каждого блюда в заказе, начало заказа, конец заказа, официант, счет, чем оплачивал, дисконт, чаевые - итд
2) тариф телефонии: оператор, направление (код, страна, город, мобильный оператор), стоимость за минуту, параметры округления, время суток. даты действия тарифа. комментарий
3) блог: пост. датавремя, заголовок, картинки, автор, лайки, комменты, репосты, просмотревшие. время последнего просмотра/редактирования
или любой свой вариант

делаем декомпозицию и нормализацию
в качестве сделанной ДЗ принимается pdf с начальной и конечной моделью
Типы данных
Разбираем типы данных, используемые в СУБД: числа, тексты, даты, массивы, блобы, геоданные.
31 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Корректируем типы данных в модели при необходимости. Взять свою структуру данных из ДЗ-1
и прописать комментарии на каждое поле с пояснением почему выбран данный тип поля и на сколько он удовлетворяет поставленной задаче

варианты как сделать
для Mysql Workbench есть плагины для формирования документации
https://github.com/d1soft/mysql-workbench-html-doc-generator
https://github.com/letrunghieu/mysql-workbench-plugin-doc-generating

то есть вы создаете таблицы
прописывается комментарии на поля
и затем этим плагином формируете документацию

для других инструментов тоже могут быть подобные инструменты
http://dbdoc.sourceforge.net
https://github.com/extronics/dbdoc
https://www.liquibase.org/documentation/dbdoc.html
Компоненты современной СУБД
Знакомимся с компонентами СУБД:
- пользователи;
- таблицы;
- индексы;
- триггеры;
- ограничения (constrains);
- представления;
- хранимые процедуры.
3 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добавляем в модель данных дополнительные индексы и ограничения. 1. Проводим анализ возможных запросов\отчетов\поиска данных.
2. Предполагаем возможную кардинальность поля.
3. Создаем дополнительные индексы - простые или композитные.
4. На каждый индекс пишем краткое описание зачем он нужен (почему по этому полю\полям).

5. Думаем какие логические ограничения в БД нужно добавить - например какие поля должны быть уникальны, в какие нужно добавить условия, чтобы не нарушить бизнес логику. Пример - нельзя провести операцию по переводу средств на отрицательную сумму.
6. Создаем ограничения по выбранным полям.
Транзакции. ACID
Целостность данных.
Транзакции, блокировки.
Многопользовательский доступ. Конкуренция.
Изоляция транзакций.
7 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Описываем логику транзакций для своей модели данных.
Проектирование БД
Рассматриваем различные кейсы проектирования БД. Обсуждаем нюансы.
10 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Вносим коррективы в модель данных при необходимости.
Проектирование БД: семинар
Анализируем созданные проекты.
Дискутируем, вносим корректировки.
14 января, 20:00 — 21:30
Проектирование БД
Разбираем какие вопросы и проблемы обслуживания и сопровождения нужно учесть на этапе проектирования
Продолжаем презентацию проектов
17 января, 20:00 — 21:30
SQL
Изучаем SQL. Применяем на практике.
DDL: создание и редактирование объектов БД
Создание сущностей.
Выбор первичного ключа.
Внешние ключи.
Команды DDL — CREATE, ALTER, DROP.
21 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создаем базу из проектной модели.
DML: изменение данных
Учимся изменять данные и сохранять изменения.
INSERT, UPDATE, DELETE.
COMMIT, ROLLBACK.
Каскадные изменения.
24 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создаем скрипты очистки и первичного заполнения базы.
DML: выборка данных
Выбираем данные из одной и нескольких таблиц. Изучаем разнообразия JOIN и условия WHERE.
28 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Наборы SQL-скриптов для выбора различных данных.
DML: агрегация и сортировка
Учимся группировать и сортировать данные и использовать групповые функции.
31 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создаем отчетную выборку.
DML: вложенные запросы и представления
Учимся использовать вложенные запросы и сохранять их во view. Используем конструкцию WITH.
Операции множеств UNION, EXCEPT, INTERSECT.
Изучаем дополнительные возможности выборки.
4 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создаем дополнительные представления в БД.
DML: аналитические функции
Изучаем возможности аналитических функций.
FIRST, LAST, LEAD, LAG, RANK и другие.
7 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Отчетная PIVOT-выборка.
Семинар: практический SQL
Разбираем практические примеры.
11 февраля, 20:00 — 21:30
Оптимизация БД
Внутренняя архитектура СУБД
Обслуживающие процессы.
Управление памятью. Буферы данных. Буферы журналов.
Журналирование.
Сегменты отката.
14 февраля, 20:00 — 21:30
Индексы
Изучаем основные типы индексов: Btree, Hash, Reverse, By Function.
Изучаем команды создания и модификации индексов и перестройки индексов.
Анализируем план запроса.
18 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добавляем индексы в свою базу.
Хранимые процедуры и триггеры
Встраиваем бизнес-логику в базу.
Пишем триггеры, процедуры и функции.
21 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Добавляем в базу хранимые процедуры и триггеры.
Опции хранения
Что делать, когда растет база.
Что делать, когда не хватает места.
Как распределить данные по файлам, тейблспейсам, партициям.
Шардинг и кластеризация
25 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Спрогнозировать рост данных и спроектировать модель хранения и архивации.
Оптимизация на практике
Оптимизируем сложные запросы.
28 февраля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Оптимизация сложного запроса.
Проблемы миграции
Понять подходы и методы для решения вопросов:
- обновление структуры в продакшене;
- загрузка и выгрузка данных;
- миграция между различными СУБД.
4 марта, 20:00 — 21:30
Управление СУБД
Обсуждаем дополнительные аспекты работы с СУБД:
- безопасность,
- резервирование,
- репликацию,
- кластеризацию.
Обсуждаем вопросы по курсу.
7 марта, 20:00 — 21:30
NoSQL базы данных. Использование Redis и Memcache - в качестве кешей
Разбираем преимущества и недостатки NoSQL баз данных по сравнению с реляционными.
Обсуждаем стратегии кеширования RDMBS с использованием Redis и Memcache.
11 марта, 20:00 — 21:30
Проект
Каждый создает базу данных под свои нужды.
Формат сдачи:
- ER-диаграмма,
- описание таблиц и полей,
- SQL с развертыванием БД,
- скрипт первичной заливки данных,
- несколько SQL-запросов для тестирования базы.
Вопросы по курсовому проекту.
14 марта, 20:00 — 21:30

Преподаватель

Алексей Цыкунов
Системный архитектор, Oracle DBA, разработчик perl/python, опыт в отрасли - 20 лет
В настоящее время работает на аутсорсе. Работал в интернет-провайдерах и телекоме. Имел опыт внедрения и разработки продуктов в госструктурах, таких как минздрав и соцфонд. Был главным разработчиком стартап проекта Ipstudio AMBS (биллинг для VoIP). Участвовал в проектировании и разработке OLTP систем. Проектировал и развертывал серверные системы в датацентрах.

Закончил Кыргызско-Российский Государственный Университет, 2001, Инженер автоматизированных систем.
Собственный технический блог на - dbadmins.ru
Преподаватель курсов:
Реляционные СУБД