2. Зачем митапы?
Поделиться с разработчиками Splitmetrics
Поделиться со всеми разработчиками
Обкатать новый курс для техлидов
Пообщаться
3. Для кого митапы?
Для разработчиков
Для тестировщиков
Для сочувствующих и интересующихся
4. Нас сегодня много
Зарегистрировались 102 человека, потом
закрыли регистрацию
Мы рады, но мало места
Отправили отказы всем неразработчикам (
Подумаем как решать
5. План митапов
1. Software Craftsmanship & Agile.
Как не делать говно?
2. Принципы хранения данных
3. Обзор баз данных
4. Очереди сообщений
5. Кэши и файловые хранилища
6. План этого митапа
1. Типы баз данных
2. Нормализация
3. Критерии выбора для проекта
4. Задачки на архитектуру
7. Не план этого митапа
microservices
Distributed transactions
Neo4j, Clickhouse, MySQL, CitusDB…
Стоимость хостинга, DB as a Service
Мы учтем эти темы позже, и найдем интересных
спикеров по нюансам
8. Типы баз данных
Relational DBMS
Document storage
Key-value store
Column-based store
Time series DBMS
Graph DBMS
Object oriented
RDF store
Search engine
XML DBMS
Event stores
Wide column store
13. Первая НФ
Термины реляционной алгебры
Не все )
Каждый атрибут (поле) отношения (таблицы)
должен хранить только одно значение
Не список
Не кортеж
15. Первая НФ
Наим. Город Адрес Эл. почта WWW Вид Конт. лица
Поршневой
з-д
Владимир Ул. 2-я Кольцевая, 17 info@plunger.ru www.plunger.ru Поставщик Иванов И.И., зам. дир., тел
(3254)76-15-95
Петров П.П., нач. отд. сбыта, тел
(3254)76-15-35
ООО
Вымпел
Курск Ул. Гоголя, 25 pennon@mail.ru Клиент Сидоров С.С., директор, тел.
(7634)66-65-38
ИЧП Альфа Владимир Ул. Пушкинская, 37, оф.
565
alpha323@list.ru Клиент Васильев В.В., директор, тел
(3254)74-57-45
Наим. Город Адрес Эл. почта WWW Вид Должность Ф.И.О. Код города Тел.
Поршневой з-
д
Владимир Ул. 2-я
Кольцевая, 17
info@plunger
.ru
www.plunger.
ru
Поставщик зам. дир. Иванов И.И. 3254 76-15-95
Поршневой з-
д
Владимир Ул. 2-я
Кольцевая, 17
info@plunger
.ru
www.plunger.
ru
Поставщик нач. отд.
сбыта
Петров П.П., 3254 76-15-35
ООО Вымпел Курск Ул. Гоголя, 25 pennon@mai
l.ru
Клиент директор Сидоров С.С. 7634 66-65-38
ИЧП Альфа Владимир Ул. Пушкинская,
37, оф. 565
alpha323@lis
t.ru
Клиент директор Васильев В.В. 3254 74-57-45
16. Вторая НФ
Отношение находится в 1ой НФ
Каждый неключевой атрибут полностью зависит
от ключа целиком, а не от части ключа
Понятие «зависит» включает в себя транзитивные
зависимости
Если ключ не составной, то 1НФ = 2НФ
18. Вторая НФ
Наим. Город Адрес Эл. почта WWW Вид Должность Ф.И.О. Тел.
Поршневой з-д Владимир Ул. 2-я
Кольцевая, 17
info@plunger.ru www.plunger.ru Поставщик зам. дир. Иванов И.И. 76-15-95
Поршневой з-д Владимир Ул. 2-я
Кольцевая, 17
info@plunger.ru www.plunger.ru Поставщик нач. отд.
сбыта
Петров П.П., 76-15-35
ООО Вымпел Курск Ул. Гоголя, 25 pennon@mail.ru Клиент директор Сидоров С.С. 66-65-38
ИЧП Альфа Владимир Ул.
Пушкинская,
37, оф. 565
alpha323@list.ru Клиент директор Васильев В.В. 74-57-45
Наим. Город Адрес Эл. почта WWW Вид Должность Ф.И.О. Код города Тел.
Поршневой з-
д
Владимир Ул. 2-я
Кольцевая, 17
info@plunger
.ru
www.plunger.
ru
Поставщик зам. дир. Иванов И.И. 3254 76-15-95
Поршневой з-
д
Владимир Ул. 2-я
Кольцевая, 17
info@plunger
.ru
www.plunger.
ru
Поставщик нач. отд.
сбыта
Петров П.П., 3254 76-15-35
ООО Вымпел Курск Ул. Гоголя, 25 pennon@mai
l.ru
Клиент директор Сидоров С.С. 7634 66-65-38
ИЧП Альфа Владимир Ул. Пушкинская,
37, оф. 565
alpha323@lis
t.ru
Клиент директор Васильев В.В. 3254 74-57-45
Город Код города
Владимир 3254
Курск 7634
21. Третья НФ
Наим. Город Адрес Эл. почта WWW Вид
Поршневой з-д Владимир Ул. 2-я Кольцевая, 17 info@plunger.ru www.plunger.ru Поставщик
ООО Вымпел Курск Ул. Гоголя, 25 pennon@mail.ru Клиент
ИЧП Альфа Владимир Ул. Пушкинская, 37, оф.
565
alpha323@list.ru Клиент
Наим. Город Адрес Эл. почта WWW Вид Должность Ф.И.О. Тел.
Поршневой з-д Владимир Ул. 2-я
Кольцевая, 17
info@plunger.ru www.plunger.ru Поставщик зам. дир. Иванов И.И. 76-15-95
Поршневой з-д Владимир Ул. 2-я
Кольцевая, 17
info@plunger.ru www.plunger.ru Поставщик нач. отд.
сбыта
Петров П.П., 76-15-35
ООО Вымпел Курск Ул. Гоголя, 25 pennon@mail.ru Клиент директор Сидоров С.С. 66-65-38
ИЧП Альфа Владимир Ул.
Пушкинская,
37, оф. 565
alpha323@list.ru Клиент директор Васильев В.В. 74-57-45
Наим. Город Ф.И.О. Должность Тел.
Поршневой з-д Владимир Иванов И.И. зам. дир. 76-15-95
Поршневой з-д Владимир Петров П.П., нач. отд. сбыта 76-15-35
ООО Вымпел Курск Сидоров С.С. директор 66-65-38
ИЧП Альфа Владимир Васильев В.В. директор 74-57-45
22. НФ Бойса-Кодда
Отношение находится в 3 НФ
Каждая зависимость атрибутов имеет в
качестве главной части некоторый
потенциальный ключ
Потенциальный ключ – набор атрибутов,
уникально и минимально определяющие
кортеж (строку)
24. НФ Бойса-Кодда
Номер корта Время начала Время окончания Тариф
1 09:30 10:30 «Корт 1 для членов клуба»
1 11:00 12:00 «Корт 1 для членов клуба»
1 14:00 15:30 «Корт 1 для не членов клуба»
2 10:00 11:30 «Корт 2 для не членов клуба»
2 11:30 13:30 «Корт 2 для не членов клуба»
2 15:00 16:30 «Корт 2 для членов клуба»
Потенциальные ключи
Номер корта, время начала
Номер корта, время окончания
Тариф, время начала
Тариф, время окончания
25. НФ Бойса-Кодда
Номер корта Время начала Время окончания Тариф
1 09:30 10:30 «Корт 1 для членов клуба»
1 11:00 12:00 «Корт 1 для членов клуба»
1 14:00 15:30 «Корт 1 для не членов клуба»
2 10:00 11:30 «Корт 2 для не членов клуба»
2 11:30 13:30 «Корт 2 для не членов клуба»
2 15:00 16:30 «Корт 2 для членов клуба»
Тариф Номер корта Для членов клуба
«Корт 1 для членов клуба» 1 Да
«Корт 1 для не членов клуба» 1 Нет
«Корт 2 для членов клуба» 2 Да
«Корт 2 для не членов клуба» 2 Нет
Тариф Время начала Время окончания
«Корт 1 для членов клуба» 09:30 10:30
«Корт 1 для членов клуба» 11:00 12:00
«Корт 1 для не членов клуба» 14:00 15:30
«Корт 2 для не членов клуба» 10:00 11:30
«Корт 2 для не членов клуба» 11:30 13:00
«Корт 2 для членов клуба» 15:00 16:30
26. Четвертая НФ
Отношение находится в НФ Б-К
В отношении есть только одна зависимость
многие-ко-многим
Нестрогое определение
Но позволяет избегать проблем
28. Четвертая НФ
Товар Категория Поставщик
Пылесос Электротовары ООО "Электроника"
Пылесос Электротовары ЗЛО "Техника для дома"
Пылесос Бытовая техника ООфО "Электроника"
Пылесос Бытовая техника ЗАО "Техника для дома"
Планшет Компьютеры ООО "Компьютер и ты"
Планшет Компьютеры ООО "Электроника"
Товар Категория
Пылесос Электротовары
Пылесос Бытовая техника
Планшет Компьютеры
Товар Поставщик
Пылесос ООО "Электроника"
Пылесос ЗАО "Техника для дома"
Планшет ООО "Компьютер и ты"
Планшет ООО "Электроника"
29. Пятая НФ
Отношение находится в 4 НФ
В отношении есть только одна зависимость
многие-ко-многим
Нестрогое определение
Любую структуру можно привести к 5 НФ
31. Пятая НФ
Продавец Фирма Товар
Иванов Рога и Копыта Пылесос
Иванов Рога и Копыта Хлебница
Петров Безенчук&Ко Сучкорез
Петров Безенчук&Ко Пылесос
Петров Безенчук&Ко Хлебница
Петров Безенчук&Ко Зонт
Сидоров Безенчук&Ко Пылесос
Сидоров Безенчук&Ко Телескоп
Сидоров Рога и Копыта Пылесос
Сидоров Рога и Копыта Лампа
Сидоров Геркулес Вешалка
Продавец продает определенные товары
определенных фирм
Как это указать на уровне стр-ры бд?
32. Пятая НФ
Продавец Товар
Иванов Пылесос
Иванов Хлебница
Петров Сучкорез
Петров Пылесос
Петров Хлебница
Петров Зонт
Сидоров Телескоп
Сидоров Пылесос
Сидоров Лампа
Сидоров Вешалка
Продавец Фирма
Иванов Рога и Копыта
Петров Безенчук&Ко
Сидоров Безенчук&Ко
Сидоров Рога и Копыта
Сидоров Геркулес
Фирма Товар
Рога и Копыта Пылесос
Рога и Копыта Хлебница
Рога и Копыта Лампа
Безенчук&Ко Сучкорез
Безенчук&Ко Пылесос
Безенчук&Ко Хлебница
Безенчук&Ко Зонт
Безенчук&Ко Телескоп
Геркулес Вешалка
33. Доменно-ключевая НФ
Отношение находится в 5 НФ
Если в отношении нет аномалий модификации
Чтобы ни менялось, ничего не потеряется, если
соблюдены все ограничения ключей и типов
Нет формального способ привести к ДКНФ
Не любую структуру можно привести к ДКНФ
34. Шестая НФ
Не может быть декомпозирована дальше без
потерь
Если отношение в 6 НФ, то оно обязательно и в 5
НФ
Любую структуру можно привести к 6 НФ
40. Выбор бд. Еще кое-что.
Насколько фиксирована структура ваших данных?
Планируете ли вы ORM?
Насколько технологии в вашей компании
унифицированы между командами/отделами?
Зоопарк = больше рисков
41. Выбор бд. Еще кое-что.
Как вы планируете обрабатывать ваши данные?
Много ли сложных отчетов? Много ли join?
Бд предагрегированных отчетов?
Облачные бд?
Поддержка. Любите ли вы DevOps?
Бэкапы. Не забудьте проводить учения.
Не забудьте посмотреть benchmarks.
42. Если у вас молодой стартап
или вы делаете MVP/PoC
Реляционная бд – лучший выбор почти всегда
Пока немного данных
Проста в использовании, поддержке
Просто обновлять код!
Легко найти разработчиков
Все равно вы все переделаете раз 100
43. Задача 1
Система, которая принимает участие в RTB
Конфигурация должна меняться через UI и
храниться в бд
1000 аукционов в секунду
5 типов ивентов
Оплата по ивентам показа