MongoDB - kolekcje ograniczone

Capped collectionsto kolekcje cykliczne o stałym rozmiarze, które są zgodne z kolejnością wstawiania, aby zapewnić wysoką wydajność operacji tworzenia, odczytu i usuwania. Cyklicznie oznacza to, że po wyczerpaniu stałego rozmiaru przydzielonego do kolekcji rozpocznie usuwanie najstarszego dokumentu w kolekcji bez podawania żadnych jawnych poleceń.

Ograniczone kolekcje ograniczają aktualizacje dokumentów, jeśli aktualizacja skutkuje zwiększeniem rozmiaru dokumentu. Ponieważ ograniczone kolekcje przechowują dokumenty w kolejności przechowywania na dysku, zapewnia to, że rozmiar dokumentu nie zwiększy rozmiaru przydzielonego na dysku. Kolekcje ograniczone są najlepiej do przechowywania informacji dziennika, danych w pamięci podręcznej lub innych danych o dużej objętości.

Tworzenie kolekcji ograniczonej

Aby utworzyć kolekcję ograniczoną, używamy normalnego polecenia createCollection, ale z capped opcja jako true i określając maksymalny rozmiar kolekcji w bajtach.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

Oprócz wielkości kolekcji możemy również ograniczyć liczbę dokumentów w kolekcji za pomocą rozszerzenia max parametr -

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Jeśli chcesz sprawdzić, czy kolekcja jest ograniczona, czy nie, użyj następujących poleceń isCapped polecenie -

>db.cappedLogCollection.isCapped()

Jeśli istnieje już kolekcja, którą planujesz przekonwertować na ograniczoną, możesz to zrobić za pomocą następującego kodu -

>db.runCommand({"convertToCapped":"posts",size:10000})

Ten kod przekształciłby naszą istniejącą kolekcję posts do ograniczonej kolekcji.

Zapytanie o ograniczoną kolekcję

Domyślnie zapytanie „Znajdź” dotyczące zbioru ograniczonego wyświetla wyniki w kolejności reklamowej. Ale jeśli chcesz, aby dokumenty były pobierane w odwrotnej kolejności, użyj rozszerzeniasort polecenie, jak pokazano w poniższym kodzie -

>db.cappedLogCollection.find().sort({$natural:-1})

Jest kilka innych ważnych punktów dotyczących kolekcji limitowanych, o których warto wiedzieć -

  • Nie możemy usuwać dokumentów z zamkniętej kolekcji.

  • W kolekcji z ograniczeniami nie ma domyślnych indeksów, nawet w polu _id.

  • Podczas wstawiania nowego dokumentu MongoDB nie musi faktycznie szukać miejsca na umieszczenie nowego dokumentu na dysku. Może ślepo wstawić nowy dokument na końcu kolekcji. To sprawia, że ​​operacje wstawiania w zakrytych kolekcjach są bardzo szybkie.

  • Podobnie, podczas czytania dokumentów MongoDB zwraca dokumenty w tej samej kolejności, w jakiej znajdują się na dysku. To sprawia, że ​​operacja odczytu jest bardzo szybka.