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

Czy powinienem używać sparse index dla flag logicznych w mongodb?

Rzadka flaga jest trochę dziwna. Aby zrozumieć, kiedy go używać, musisz najpierw zrozumieć, dlaczego „rzadki” istnieje.

Kiedy tworzysz prosty indeks w jednym polu, istnieje wpis dla każdego dokumentu, nawet dokumentów, które nie mają tego pola.

Na przykład, jeśli masz indeks na {rarely_set_field : 1} , będziesz miał indeks wypełniony głównie null ponieważ w większości przypadków to pole nie istnieje. To marnowanie miejsca i nieefektywne wyszukiwanie.

{sparse:true} opcja pozbędzie się null wartości, więc otrzymasz indeks, który zawiera wpisy tylko wtedy, gdy {rarely_set_field} jest zdefiniowany.

Wracając do sprawy.

Pytasz o użycie wartości logicznej + sparse. Ale sparse tak naprawdę nie wpływa na wartość „boolean”, sparse effect „jest ustawiony a nie jest ustawiony”.

W twoim przypadku próbujesz pobrać unfinished . Aby wykorzystać sparse kluczem nie jest wartość logiczna, ale fakt, że unfinished wpisy mają ten klucz, a „zakończone” wpisy w ogóle nie mają klucza.

{ _id: 1, data: {...}, unfinished: true }
{ _id: 2, data: {...} } // this entry is finished

Wygląda na to, że używasz kolejki

Zdecydowanie możesz wykorzystać powyższe informacje, aby zaimplementować rzadki indeks. Jednak w rzeczywistości brzmi to tak, jakbyś używał kolejki. MongoDB działa jako kolejka, oto dwa przykłady .

Jeśli jednak spojrzysz na kolejkę, nie robią tego w taki sposób, w jaki ty to robisz. Osobiście używam MongoDB jako kolejki dla niektórych systemów produkcyjnych i działa całkiem dobrze, ale przetestuj oczekiwane obciążenie, ponieważ dedykowana kolejka będzie działać znacznie lepiej.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB na Vagrant przez problem z przekierowaniem portów

  2. mongodb multi tenacy zaklęcie z @Document

  3. Eksportuj kolekcję MongoDB do pliku JSON

  4. Konkretny miesiąc zapytania Mongodb | rok nie data

  5. MongoDB:obniżona wydajność zapytań