W typowej konfiguracji Mongodb może wystąpić opóźnienie między pomyślnym powrotem zapisu do bazy danych a odczytem tych danych. Są ku temu dwa powody:
- W celu zwiększenia wydajności „niebezpieczny” zapis może powrócić przed zatwierdzeniem danych na dysku.
- Mongodb używa zestawów replik i występuje opóźnienie replikacji. Zwykle odczyty są dystrybuowane do replik jako forma równoważenia obciążenia, więc nawet jeśli używasz bezpiecznego zapisu, możesz czytać z innego serwera niż ten, na który właśnie napisałeś, a tym samym nie widzieć danych, które właśnie napisałeś.
Aby mieć pewność, że zawsze możesz natychmiast odczytać dane, które właśnie zapisałeś za pomocą Mongoid, musisz ustawić opcje sesji bazy danych consistency: :strong, safe: true
, z których żaden nie jest domyślny.