Strong consistency и eventual consistency — это два разных подхода, которые контролируют, насколько актуальны данные, когда MongoDB обрабатывает запрос на чтение.
С strong consistency гарантируется, что операции чтения вернут самые свежие подтверждённые данные. В MongoDB это достигается установкой read concern на:
"majority" или "linearizable"
majority — возвращает данные, подтверждённые большинством членов replica setlinearizable — гарантирует абсолютно последнюю подтверждённую запись, за счёт более высокой задержкиИспользуй это, когда точность данных критична, например при финансовых транзакциях или управлении инвентарём.
С eventual consistency операции чтения могут вернуть немного устаревшие данные, которые ещё не реплицированы на все узлы — и в редких случаях данные, которые могут быть откачены обратно. Это поведение по умолчанию с использованием:
read concern "local"
Используй это, когда производительность важнее абсолютной точности, например в аналитических дашбордах или лентах активности.
Решение зависит от приоритетов твоего приложения:
majority или linearizablelocalmajority для записей и local для чтений, где небольшое устаревание данных приемлемоStrong consistency жертвует производительностью ради корректности, в то время как eventual consistency жертвует корректностью ради скорости. Всегда соотноси свой выбор с требованиями бизнеса — подумай, может ли пользователь или система допустить чтение немного устаревших данных, прежде чем выбирать более быстрый вариант.
Read concern linearizable в MongoDB гарантирует абсолютно последний подтверждённый write, но требует большей задержки по сравнению с majority read concern.
Новый — ещё не проверен сообществом
Вы