Что такое BASE в контексте баз данных?

«Что такое BASE в контексте баз данных?» — вопрос из категории Базы данных, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 приносится в жертву производительности и отказоустойчивости.