MongoDB - Kapaklı Koleksiyonlar
Capped collectionsoluşturma, okuma ve silme işlemlerinde yüksek performansı desteklemek için ekleme sırasını izleyen sabit boyutlu dairesel koleksiyonlardır. Dairesel olarak, koleksiyona ayrılan sabit boyut tükendiğinde, koleksiyondaki en eski belgeyi herhangi bir açık komut vermeden silmeye başlayacağı anlamına gelir.
Güncelleme, belge boyutunun artmasıyla sonuçlanırsa, sınırlı koleksiyonlar belgelerde güncellemeleri kısıtlar. Kapaklı koleksiyonlar, belgeleri disk depolama sırasına göre depoladığından, belge boyutunun diskte ayrılan boyutu artırmamasını sağlar. Sınırlı koleksiyonlar, günlük bilgilerini, önbellek verilerini veya diğer yüksek hacimli verileri depolamak için en iyisidir.
Kapaklı Koleksiyon Oluşturma
Sınırlı bir koleksiyon oluşturmak için normal createCollection komutunu kullanırız ancak capped seçenek olarak true ve maksimum koleksiyon boyutunu bayt cinsinden belirtme.
>db.createCollection("cappedLogCollection",{capped:true,size:10000})
Koleksiyon boyutuna ek olarak, koleksiyondaki belge sayısını da sınırlayabiliriz. max parametre -
>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})
Bir koleksiyonun sınırlı olup olmadığını kontrol etmek istiyorsanız, aşağıdakileri kullanın isCapped komut -
>db.cappedLogCollection.isCapped()
Sınırlıya dönüştürmeyi planladığınız mevcut bir koleksiyon varsa, bunu aşağıdaki kodla yapabilirsiniz -
>db.runCommand({"convertToCapped":"posts",size:10000})
Bu kod, mevcut koleksiyonumuzu dönüştürecek posts şapkalı bir koleksiyona.
Sınırlı Koleksiyon Sorgulama
Varsayılan olarak, sınırlı bir koleksiyondaki bir bul sorgusu, sonuçları ekleme sırasına göre görüntüler. Ancak belgelerin ters sırada alınmasını istiyorsanız,sort aşağıdaki kodda gösterildiği gibi komut -
>db.cappedLogCollection.find().sort({$natural:-1})
Kapaklı koleksiyonlarla ilgili bilmeye değer birkaç önemli nokta daha var -
Kapaklı bir koleksiyondaki belgeleri silemeyiz.
Sınırlı bir koleksiyonda, _id alanında bile mevcut varsayılan dizin yoktur.
Yeni bir belge eklerken, MongoDB'nin yeni belgeyi diskte yerleştirmek için gerçekten bir yer aramasına gerek yoktur. Yeni belgeyi körü körüne koleksiyonun kuyruğuna yerleştirebilir. Bu, kapaklı koleksiyonlarda insert işlemlerini çok hızlı hale getirir.
Benzer şekilde, belgeleri okurken MongoDB, belgeleri diskte bulunan sırayla döndürür. Bu, okuma işlemini çok hızlı hale getirir.