Read concern в MongoDB контролирует консистентность и изоляцию данных, возвращаемых операциями чтения, особенно в replica sets и sharded clusters.
local — Возвращает самые свежие данные на запрошенном узле. Быстро, но данные могут быть откачены обратно, если узел ещё не реплицировал данные большинству.
available — Похоже на local, но оптимизировано для sharded clusters. Обеспечивает минимальную задержку, но не даёт гарантий от orphaned documents.
majority — Возвращает только данные, которые были подтверждены большинством узлов replica set. Исключает риск отката, гарантируя устойчивые чтения.
linearizable — Самая сильная гарантия для одного документа. Отражает все записи, завершённые до чтения, обеспечивая линеаризуемость в реальном времени. Применяется только к чтению одного документа и имеет более высокую задержку.
snapshot — Используется в multi-document transactions. Обеспечивает согласованный снимок данных на момент начала транзакции, изолируя чтения от конкурирующих записей.
Консистентность ←————————————————→ Производительность
snapshot / linearizable → majority → local / available
local и available отдают приоритет производительности в ущерб строгой консистентностиmajority — это рекомендуемый баланс для большинства production-сценариевВыбор правильного read concern зависит от того, насколько твоё приложение может мириться с устаревшими или откатанными данными. Для финансовых или критически важных данных предпочитай majority или linearizable. Для высоконагруженных чтений с минимальной задержкой, где небольшая несогласованность допустима, достаточно local.
Уровень read concern local гарантирует, что возвращённые данные не будут откачены, что делает его подходящим для финансовых транзакций, где консистентность критична.
Новый — ещё не проверен сообществом
Вы