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.