Gymterview
middle

В чём разница между BASE и ACID

ACID и BASE — два подхода к управлению данными в системах: ACID гарантирует строгую согласованность транзакций, а BASE обеспечивает высокую доступность ценой временной рассогласованности.

ACID (свойства классических реляционных транзакций)

  • Atomicity (Атомарность) — транзакция либо выполняется полностью, либо не выполняется вовсе.
  • Consistency (Согласованность) — транзакция переводит БД из одного согласованного состояния в другое.
  • Isolation (Изолированность) — параллельные транзакции не влияют друг на друга.
  • Durability (Долговечность) — после фиксации (commit) данные сохраняются даже при сбое.

BASE (подход распределённых NoSQL-систем)

  • Basically Available (Базовая доступность) — система доступна, даже если часть узлов отказала.
  • Soft state (Мягкое состояние) — состояние системы может изменяться со временем даже без новых входных данных (из-за синхронизации между узлами).
  • Eventually consistent (Согласованность в конечном счёте) — система придёт в согласованное состояние через некоторое время.

Сравнительная таблица

Аспект ACID BASE
Согласованность Немедленная (strong) В конечном счёте (eventual)
Доступность Может быть снижена Приоритет
Подход Пессимистичный (блокировки) Оптимистичный
Масштабирование Вертикальное Горизонтальное
Применение Финансовые транзакции, банковские операции Социальные сети, каталоги, аналитика
Примеры БД PostgreSQL, Oracle, MySQL (InnoDB) Cassandra, DynamoDB, MongoDB

Как сочетать ACID и BASE

На практике в сложных системах оба подхода применяются одновременно:

  • Основные операции (переводы, зачисления) — ACID через PostgreSQL/Oracle.
  • Вспомогательные данные (история просмотров, аналитика, рекомендации) — могут использовать BASE-подход.
  • Микросервисная архитектура часто вынуждена использовать BASE между сервисами (Saga-паттерн), сохраняя ACID внутри каждого сервиса.

Выбор между ACID и BASE — это не «один лучше другого», а компромисс между согласованностью и доступностью, продиктованный конкретными бизнес-требованиями каждой операции.

На собеседовании: Интервьюер хочет услышать, что ACID и BASE — не взаимоисключающие подходы, а что в реальной системе они часто сочетаются. Частая ошибка — противопоставлять их как «SQL vs NoSQL», не понимая, что выбор диктуется бизнес-требованиями конкретной операции.