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

W jaki sposób MongoDB rejestruje sortowanie, gdy nie określono kolejności sortowania?

Jaka jest domyślna kolejność sortowania, gdy żadna nie jest określona?

Domyślny wewnętrzny porządek sortowania (lub porządek naturalny) to niezdefiniowany szczegóły realizacji. Utrzymanie porządku jest dodatkowym obciążeniem dla silników pamięci masowej, a interfejs API MongoDB nie wymaga przewidywalności poza jawną sort() lub szczególny przypadek kolekcji o stałych limitach, z powiązanymi ograniczeniami użytkowania. W przypadku typowych obciążeń pożądane jest, aby silnik pamięci masowej próbował ponownie wykorzystać dostępne wstępnie przydzielone miejsce i podejmował decyzje dotyczące najefektywniejszego przechowywania danych na dysku i w pamięci.

Bez żadnych kryteriów zapytania wyniki zostaną zwrócone przez aparat pamięci w naturalnej kolejności (czyli w kolejności, w jakiej zostały znalezione ). Kolejność wyników może pokrywać się z kolejnością wstawiania, ale to zachowanie nie jest gwarantowane i nie można na nim polegać (poza kolekcjami ograniczonymi).

Kilka przykładów, które mogą wpływać na porządek przechowywania (naturalny):

  • WiredTiger używa innej reprezentacji dokumentów na dysku niż w pamięci podręcznej, więc naturalna kolejność może się zmieniać w zależności od wewnętrznych struktur danych.
  • Oryginalny mechanizm przechowywania MMAPv1 (usunięty w MongoDB 4.2) przydziela przestrzeń rekordów dla dokumentów na podstawie reguł dopełniania. Jeśli dokument przekroczy aktualnie przydzieloną przestrzeń rekordu, wpłynie to na lokalizację dokumentu (i naturalną kolejność). Nowe dokumenty można również umieszczać w magazynie oznaczonym jako dostępne do ponownego wykorzystania z powodu usuniętych lub przeniesionych dokumentów.
  • Replikacja korzysta z idempotentnego formatu oplog w celu spójnego stosowania operacji zapisu na elementach członkowskich zestawu replik. Każdy członek zestawu replik przechowuje lokalne pliki danych, które mogą się różnić w naturalnej kolejności, ale będą miały ten sam wynik danych po zastosowaniu aktualizacji oplog.

Co, jeśli używany jest indeks?

Jeśli używany jest indeks, dokumenty zostaną zwrócone w kolejności, w jakiej zostały znalezione (co koniecznie odpowiada kolejności wstawiania lub kolejności we/wy). Jeśli używany jest więcej niż jeden indeks, kolejność zależy wewnętrznie od tego, który indeks jako pierwszy zidentyfikował dokument podczas procesu deduplikacji.

Jeśli chcesz przewidywalny porządek sortowania, musisz dołącz jawną sort() z zapytaniem i mają unikalne wartości dla klucza sortowania.

Jak kolekcje z ograniczeniami utrzymują kolejność reklamową?

Wyjątek dotyczący implementacji odnotowany w przypadku naturalnego porządku w kolekcjach ograniczonych jest wymuszany przez ich specjalne ograniczenia użytkowania:dokumenty są przechowywane w kolejności wstawiania, ale nie można zwiększyć istniejącego rozmiaru dokumentu, a dokumentów nie można jawnie usunąć. Zamawianie jest częścią ograniczonego projektu kolekcji, który zapewnia, że ​​najstarsze dokumenty „starzeją się” w pierwszej kolejności.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo 3 duplikaty na unikalnym indeksie - dropDups

  2. Jak wysyłać zapytania z Mongoose pre hook w aplikacji Node.js / Express?

  3. NestJS:Jak zaimplementować uwierzytelnianie użytkownika w oparciu o sesję

  4. MongoDB jako magazyn plików

  5. Jak ograniczyć liczbę aktualizacji dokumentów w mongodb