MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak działa modyfikator $inc ze współbieżnymi żądaniami w mongodb?

W rzeczywistości jest trochę szeroka, ale mogę zaoferować szerokie pociągnięcia. Od MongoDB używa blokowania na poziomie kolekcji z domyślnym aparatem pamięci masowej. Dostępny jest również silnik pamięci WiredTiger, który implementuje blokowanie na poziomie dokumentu . Ale w zasadzie we wszystkich wydaniach istnieje pewien poziom "blokowania", który ma miejsce przy każdym żądaniu. Im wyższy poziom, tym lepiej w zależności od rzeczywistych potrzeb w zakresie przepustowości.

Zasadniczo żadne dwa żądania nie występują w tym samym czasie, ponieważ "blokują" blokadę, która jest wykonana, dopóki nie zostanie zwolniona. Tak więc wartość, która zostanie zwrócona ( na przykład findAndModify() request ), będzie miał „stan bieżący” w momencie, w którym zgłoszono żądanie.

Zatem przy takim żądaniu instrukcja, która została wykonana jako pierwsza, zwróci wartość 2, a następna wykonana instrukcja zwróci wartość 3. Końcową pozycją w bazie danych jest to, że wartość obecnie wynosi 3.

Nie ma więc możliwości, aby coś mogło „zmodyfikować” w tym samym czasie, a stanem końcowym byłby ten, który występuje po wysłaniu „wszystkich” żądań. Więc $inc a inni operatorzy robią dokładnie to, co powinni, i modyfikują zawartość w oparciu o stan dokumentu w momencie, w którym faktycznie był w stanie uzyskać do niego dostęp.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak możesz stwierdzić, czy kolekcja jest ograniczona?

  2. MEAN-Stack zapisz tablicę w MongoDB za pomocą mongoose

  3. Jak dopasować ciąg składający się ze znaków specjalnych, takich jak łącznik i spacje?

  4. MongoDB:najlepszy projekt aplikacji do przesyłania wiadomości

  5. Problemy z CORS. Kolba <-> AngularJS