Software Craftsmanship
meetup #2
Сложность алгоритмов.
Принципы хранения данных.
Павел Вейник
CTO @ Splitmetrics
CEO @ Hard & Soft Skills
Зачем митапы?
Поделиться с разработчиками Splitmetrics
Поделиться со всеми разработчиками
Обкатать новый курс для техлидов
Пообщаться
Для кого митапы?
Для разработчиков
Для тестировщиков
Для сочувствующих и интересующихся
Что если я чего-то не знаю?
Ничего страшного, мы расскажем
Вообще, можно спросить у меня или у коллег
Все будет хорошо
План митапов
1. Software Craftsmanship & Agile.
Как не делать говно?
2. Принципы хранения данных
3. Обзор баз данных
4. Очереди сообщений
5. Кэши и файловые хранилища
План этого митапа
1. Алгоритмическая сложность
2. ACID vs BASE
3. И теорема CAP
4. Примеры применения ACID и BASE
5. 2 простых задания на архитектуру
Время cpu vs память
Найти x в массиве
Перебор
Поиск в отсортированном массиве
Хранение флага для любого x
Зачем это знать?
Нотация O(n)
чтобы понимать сколько лет будет работать ваш
алгоритм
Почему сразу лет?
Базы данных. Транзакция.
Логическая единица работы с данными
Либо вся выполнена
Либо вся не выполнена
ACID
 Atomicity
 Сохраняется или вся транзакция, или ничего
 Consistency
 Транзакция завершается или откат к предыдущему состоянию
 Isolation
 Транзакции изолированы друг от друга
 Durability
 Завершенные транзакции сохраняются
Isolation. Проблемы
Lost update
2 tx -> 1 блок данных
Dirty read
Чтение данных транзакции, которая откатится
Isolation. Проблемы
Non-repeatable read
Разные результаты одной и той же выборки. Др
транзакция успела обновить
Phantom read
Разные результаты одной и той же выборки. Др
транзакция успела добавить
Isolation. Уровни
Read uncommited
Допускает dirty reads
Гарантия – нет lost updates
Isolation. Уровни
Read commited
Допускает phantom reads, non-repeatable
reads
Гарантия – защита от dirty reads
MS SQL Server, PostgreSQL, Oracle
По умолчанию
Isolation. Уровни
Repeatable read
Допускает phantom reads
Гарантия – защита от dirty reads, non-
repeatable reads
С помощью блокировки до конца транзакции
Isolation. Уровни
Serializable
Не допускает проблем
Гарантия – защита от dirty reads, non-
repeatable reads, phantom reads
Как будто все транзакции последовательны
Isolation. Уровни
Snapshot – иногда
Каждая транзация в своей «копии бд»
Гарантия – защита от dirty reads, non-
repeatable reads, phantom reads
Как будто все транзакции последовательны,
локи
Isolation. Уровни
Снижают скорость записи в бд
И чтения
Могут возникнуть dead locks (Serializable)
А если много данных?
Как обеспечить ACID, если данных больше,
чем может вместить один сервер?
Как обеспечить ACID, если мы дублируем
данные между разными серверами?
Что будет прочитано?
Теорема CAP
Consistency
Данные не противоречивы во всех узлах в каждый момент
времени
Availability
Отклик системы корректен, но без гарантии совпадения данных в
узлах
Partition Tolerance
Разрезание системы на изолированные куски не приводит к
некорректности отклика
Software craftsmanship 2
Partition Tolerance
Абсолютная необходимость
Выбираем между Consistency и Availability
CP или AP
Теорема PACELC
В случае Partitioning выбираем
между Availability или Consistency
В случае не Partitioning выбираем
между Latency или Consistency
Что с ACID, если CAP?
Как выдержать ACID, если у нас
Partitioning?
Что с ACID, если CAP?
Basically Available
Ответ на любой запрос, но не факт что не ошибочный
Soft State
Несогласованность между узлами даже когда нет обновлений
данных
Eventual Consistency
Рано или поздно система придет в согласованное состояние
после прекращения обновления данных
Software craftsmanship 2
Software craftsmanship 2
Software craftsmanship 2
Примеры
Когда необходим ACID?
Когда можно и BASE?
Задание 1
Спроектировать сокращатель
ссылок
10к новых ссылок в сутки
Хотим жить 10 лет
Задание 2
Спроектировать счетчик
100к событий в день
Хотим жить 10 лет
Отчеты по сайту
Что будет на следующем митапе?
Типы бд
Нормализация данных
Выбор бд для проекта
Приемы для оптимизаций
Ссылки
 https://tproger.ru/articles/computational-complexity-explained/
 http://bigocheatsheet.com/
 https://gist.github.com/jboner/2841832
 https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html
 https://ru.wikipedia.org/wiki/ACID
 https://yizhang82.dev/db-isolation-level
 https://towardsdatascience.com/cap-theorem-and-distributed-database-management-systems-5c2be977950e
 https://en.wikipedia.org/wiki/PACELC_theorem
 https://dzone.com/articles/understanding-the-cap-theorem
 https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed/
Задайте мне вопрос

More Related Content

PPTX
Software craftsmanship 10: распределенные транзакции
PPTX
Software craftsmanship #5 кэши и микросервисы
PPTX
Software craftsmanship meetup #4
PPTX
Software craftsmanship фиксит проблемы Agile
PPTX
Software craftsmanship 7
PPTX
Software craftsmanship 8
PPTX
Software craftsmanship 1
PPTX
Software craftsmanship 16: online building ml pipeline
Software craftsmanship 10: распределенные транзакции
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship meetup #4
Software craftsmanship фиксит проблемы Agile
Software craftsmanship 7
Software craftsmanship 8
Software craftsmanship 1
Software craftsmanship 16: online building ml pipeline

What's hot (20)

PPTX
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
PPTX
Подход и инструменты измерения эффективности процесса разработки или как держ...
PPT
Быстрое масштабирование систем
PDF
Kubernetes is not needed to 90 percents of the companies.rus
PPTX
Software craftsmanship meetup 21: CQRS что такое и для чего
PDF
Микросервисы, чистый PaaS и конкурс Мисс Россия
PPT
вебинар 2601 эффективность интернет магазина
PPT
CCPM Vebinar 21 01 2010
PPTX
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
PPT
CCPM DBR Vebinar 28 01 2010
PPTX
Tdd in the world of big data
PPTX
обзор методов оптимистического управления временем
PPT
PPTX
Software craftsmanship 15 online: Reliability and Resiliency
PDF
микроСЕРВИСЫ: огонь, вода и медные трубы
PPT
Алексей Рыбак (Badoo)
PDF
Микросервисные архитектуры и немного жизненного опыта
PPTX
рентабельный код
PPTX
Software craftsmanship 17: Microservices interaction
PDF
Универсальная методика поиска неисправностей от Cisco TAC Игорь Тумкин
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Подход и инструменты измерения эффективности процесса разработки или как держ...
Быстрое масштабирование систем
Kubernetes is not needed to 90 percents of the companies.rus
Software craftsmanship meetup 21: CQRS что такое и для чего
Микросервисы, чистый PaaS и конкурс Мисс Россия
вебинар 2601 эффективность интернет магазина
CCPM Vebinar 21 01 2010
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
CCPM DBR Vebinar 28 01 2010
Tdd in the world of big data
обзор методов оптимистического управления временем
Software craftsmanship 15 online: Reliability and Resiliency
микроСЕРВИСЫ: огонь, вода и медные трубы
Алексей Рыбак (Badoo)
Микросервисные архитектуры и немного жизненного опыта
рентабельный код
Software craftsmanship 17: Microservices interaction
Универсальная методика поиска неисправностей от Cisco TAC Игорь Тумкин
Ad

Similar to Software craftsmanship 2 (20)

PDF
CAP теорема. Протокол Raft.
PDF
Technopolis.NoSQL 02
PDF
Вы решили написать собственное хранилище, Илья Космодемьянский
PPTX
Monte Carlo modeling in cloud - mc-modeling-sdk
PDF
Базы данных. CAP
PDF
High Load 2009 Imdg Presentation
PPT
phpConf 2010 Классификация систем хранения
PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
PPTX
CAP теорема Брюера и ее применения на практике
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PDF
Вы решили написать собственное хранилище (Илья Космодемьянский)
PDF
Дмитрий Еманов — Под капотом серверного ПО
PPTX
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
PDF
Информационные технологии в эру Больших данных
PPTX
Информационные технологии в эру Больших данных
PDF
Новые возможности распределенной обработки данных в памяти (Coherence)
PDF
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
PPTX
UFADevCom'13#1 Шерыхалин Олег
PDF
IBS at IBM Fast Data (Moscow, 2014)
PPTX
Переход от монолитной архитектуры к распределенной
CAP теорема. Протокол Raft.
Technopolis.NoSQL 02
Вы решили написать собственное хранилище, Илья Космодемьянский
Monte Carlo modeling in cloud - mc-modeling-sdk
Базы данных. CAP
High Load 2009 Imdg Presentation
phpConf 2010 Классификация систем хранения
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
CAP теорема Брюера и ее применения на практике
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Вы решили написать собственное хранилище (Илья Космодемьянский)
Дмитрий Еманов — Под капотом серверного ПО
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Информационные технологии в эру Больших данных
Информационные технологии в эру Больших данных
Новые возможности распределенной обработки данных в памяти (Coherence)
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
UFADevCom'13#1 Шерыхалин Олег
IBS at IBM Fast Data (Moscow, 2014)
Переход от монолитной архитектуры к распределенной
Ad

More from Pavel Veinik (11)

PDF
Software craftsmanship meetup 22. engineering excellence
PPTX
System Engineering Webinar
PPTX
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
PPTX
Software craftsmanship 14 online Splitting the Monolith
PPTX
Software craftsmanship 12 online highload systems
PPTX
Software craftsmanship 11 online: мотивация и эффектисность разработчика
PPTX
Software craftsmanship 3
PPTX
Women in technology_week-women_leadership
PPTX
Career day 2019
PPTX
Программирование и лингвистика: как понять язык и извлечь знания из текстов
ODP
Человеческий фактор в разработке, или ORM на noSql через JPA.
Software craftsmanship meetup 22. engineering excellence
System Engineering Webinar
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 12 online highload systems
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 3
Women in technology_week-women_leadership
Career day 2019
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Человеческий фактор в разработке, или ORM на noSql через JPA.

Software craftsmanship 2