День открытых дверей по курсу «Базы данных» 22.05.2019 в 20:00 | OTUS
Скидки на курсы июня!
Только два дня! Пишите в чат, чтобы получить максимальную скидку ➞
Написать в чат

Курсы

Программирование
Web-разработчик на Python Разработчик на Spring Framework iOS Разработчик. Продвинутый курс v 2.0. PostgreSQL C# ASP.NET Core разработчик Разработчик C# Архитектор программного обеспечения Разработчик C++ MS SQL Server разработчик Android-разработчик. Базовый курс Архитектор высоких нагрузок Backend-разработчик на PHP Алгоритмы для разработчиков Team Lead 2.0 Python-разработчик. Базовый курс VOIP инженер Базы данных Разработчик Golang Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Agile Project Manager в IT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 22 мая 2019 года в 20:00

День открытых дверей
Всё о курсе «Реляционные СУБД»

День открытых дверей онлайн

День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут вас после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Запишитесь на онлайн-трансляцию и задайте свой вопрос преподавателю лично!
Преподаватель
Алексей Цыкунов

Запись

О курсе

Базы данных
60 000 ₽
6 месяцев
Начало в октябре
Полный курс по работе с базами данных реляционными и нереляционными. Курс включает в себя все основные и популярные БД, которые могут пригодиться разработчику: PostgreSQL, MySQL, Redis, MongoDB, Cassandra и т.д. Курс обеспечивает глубокое погружение в СУБД, чтобы проектировать базы данных так, чтобы впоследствии не приходилось тушить пожары в результате не оптимально заложенных основ. Цель курса — научить слушателя эффективно работать …
Программа курса
Модуль 1
Сущности и связи
Модуль 2
PostgreSQL
Модуль 3
MySQL
Модуль 4
NoSQL (Redis, Tarantool, MongoDB, Cassandra)
Модуль 5
Проект итоговый
Сущности и связи
Реляционная модель данных. Реляционная алгебра
познакомиться с реляционной теорией;
объяснить принципы проектирования реляционных баз данных;
освоить приемы нормализации данных;
построить свою модель.
Домашние задания: 1
ДЗ
Строим модель данных. Задача: реализовать модель данных БД, определить сущности, построить связи, выполнить декомпозицию и нормализацию

За основу берем практическую структуру данных с заказчиками интернет магазина (файл some_customers.csv.gz).

Текущая структура данных неоптимальна:
- нет типизации - почти все поля хранятся как строки
- данные не нормализованы - данные о адресе и человеке хранятся в одной таблице, на одного человека может приходится несколько адресов

Попытаться выделить следующие сущности:
- страны
- города
- улицы
- дома
и другие которые посчитаете нужными

Описанные сущности не являются полным и конечным ТЗ (как это и бывает в жизни). Вы как архитектор должны предусмотреть необходимые атрибуты и дополнительные сущности по необходимости. И четко представлять бизнес-задачу которую будет решать эта структура данных.

делаем декомпозицию и нормализацию
в качестве сделанной ДЗ принимается pdf с начальной и конечной моделью

Решая данное ДЗ вы тренируете навык проектирования БД, выделения сущностей и их атрибутов, построения связей, нормализации данных
Проектирование БД
разобрать вопросы и проблемы обслуживания и сопровождения, которые важно учесть на этапе проектирования.
Домашние задания: 1
ДЗ
Доработка проекта. В первом ДЗ была реализована сущность customers
Реализуйте сущности продукты, категории продуктов, цены, поставщики, производители и покупки
на примере того что было продемонстрировано на занятии
Свои решения для этой схемы приветствуются

В проекте должны быть
- схема
- документация
- примеры бизнес-задач которые решает база
- рекомендации к использованию репликации
- рекомендации к резервному копированию

ДЗ автоматически засчитывается при защите проекта на последнем занятии модуля
Компоненты современной СУБД
использовать в работе многообразие компонентов и возможностей СУБД: как управлять пользователями, какие типы коннектов бывают, как создавать индексы, как создавать ограничения (constrains), что такое триггеры, зачем нужны последовательности и очереди, для чего использовать хранимые процедуры и функции, что такое DB links, представления (view) и синонимы, Jobы.
Домашние задания: 1
ДЗ
Добавляем в модель данных дополнительные индексы и ограничения. 1. Проводим анализ возможных запросов\отчетов\поиска данных.
2. Предполагаем возможную кардинальность поля.
3. Создаем дополнительные индексы - простые или композитные.
4. На каждый индекс пишем краткое описание зачем он нужен (почему по этому полю\полям).

5. Думаем какие логические ограничения в БД нужно добавить - например какие поля должны быть уникальны, в какие нужно добавить условия, чтобы не нарушить бизнес логику. Пример - нельзя провести операцию по переводу средств на отрицательную сумму.
6. Создаем ограничения по выбранным полям.
Теорема CAP
знать и уметь рассказать:
• oткуда возникли NoSQL базы
• что такое Partition Tolerance
• CAP теорема • BASE
Проблемы миграции
разобраться в видах миграции;
узнать основные проблемы миграции;
решить проблемы, возникшие при миграции.
Семинар: проектирование
рассказать о своем проекте;
получить фидбэк от коллег и преподавателя.
PostgreSQL
Внутренняя архитектура СУБД PostgreSQL
настроить СУБД, влияющие на ее производительность.
Домашние задания: 1
ДЗ
Установка СУБД PostgreSQL. 1. Развернуть контейнер с PostgreSQL или установить СУБД на виртуальную машину.
2. Запустить сервер.
3. Создать клиента с подключением к базе данных postgres через командную строку.
4. Подключиться к серверу используя pgAdmin или другое аналогичное приложение.
DDL: создание, изменение и удаление объектов в PostgreSQL
создавать и редактировать объекты БД в СУБД PostgreSQL.
Домашние задания: 1
ДЗ
DDL скрипты для postgres. Используя операторы DDL создайте на примере имеющейся схемы интернет-магазина:
1. Базу данных.
2. Табличные пространства и роли.
3. Схему данных.
4. Таблицы своего проекта, распределив их по схемам и
табличным пространствам.
DML: вставка, обновление, удаление, выборка данных
использовать различные способы выборки данных из одной и нескольких таблиц;
использовать нужный тип JOIN и различные условия в WHERE.
Домашние задания: 1
ДЗ
DML в PostgreSQL. 1. Напишите запрос по своей базе с регулярным выражением, добавьте пояснение, что вы хотите найти.
2. Напишите запрос по своей базе с использованием LEFT JOIN и INNER JOIN, как порядок соединений в FROM влияет на результат? Почему?
3. Напишите запрос с обновлением данные используя UPDATE FROM.
4. Напишите запрос для удаления данных с оператором DELETE используя join с другой таблицей с помощью using.
5. Приведите пример использования утилиты COPY
DML: агрегация и сортировка, CTE, аналитические функции
группировать и сортировать данные и использовать групповые функции.
8 июня, 20:00 — 21:30
Лектор: Михаил Ржевский
Типы данных в PostgreSQL
разбираться в многообразии типов данных;
использовать встроенные функции для работы с типами данных;
использовать различные типы данных Postgres;
создавать свои типы данных.
11 июня, 20:00 — 21:30
Лектор: Виктор Коробков
Транзакции, MVCC, ACID
разбираться в уровнях изоляции транзакций;
избегать взаимных блокировок;
разбираться в различных видах блокировок;
строить транзакции в PostgreSQL.
15 июня, 20:00 — 21:30
Лектор: Алексей Цыкунов
Индексы
разобраться в типах индексов, плюсах и минусах;
создавать, удалять и мониторить индексы для оптимизации БД.
18 июня, 20:00 — 21:30
Лектор: Виктор Коробков
Хранимые процедуры и триггеры
использовать хранимые процедуры и функций для оптимизации работы с БД.
22 июня, 20:00 — 21:30
Лектор: Михаил Ржевский
Оптимизация производительности. Профилирование. Мониторинг
определять узкие места базы, оптимизировать и профилировать запросы.
25 июня, 20:00 — 21:30
Лектор: Олег Филиппов
Резервное копирование и восстановление
делать бэкап и затем восстанавливаться с него.
29 июня, 20:00 — 21:30
Лектор: Леонид Альбрехт
Репликация
создать реплику базы;
сделать ручное переключение ролей;
переключится после фэйловера;
настроить архивацию логов.
2 июля, 20:00 — 21:30
Лектор: Леонид Альбрехт
Кластеризация: patroni
построить отказоустойчивый кластер с помощью patroni.
6 июля, 20:00 — 21:30
Лектор: Леонид Альбрехт
OLAP: Postgres + pentaho
9 июля, 20:00 — 21:30
Лектор: Михаил Ржевский
MySQL
Внутренняя архитектура СУБД MySQL
настроить СУБД, влияющие на ее производительность.
13 июля, 20:00 — 21:30
Лектор: Алексей Цыкунов
Домашние задания: 1
ДЗ
создаем базу данных в докере. 1) забрать стартовый репозиторий https://github.com/erlong15/otus-mysql-docker
2) прописать sql скрипт для создания своей БД в init.sql
3) проверить запуск и работу контейнера следую описанию в репозитории
4) прописать кастомный конфиг - настроить innodb_buffer_pool и другие параметры по желанию
*) протестить сисбенчем - результат теста приложить в README
DDL: создание, изменение и удаление объектов в MySQL
создавать, модифицировать и удалять тейблспейсы, таблицы, пользователей;
настраивать политики безопасности.
23 июля, 20:00 — 21:30
Лектор: Антон Никифоров
Типы данных в MySQL
правильно выбирать типы данных для своих структур;
использовать функции для работы с определенными типами данных.
27 июля, 20:00 — 21:30
Лектор: Антон Никифоров
Домашние задания: 1
ДЗ
Типы данных. 1) реализовать партиционирование на одной из таблиц, в README обосновать выбор модели партиционирования и его необходимость, предусмотреть вариант добавления новых партиций
2) проанализировать типы данных в своем проекте, изменить при необходимости. В README указать что на что поменялось и почему.
3) добавить тип JSON в структуру. Проанализировать какие данные могли бы там хранится. привести примеры SQL для добавления записей и выборки.
DML: вставка, обновление, удаление, выборка данных
использовать различные способы выборки данных из одной и нескольких таблиц;
использовать нужный тип JOIN и различные условия в WHERE.
30 июля, 20:00 — 21:30
Лектор: Антон Никифоров
Домашние задания: 1
ДЗ
SQL выборка. 1. Напишите запрос по своей базе с inner join
2. Напишите запрос по своей базе с left join
3. Напишите 5 запросов с WHERE с использованием разных
операторов, опишите для чего вам в проекте нужна такая выборка данных
Транзакции, MVCC, ACID
разбираться в уровнях изоляции транзакций;
избегать взаимных блокировок;
разбираться в различных видах блокировок;
строить транзакции в mysql.
3 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Транзакции.. 1) Описать пример транзакции из своего проекта с изменением данных в нескольких таблицах. Реализовать в виде хранимой процедуры.

2) Загрузить данные из приложенных в материалах csv.
Реализовать следующими путями:
- LOAD DATA
- mysqlimport

*) реализовать загрузку через fifo
DML: агрегация и сортировка
группировать и сортировать данные и использовать групповые функции.
6 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создаем отчетную выборку. предоставить следующий результат
- база с данными в докере
- группировки с ипользованием CASE, HAVING, ROLLUP, GROUPING()
- все запросы упаковать во view
для магазина к предыдущему списку продуктов добавить максимальную и минимальную цену и кол-во предложений
также сделать выборку показывающую самый дорогой и самый дешевый товар в каждой категории
сделать rollup с количеством товаров по категориям
Индексы
разобраться в типах индексов, плюсах и минусах;
создавать, удалять и мониторить индексы для оптимизации БД.
10 августа, 20:00 — 21:30
Лектор: Алексей Цыкунов
Домашние задания: 1
ДЗ
Индексы. Задача - сделать полнотекстовый индекс, который ищет по свойствам, названию товара и описанию
в README представить запрос для тестирования

анализируем свой проект - добавляем или обновляем индексы
в README пропишите какие индексы были изменены или добавлены
explain и результаты выборки без индекса и с индексом
CTE и аналитические функции
строить сложные отчетные запросы с применением CTE и аналитических функций.
13 августа, 20:00 — 21:30
Лектор: Евгений Аристов
Хранимые процедуры и триггеры
использовать хранимые процедуры и функций для оптимизации работы с БД.
17 августа, 20:00 — 21:30
Лектор: Михаил Ржевский
Домашние задания: 1
ДЗ
Добавляем в базу хранимые процедуры и триггеры. - Создать пользователей client, manager.
- Создать процедуру выборки товаров с использованием различных фильтров: категория, цена, производитель, различные дополнительные параметры
Также в качестве параметров передавать по какому полю сортировать выборку, и параметры постраничной выдачи
- дать права да запуск процедуры пользователю client

- Создать процедуру get_orders - которая позволяет просматривать отчет по продажам за определенный период (час, день, неделя)
с различными уровнями группировки (по товару, по категории, по производителю)
- права дать пользователю manager
Оптимизация производительности. Профилирование. Мониторинг
определять узкие места базы;
оптимизировать и профилировать запросы.
20 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Анализ и профилирование запроса. возьмите сложную выборку из предыдущих ДЗ с несколькими join и подзапросами
постройте EXPLAIN в 3 формата
оцените план прохождения запроса, найдите самые тяжелые места
попробуйте оптимизировать запрос (можно использовать индексы, хинты, сбор статистики, гистограммы)
все действия и результаты опишите в README.md
Резервное копирование и восстановление
делать бэкап и затем восстанавливаться с него.
24 августа, 20:00 — 21:30
Лектор: Алексей Цыкунов
Домашние задания: 1
ДЗ
востановить таблицу из бэкапа. в материалах приложен файл бэкапа backup.xbstream.gz.des3 и дамп структуры базы otus - otus-db.dmp
бэкап был выполнен с помощью команды
xtrabackup --databases='otus' --backup --stream=xbstream | gzip - | openssl des3 -salt -k "password" > backup.xbstream.gz.des3

требуется восстановить таблицу otus.articles из бэкапа
Репликация
построить репликацию;
использовать proxySQL для балансировки;
использовать оркестрацию;
переключать реплики.
27 августа, 20:00 — 21:30
Лектор: Евгений Аристов
Домашние задания: 1
ДЗ
Спрогнозировать рост данных и спроектировать модель хранения и архивации. Формируем документ в котором описываем
- прогноз по возможному росту базы
* рост данных
* рост количества пользователей
* всплески одновременных соединений

- описываем возможные угрозы и методы защиты от них
* предлагаем стратегии бэкапа
- репликации
- кластеризации
Кластеры MySQL: Galera, Innodb cluster
построить несколько видов MySQL кластеров: Galera, InnoDB Cluster.
31 августа, 20:00 — 21:30
Лектор: Евгений Аристов
MySQL NDB Cluster - шардинг
построить NDB cluster.
3 сентября, 20:00 — 21:30
Лектор: Антон Никифоров
NoSQL (Redis, Tarantool, MongoDB, Cassandra)
NoSQL: Redis
объяснять, когда и для каких целей имеет смысл использовать NoSQL;
применять Redis.
14 сентября, 20:00 — 21:30
Работа с tarantool
рассмотреть основы работы с СУБД tarantool;
рассмотреть архитектуру, возможности;
строить высоконапряженные решения на ее базе.
17 сентября, 20:00 — 21:30
Базовые возможности mongodb
21 сентября, 20:00 — 21:30
Лектор: Евгений Аристов
Кластерные возможности mongodb
шардировать в mongodb: mongos;
правильно выбрать ключ шардирования.
24 сентября, 20:00 — 21:30
Лектор: Евгений Аристов
map-reduce framework
28 сентября, 20:00 — 21:30
Лектор: Евгений Аристов
Оптимизация производительности mongodb
построить индексов.
оптимизировать CRUD.
1 октября, 20:00 — 21:30
Лектор: Евгений Аристов
Утилиты mongodb
настроить mongodb;
мониторить mongodb;
обеспечить безопасность кластера;
обеспечить бэкапа.
5 октября, 20:00 — 21:30
Лектор: Евгений Аристов
Домашние задания: 1
ДЗ
Домашняя работа.
Архитектура и применение cassandra
8 октября, 20:00 — 21:30
Язык запросов cassandra
12 октября, 20:00 — 21:30
Масштабирование и отказоустойчивость cassandra. Часть 1
выборать replication factor;
выбирать уровнь консистентности.
15 октября, 20:00 — 21:30
Масштабирование и отказоустойчивость cassandra. Часть 2
19 октября, 20:00 — 21:30
Средства мониторинга cassandra
настроить grafana для мониторинга cassandra.
22 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реализовать отказоустойчивую систему учета действий пользователей сайта - логин, логаут, переход по страницам. Получить возможность быстрого чтения лога действий..
Проект итоговый
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
29 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проект.
Защита проектных работ
защитить проект и получить рекомендации экспертов.
2 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектная работа.
Подведение итогов курса
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
16 ноября, 20:00 — 21:30

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

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

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

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.
🎁 Дарим сертификаты на скидку!
Запишитесь на июньскую трансляцию интересного вам дня открытых дверей и участвуйте в Акции ➞