Согласованность данных
Согласованность (consistency) — состояние, когда все пользователи и процессы видят одни и те же данные при чтении. Согласованность не равна целостности (integrity)
Целостность описывает корректность данных внутри системы (например, наличие внешних ключей, ограничения на значения).
Согласованное состояние: после завершения операции или транзакции все узлы системы переходят в один и тот же видимый результат. Иначе пользователи видят разные версии, что может привести к бизнес-ошибкам.
Виды согласованности
- Строгая (strong consistency): после записи данные моментально видны всем. Пример — традиционные реляционные БД с синхронными транзакциями
- В конечном счёте (eventual consistency): данные со временем сходятся, но на промежутке возможны расхождения. Пример — DynamoDB, Cassandra
- Последовательная (sequential consistency): все операции видятся в одном порядке, но нет гарантии мгновенной видимости
- Каузальная (causal consistency): операции, имеющие причинно-следственную связь, видятся в правильном порядке
- Слабая (weak consistency): система не гарантирует моментальной или даже определённой очередности обновлений
Примеры выбора уровня согласованности
Всегда связано с анализом рисков и бизнес-требований:
- Если данные критичны (банковские счета, заказы, бронирования), требуется strong consistency
- Для аналитических или временных данных подойдут eventual consistency или quorum-based решения
- Нужно учитывать нагрузку, ожидаемые задержки, требования к откатам и репликации
- Часто используют матрицу рещений параметрами: задержка, SLA по доступности, бизнес-ущерб при ошибке