Herkese merhaba. Çook uzun süredir (neredeyse 8 ay) yazı yazmıyordum. En büyük nedeni üşengeçlik tabi.
MongoDB Nedir?
MongoDB, yüksek hacimli veri depolama için kullanılan belge odaklı bir NoSQL veritabanıdır. MongoDB relational veritabanları gibi "table" ve "rows"
kullanmamaktadır. Bunun yerine "collections" ve "documents" kullanmaktadır. "Documents" dediğimiz şeyler key-value yapısı kullanır. Programlamada
sıkça kullandığımız dictionary veya json yapılarına benzetilebilir.
Index Nedir?
Index veritabanına attığımız sorguların daha hızlı sonuç vermesi için oluşturulan yapılardır. Indexleme yaptıktan sonra veritabanında
bir kayıt aradığınızda tüm kayıtları tek tek incelemeye gerek duymadan daha hızlı sonuç döner.
Index Oluşturma
MongoDB sadece "_id" özelinde atılan sorgular için id bilgisini kendisi indexliyor. Biz ise şimdi örnek bir senaryo canlandıracağız.
İlk olarak user collectionının mevcut indexlerine bakalım. Ben veritabanı uygulaması olarak NoSQLBooster
kullanıyorum. Orada örnek vereceğim. Collection üstüne sağ tılayıp Indexes -> View Indexes yolunu takip ediyorum. Beni şöyle bir ekran karşılıyor.
Yani görüyoruz ki MongoDB bizim için indexlemiş id keyini. Şimdi senaryomuza geçelim.
Veritabanında "user" adında bir collectionınız olduğunu düşünün. Bu collectiona sadece "_id" ile değil aynı zamanda sık sık "email" sorgusu da
attığınızı düşünün. O zaman email ile atılan sorguları daha verimli hale getirmek için email keyini indexleyebiliriz. Gelin bir index oluşturalım.
db.user.createIndex({ name: 1 })
Not: Veritabanında oluşturduğunuz indexler diskte yer kaplamaktadır.
"Gereksiz indexleme, indexleme değildir."
- Bir yazılımcı (ben)
Güzell veritabanındaki ilk indeximizi oluşturduk. Peki şimdi indexlerimize bakmaya ne dersiniz? Gelin bakalım.
Evet işte artık email keyimiz de index listesinde görünüyor.
Index Tipleri
MongoDB'de birden fazla index tipi vardır. Bu index tiplerini işinize olan uygunluğuna göre seçip kullanabilirsiniz. Bazı index
tiplerini inceleyelim.
Single Field Indexler
Yukarıda oluşturduğumuz ilk indexi buna örnek gösterebiliriz. Kısaca tek bir field için oluşturulan indexlerdir.
Compound Indexler
Eğer veritabanına birden fazla key ile sorgu atıyorsanız Compound Index kullanabilirsiniz. Bu index tipinde dikkat edilmesi gereken
şey ise indexi oluştururken fieldları nasıl sıraladığımız. Yukarıda dikkat etmemiştik buna ama artık bizim için önemli oluyor.
Örneğin, bir Compound Index
{ name: 1, no: -1 }
den oluşuyorsa, index önce kullanıcı ismine göre sıralanır ve ardından
her kullanıcı ismi puana göre sıralanır.
Kullanımı Single Field Index kullanımı ile aynı. Aşağıda ufak bir örnek yapalım.
db.collection.createIndex({ name: 1, no: -1 })
Multikey Indexler
MongoDB, arraylerde depolanan içeriği indexlemek için Multikey Indexler kullanır. Array değeri içeren bir alanı indekslerseniz, MongoDB
dizinin her elemanı için ayrı index girdileri oluşturur. Sorguların arraylerin öğelerini eşleştirerek dizileri içeren belgeleri seçmesine
olanak tanır.
Kapanış
Index tiplerine de göz attıktan sonra kendi veritabanımdaki son durumu göstereyim.
Unutmayın gereksiz indexlemeler sizin için dezavantajlı bir durumdur. Bu yüzden indexlemelerinizi planlı yapın.
Umarım yazı işinize yaramıştır. Anlamadığınız yerleri, isteklerinizi veya önerilerinizi bana iletbilirsiniz. Keyifli haftalar dilerim :)
Yazılarımı kendi blogumda da paylaşıyorum :D
Top comments (2)
Teşekkürler güzel yazı için🙏🏻
Ben teşekkür ederim 🥰