Ответ
BASE (Basically Available, Soft state, Eventual consistency) — это модель согласованности, противопоставляемая строгой транзакционной модели ACID. Она характерна для распределённых NoSQL-систем, где приоритетом являются доступность и масштабируемость.
- Basically Available (Базовая доступность): Система гарантирует ответ на любой запрос, даже в условиях частичных сбоев (например, при отказе одного из узлов кластера). Это может достигаться за счёт возврата устаревших данных или записи в доступную реплику.
- Soft state (Мягкое состояние): Состояние системы может меняться со временем даже без новых операций записи из-за процессов внутренней синхронизации, репликации или истечения TTL (Time To Live).
- Eventual consistency (Согласованность в конечном счёте): Если в систему не поступают новые обновления, то через некоторое время все узлы придут к согласованному состоянию. Однако в произвольный момент времени данные на разных репликах могут отличаться.
Пример для Node.js с MongoDB:
// Запись происходит в первичную реплику (primary)
await db.collection('orders').insertOne({ userId: '123', total: 100 });
// Немедленное чтение со вторичной реплики (secondary) может не показать эту запись
// из-за задержки репликации (Eventual consistency).
const recentOrder = await db.collection('orders').find({ userId: '123' }).readPreference('secondary').toArray();
// `recentOrder` может быть пустым, пока репликация не завершится.
Эта модель используется в таких системах, как Cassandra, DynamoDB, и настраиваемых конфигурациях MongoDB, когда строгая согласованность ACID приносится в жертву производительности и отказоустойчивости.