2011-01-05 13 views
15

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

29

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.

+3

dziękuję za użytkowanie;) – Edward83

24

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.