Znalazłem, że niektóre metody oficjalnego sterownika MongoDB C# używają SafeMode
i zwracają SafeModeResult
. Co to jest SafeMode
i jak z niego korzystać? Byłoby wspaniale zobaczyć niektóre przypadki użycia - na przykład przypadek użycia z metodą RemoveAll
z MongoCollection
.Jak używać SafeMode z MongoDB C# driver
Odpowiedz
Kod bezpieczeństwa odnosi się tylko do zapisu do bazy danych.
W przypadku prędkości, jeżeli tryb awaryjny jest wyłączony i operacja zapisu nie powiedzie się, sterownik nie czeka, aby się tym zająć. Efekt netto nie jest zgłaszany wyjątek i nie wiesz, że masz błąd.
Włączenie opcji Safemode wymusza na sterowniku oczekiwanie na potwierdzenie sukcesu, a jeśli wystąpi błąd spowoduje zgłoszenie wyjątku.
Używaj kodu awaryjnego dla danych, na których Ci zależy (kont użytkowników, zamówień itp.).
Nie używaj SafeMode dla danych, które nie są niezbędne (logowania, statystyki wykorzystania etc)
domyślne zachowanie MongoDB jest mieć SafeMode off.
Od documentation:
Istnieją różne poziom trybie awaryjnym, a ta klasa jest używana do reprezentowania tych poziomów. Tryb SafeMode dotyczy tylko operacji , które nie zwracają jeszcze wartości (więc nie ma ona zastosowania do zapytań lub poleceń). Dotyczy to następujących metod MongoCollection: : Wstawianie, usuwanie, zapisywanie i aktualizowanie.
Istotą trybie awaryjnym jest to, że po tym, jak Wstaw, Usuń, Zapisz lub wiadomość Update jest wysyłany do serwera jest następnie przez polecenia GetLastError więc kierowca może sprawdzić, że operacja udało. Ponadto podczas korzystania z zestawów replik można zweryfikować , że informacje zostały zreplikowane na pewną minimalną liczbę serwerów pomocniczych .
Klasa SafeMode ma statycznych właściwości i metody, które pozwalają łatwo uzyskać dostęp do typowych trybów lub utwórz własne:
* SafeMode.False * SafeMode.True * SafeMode.WaitForReplications(int n)
Wartość „n” zawiera podstawową , więc zazwyczaj chcesz n > = 2.
Mam nadzieję, że to wystarczy, aby zrozumieć cel SafeMode.
SafeMode
wydaje się być przestarzały.
Odpowiednikiem jest WriteConcern.Acknowledged na MongoClientSettings
(zwykle przekazywane do konstruktora MongoClient
). Potwierdzony jest domyślny WriteConcern w aktualnej wersji sterownika (2.2.4).
Zobacz także MongoDb SafeMode compare to WriteConcern
dziękuję za użytkowanie;) – Edward83