Содержание
- + Методалогии разработки ПО
-
+
Проектирование систем
- + API
- + UML
- + Интеграции
- + Моделирование данных
- + Представление данных
- BPMN
- C4 model
- Domain Driven Design
- EPC
- IDEF0
- Архитектор
- Архитектура
- Интерфейс
- Карта экосистемы
- Когда стоит выбирать микросервисы
- Контекстная диаграмма
- Ролевая модель
- Проектирование систем
- + Развёртывание
-
+
Разработка
- + Git
- + Linux OS
- + Mac OS
- + Подходы организации кода
- + Языки программирования
- Виды программирования
- Интерпритатор
- Компилятор
- Разработка
-
+
Сеть
- + OSI
- + Защита
- CDN
- ngrok
- Сеть
- + Системный анализ
- + Требования
- – Хранение данных
- + Языки разметки
ACID - набор требований, которые обеспечивают сохранность данных
Требования ACID для сохранности данных
Atomicity - Атомарность, Непрерывность
Операция будет выполнена целиком или никак
Транзакции
Consistency - Согласованность
Финальное состояние не будет нарушать правила консистентности
Ключи, уникальность, Констреинт
Транзакция не допускает промежуточных результатов - база остаётся консистентной
Isolition - Изолированность
Транзакции не мешаются друг другу
Проблема
Грязное чтение
Пока транзакция выполнялась 2й кассир считал промежуточные данные
Потерянная запись
2 кассира совершают операцию
1 кассир снимает даньги в транзакции
2 кассир кладёт деньги пока транзакция 1го не завершилась и получает ответ что на счёте ещё есть деньги снятые 1м кассиром
Повторимое чтение
Пока 1 кассир строит отчет 2й меняет данные в БД
В итоге отчёт построен на разных данных
Фантомы
Пока 1 кассир строит отчет 2й добавляет/удаляет данные в БД
В итоге отчёт построен на разных данных
Решение
Блокировки - заблокировать данные на редактирование/чтение или всю таблицу на время выполнения операции
Версии - при каждом обновлении создаём версии. Пока транзакция выполняется и создаёт новую версию - остальные читают данные из прошлой версии
-
Read uncommited
-
Read commited
-
Repetable read
-
Serializabl
Durability - Надёжность
После завершения транзакции всё сохранится
Если пользователь получил подтверждение от системы, что транзакция выполнена, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя. Для этого часто используют
журналирование изменений (write ahead log,WAL)
ACID
- Atomicity - Атомарность, Непрерывность
Целиком или никак
Транзакции,
- Consistency - Согласованность
Финальное состояние не будет нарушать правила консистентности
Ключи, уникальность
- Isolition - Изолированность
Операции не мешаются
Транзакций
- Durability - Надёжность
После завершения транзакции всё сохранится
Транзакция завершена - круто