Про качество и красоту кода говорят и пишут очень многие, хотя при этом довольно часто забывают, для чего существует это качество и эта красота.
Двадцать второй онлайн митап Software Craftsmanship будет посвящен Engineering Excellence. мы рассмотрим что такое Engineering Excellence, кому и для чего оно нужно на проекте, из каких частей состоит и как определить что нужно конкретному проекту.
На митапе мы рассмотрим взаимосвязь разработчиков, тестировщиков, девопсов, разберем метрики, практики и процессы необходимы для постоянного улучшения проекта.
Software craftsmanship meetup 21: CQRS что такое и для чего Pavel Veinik
Мы рассмотрим что такое CQRS, какие проблемы он может решить и какие проблемы создать, а также сопутствующие подходы и приемы, такие как event sourcing, предагрегация данных для чтения, использование in memory баз данных. Также разберем ситуации, в которых выгодно использовать CQRS, и назовем несколько систем, в которых он используется.
Также разберем вопросы data consistency в CQRS-архитектурах, и другие возникающие проблемы.
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Pavel Veinik
Рассмотрим обеспечение транзакционности в микросервисах, от “транзакционной” отправки сообщений до “транзакционного” обновления данных в нескольких микросервисах. Рассмотрим и соответствующие типовые решения - шаблон Transactional outbox, двухфазные транзакции, а также шаблон Saga вместе с компенсирующими транзакциями.
СИ — это способ построить успешную систему и объединить всех людей на проекте в одно целое для продуктивного решения задачи любой сложности. Это неотъемлемая часть грамотного руководства проектом, именно поэтому по статистике зарплаты системных инженеров самые высокие в любой отрасли и IT не является исключением.
какие бывают типы микросервисных архитектур (распределенный монолит, слои микросервисов, feature-based микросервисы) и как именно микросервисы взаимодействуют друг с другом в рамках того или иного типа.
Software craftsmanship 16: online building ml pipelinePavel Veinik
16й митап Software Craftsmanship пройдет онлайн и будет посвящен построению ML pipeline с точки зрения инженера-разработчика.
В последние год-два все чаще появляются вакансии, в которых инженеру необходимо выстроить ML pipeline. Такие вакансии получают название ML Ops.
В ML pipeline входят такие вещи, как построение моделей, хранение, сравнение качества моделей, поддержание версионность моделей, работа с feature storage, и само собой разумеется, применение модели в prod.
Модель обычно оформляется как микросервис, который можно просто разворачивать, масштабировать и поддерживать.
При этом, как правило, другими членами команды оказываются data scientists или ML engineers, которые сильны в своих областях, но не могут сделать простой масштабируемый REST API для своей модели. В рамках совместной работы с ними и приходится реализовывать ML pipeline.
На митапе мы коснемся того, для чего необходим ML pipeline, из каких шагов он состоит, и каким образом организована работа инженера в ML команде.
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
Мы возобновляем после перерыва митапы Software Craftsmanship, и наш пятнадцатый митап будет посвящен надежности и устойчивости систем. Мы разберем stability, reliability, fault-tolerance, availability, resilience, узнаем как они связаны друг с другом и как можно их измерять, а также как разрабатывать устойчивые и надежные программы.
Также мы сформулируем принципы создания надежных систем, паттерны и антипаттерны надежности и устойчивости, отдельное внимание уделим устойчивости микросервисов в облаке.
План митапа:
Stability, reliability, fault-tolerance, availability, resilience, их связь и отличия
Архитектура и шаблоны availability
Шаблоны resilience
Техники fault tolerance
Устойчивости и надежность в облаке
Про качество и красоту кода говорят и пишут очень многие, хотя при этом довольно часто забывают, для чего существует это качество и эта красота.
Двадцать второй онлайн митап Software Craftsmanship будет посвящен Engineering Excellence. мы рассмотрим что такое Engineering Excellence, кому и для чего оно нужно на проекте, из каких частей состоит и как определить что нужно конкретному проекту.
На митапе мы рассмотрим взаимосвязь разработчиков, тестировщиков, девопсов, разберем метрики, практики и процессы необходимы для постоянного улучшения проекта.
Software craftsmanship meetup 21: CQRS что такое и для чего Pavel Veinik
Мы рассмотрим что такое CQRS, какие проблемы он может решить и какие проблемы создать, а также сопутствующие подходы и приемы, такие как event sourcing, предагрегация данных для чтения, использование in memory баз данных. Также разберем ситуации, в которых выгодно использовать CQRS, и назовем несколько систем, в которых он используется.
Также разберем вопросы data consistency в CQRS-архитектурах, и другие возникающие проблемы.
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Pavel Veinik
Рассмотрим обеспечение транзакционности в микросервисах, от “транзакционной” отправки сообщений до “транзакционного” обновления данных в нескольких микросервисах. Рассмотрим и соответствующие типовые решения - шаблон Transactional outbox, двухфазные транзакции, а также шаблон Saga вместе с компенсирующими транзакциями.
СИ — это способ построить успешную систему и объединить всех людей на проекте в одно целое для продуктивного решения задачи любой сложности. Это неотъемлемая часть грамотного руководства проектом, именно поэтому по статистике зарплаты системных инженеров самые высокие в любой отрасли и IT не является исключением.
какие бывают типы микросервисных архитектур (распределенный монолит, слои микросервисов, feature-based микросервисы) и как именно микросервисы взаимодействуют друг с другом в рамках того или иного типа.
Software craftsmanship 16: online building ml pipelinePavel Veinik
16й митап Software Craftsmanship пройдет онлайн и будет посвящен построению ML pipeline с точки зрения инженера-разработчика.
В последние год-два все чаще появляются вакансии, в которых инженеру необходимо выстроить ML pipeline. Такие вакансии получают название ML Ops.
В ML pipeline входят такие вещи, как построение моделей, хранение, сравнение качества моделей, поддержание версионность моделей, работа с feature storage, и само собой разумеется, применение модели в prod.
Модель обычно оформляется как микросервис, который можно просто разворачивать, масштабировать и поддерживать.
При этом, как правило, другими членами команды оказываются data scientists или ML engineers, которые сильны в своих областях, но не могут сделать простой масштабируемый REST API для своей модели. В рамках совместной работы с ними и приходится реализовывать ML pipeline.
На митапе мы коснемся того, для чего необходим ML pipeline, из каких шагов он состоит, и каким образом организована работа инженера в ML команде.
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
Мы возобновляем после перерыва митапы Software Craftsmanship, и наш пятнадцатый митап будет посвящен надежности и устойчивости систем. Мы разберем stability, reliability, fault-tolerance, availability, resilience, узнаем как они связаны друг с другом и как можно их измерять, а также как разрабатывать устойчивые и надежные программы.
Также мы сформулируем принципы создания надежных систем, паттерны и антипаттерны надежности и устойчивости, отдельное внимание уделим устойчивости микросервисов в облаке.
План митапа:
Stability, reliability, fault-tolerance, availability, resilience, их связь и отличия
Архитектура и шаблоны availability
Шаблоны resilience
Техники fault tolerance
Устойчивости и надежность в облаке
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Двенадцатый митап Software Craftsmanship пройдет онлайн и будет посвящен высоконагруженным системам. Мы систематизирует инструменты, применяемые для разработки архитектуры высоконагруженных приложений, опишем базовый алгоритм из 6 шагов проектирования нагруженной системы.
Также мы рассмотрим 3 примера нагруженных приложений - клиент для участия в Real Time Bidding аукционах, поисковик вместе с краулером для него, чат.
Мы коснемся опасностей, которые подстерегают новичков и опытных архитекторов.
Кроме того, рассмотрим подходы к построению высоконагруженных систем в стартапе и в сервисной компании.
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
Мы рассмотрим вопросы продуктивности, как командная работа и менеджеры влияют на продуктивность, как связаны оценки и эффективность решений разработчика, почему работа программиста является творческой, и как грамотно использовать инструменты тайм-менеджмента.
На десятом митапе Software Craftsmanship мы рассмотрим такую сложную тему, как распределенные транзакции. Мы увидим, почему возникает необходимость в распределенных транзакциях и какие бывают протоколы для реализации распределенных транзакций.
Микросервисная архитектура часто влечет за собой распределенные транзакции, и поэтому мы поговорим о том, как можно делать отдельные микросервисы максимально независимыми между собой.
Распределенные транзакции сложны эксплуатации, поэтому мы рассмотрим также и подходы, которые позволяют минимизировать или обойти необходимость в них, в то же время сохраняя необходимые бизнесу свойства приложения.
Software craftsmanship фиксит проблемы AgilePavel Veinik
На 6м митапе мы подойдем к проблеме говна со стороны команды и процессов, а не со стороны технологий и архитектуры, и рассмотрим поближе, чем и как нам могут помочь принципы Software Craftsmanship. Мы увидим, что суть всех процессов - это коммуникации, а суть коммуникации - это настроенные каналы передачи информации. Мы рассмотрим, как настраивать эти каналы передачи информации, и увидим, что процессы - это отношения между людьми, прописанные на бумаге.
Программирование и лингвистика: как понять язык и извлечь знания из текстовPavel Veinik
Knowledge extraction с помощью open source java технологий - что это такое, как, и для чего? На примере реального проекта докладчик расскажет о том, как создать систему извлечения знаний и как с ее помощью получать полный и минимальный обзор событий в интересующих областях.
Человеческий фактор в разработке, или ORM на noSql через JPA.Pavel Veinik
Зачем переводить работающий проект с RDBMS на noSql? Как это сделать, и как это нельзя делать? Что важнее для успеха пректа - технологическое преимущество или доверительные отношения в команде? Какова роль процесса в успехе проекта и что бывает, когда каждый член команды действует в соответствии со своими локальными интересами.
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
Каждый развивающий бизнес на определенном этапе своего жизненного цикла сталкивается с задачей масштабирования. Для монолитного приложения эта задача может оказаться сложнее, чем написать с нуля масштабируемую систему - потому что нужно учитывать миграцию данных и пользователей, а также недостаточные ресурсы.
Мы попытаемся понять, в каких случаях монолит распиливать стоит, а когда можно применить более простые подходы. Рассмотрим преимущества и недостатки монолитной архитектуры и микросервисной. Разберем несколько стратегий распиливания монолита, а также аспекты, которые необходимо учесть во время этого процесса.
Двенадцатый митап Software Craftsmanship пройдет онлайн и будет посвящен высоконагруженным системам. Мы систематизирует инструменты, применяемые для разработки архитектуры высоконагруженных приложений, опишем базовый алгоритм из 6 шагов проектирования нагруженной системы.
Также мы рассмотрим 3 примера нагруженных приложений - клиент для участия в Real Time Bidding аукционах, поисковик вместе с краулером для него, чат.
Мы коснемся опасностей, которые подстерегают новичков и опытных архитекторов.
Кроме того, рассмотрим подходы к построению высоконагруженных систем в стартапе и в сервисной компании.
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
Мы рассмотрим вопросы продуктивности, как командная работа и менеджеры влияют на продуктивность, как связаны оценки и эффективность решений разработчика, почему работа программиста является творческой, и как грамотно использовать инструменты тайм-менеджмента.
На десятом митапе Software Craftsmanship мы рассмотрим такую сложную тему, как распределенные транзакции. Мы увидим, почему возникает необходимость в распределенных транзакциях и какие бывают протоколы для реализации распределенных транзакций.
Микросервисная архитектура часто влечет за собой распределенные транзакции, и поэтому мы поговорим о том, как можно делать отдельные микросервисы максимально независимыми между собой.
Распределенные транзакции сложны эксплуатации, поэтому мы рассмотрим также и подходы, которые позволяют минимизировать или обойти необходимость в них, в то же время сохраняя необходимые бизнесу свойства приложения.
Software craftsmanship фиксит проблемы AgilePavel Veinik
На 6м митапе мы подойдем к проблеме говна со стороны команды и процессов, а не со стороны технологий и архитектуры, и рассмотрим поближе, чем и как нам могут помочь принципы Software Craftsmanship. Мы увидим, что суть всех процессов - это коммуникации, а суть коммуникации - это настроенные каналы передачи информации. Мы рассмотрим, как настраивать эти каналы передачи информации, и увидим, что процессы - это отношения между людьми, прописанные на бумаге.
Программирование и лингвистика: как понять язык и извлечь знания из текстовPavel Veinik
Knowledge extraction с помощью open source java технологий - что это такое, как, и для чего? На примере реального проекта докладчик расскажет о том, как создать систему извлечения знаний и как с ее помощью получать полный и минимальный обзор событий в интересующих областях.
Человеческий фактор в разработке, или ORM на noSql через JPA.Pavel Veinik
Зачем переводить работающий проект с RDBMS на noSql? Как это сделать, и как это нельзя делать? Что важнее для успеха пректа - технологическое преимущество или доверительные отношения в команде? Какова роль процесса в успехе проекта и что бывает, когда каждый член команды действует в соответствии со своими локальными интересами.
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 типов ивентов
Оплата по ивентам показа