MONGODB NEDİR? AVANTAJLARI NELERDİR? KULLANIM ALANLARI NERELERDİR?
MongoDB nedir?
MongoDB günümüzde popülerleşen, dağıtık ve ölçeklenebilir bir NoSQL veritabanı teknolojisidir. Yapısal olmayan (Schemaless) verilere dayanan, belge tabanlı (document-based) bir veritabanı olan MongoDB ismini “humongous”, yani “kocaman” ve “database” kelimesinin kısaltmasından alır. MongoDB, verileri BSON (Binary JSON) formatında tutar. BSON, JSON’a benzer bir belge tabanlı veri modelidir ancak JSON'dan farklı olarak daha fazla veri türü desteği sunar. Bu veri modeli sayesinde MongoDB diğer NoSQL veritabanlarına göre daha hızlı veri okuma ve yazma kapasitesine sahip olur. Peki, MongoDB’nin başka hangi özellikleri var derseniz…
İşte MongoDB’nin diğer avantajları ve kullanım senaryoları:
Avantajları:
1. Esnek Yapı (Schemaless):
MongoDB’nin şemasız olma özelliği, ilişkisel veritabanlarının aksine, veri modelinin önceden tanımlanmış bir şemaya bağlı olmadığı anlamına gelir. Bu sayede veriler dinamik olarak değiştirilebilir, ek özellikler veya alanlar eklenebilir veya kaldırılabilir. Böylece veri modelinizdeki değişiklikleri kolayca yapabilir ve geliştirme sürecinin daha hızlı olmasını sağlayabilirsiniz.
Örneğin, bir kullanıcı koleksiyonunda aşağıdaki gibi farklı alanlara sahip belgeleri depolayabilirsiniz:
{
"_id": ObjectId("60204633a4d883001c3e38f1"),
"name": "John Doe",
"age": 25,
"email": "john@example.com"
}
{
"_id": ObjectId("60204633a4d883001c3e38f2"),
"name": "Jane Smith",
"age": 30,
"email": "jane@example.com",
"address": {
"street": "123 Main St",
"city": "New York",
"country": "USA"
}
}
Yukarıdaki örnekte, ilk belgede sadece ad, yaş ve e-posta alanları varken ikinci belgede ayrıca adres alanı da bulunmaktadır. MongoDB'nin şemasız yapısı, verilerin bu şekilde esnek bir şekilde depolanmasını ve belgelerin özelleştirilebilmesini sağlar.
2. Ölçeklenebilirlik:
MongoDB, sıralı bir şekilde ölçeklenebilir bir yapı sunar. Yatay ölçekleme ile verilerinizi daha fazla sunucuya dağıtarak performansı artırabilirsiniz. MongoDB'nin ölçeklendirilebilirliği, yatay ölçeklendirme yapabilmek ve veri tabanını büyütmek için yeni sunucular eklemek anlamına gelir. Örneğin, şirketinizin hızla büyümesi durumunda ve veritabanınızın iş yükü artarsa, MongoDB'nin replicaset ve shrading özelliklerini kullanarak hem yükü dağıtabilir hem de Yüksek kullanılabilirliğinizi (High Availability) sağlayabilirsiniz. Bu iki kavramı kısaca anlatmak gerekirse:
2.1. Replica Set: Bir replica set, birden çok sunucunun birbirleriyle senkronize olmasına olanak tanır. Bu, verilerin yedeklenmesini ve yüksek erişilebilirlik sağlar. Replica set oluşturarak, MongoDB veritabanınızın ölçeklendirilebilirliğini artırabilirsiniz.
2.2. Sharding (Parçalama): MongoDB, verileri parçalara ayırarak farklı sunuculara dağıtmanıza olanak tanır. Örneğin, kullanıcılarınızı coğrafi konumlarına göre ayırabilir ve farklı sunuculara dağıtarak veritabanınızın ölçeklendirilebilirliğini artırabilirsiniz. Verinizin çok büyüdüğü yerlerde de koleksiyonlarınızı farklı shard’lara dağıtarak performansınızı arttırabilirsiniz.
Bu örnekler, MongoDB'nin ölçeklendirilebilir olmasını sağlamak için kullanılan bazı tekniklerdir. Ancak, MongoDB'nin ölçeklendirilebilirliği çok daha geniş bir konudur ve çeşitli yöntemlerle sağlanabilir.
3. Yüksek Performans:
MongoDB, disk üzerindeki verilere erişim için daha hızlı ve daha verimli bir yöntem olan Memory Mapping (bellek eşlemesi) kullanır. Verileri bellekte tutarak sorgu performansını ve genel veritabanı tepkisini optimize eder. Bu, yüksek performanslı sorgulama ve indeksleme sağlar. Ek olarak yukarıda bahsettiğimiz gibi MongoDB, dokümanları BSON (Binary JSON) formatında depolayarak hızlı okuma ve yazma işlemlerini sağlar.
4. Zengin Sorgu Diline Sahip:
MongoDB, zengin bir sorgu diline sahiptir. İleri düzey sorgular, çapraz-tablo birleştirmeleri ve özel indekslemeler gibi karmaşık veri işlemlerini destekler. MongoDB'nin zengin sorgu dili olan MongoDB Query Language (MQL) ile ilgili bir örnek vermek istiyorum. Örneğin, "users" adında bir koleksiyonumuz olduğunu ve her bir belgeye içerisinde kullanıcı bilgileri verilerinin bulunduğunu düşünelim. Bu koleksiyonun belirli bir alana göre sorgu yapmak istediğimizi düşünelim. Aşağıdaki örnekte, "age" alanına göre bir sorgu yapacağız:
db.users.find( { age: { $gt: 25 } } )
Bu sorgu, "users" koleksiyonunda "age" alanı 25'ten büyük olan tüm belgeleri döndürecektir. "$gt" operatörü, "büyükten" anlamına gelir ve bu durumda sorgunun sonucunda yalnızca bu kriteri sağlayan belgeler döndürülür.
MQL, diğer sorgu operatörlerini de desteklemektedir. Örneğin:
"$eq" operatörü eşitlik kontrolü yapar
"$lt" operatörü küçükten anlamına gelir
"$lte" operatörü küçük eşitlik kontrolü yapar
"$ne" operatörü eşit olmayanı kontrol eder
"$in" operatörü bir dizi içinde değer kontrolü yapar
Bu operatörlerin birçoğunu kullanarak farklı sorgular oluşturabilir ve veritabanınızda istediğiniz verileri bulabilirsiniz.
Bu sadece MQL'nin basit bir örneğidir ve daha karmaşık sorgular da oluşturabilirsiniz. MQL, veri tabanınızın yapısına ve kullanım senaryolarınıza göre esneklik sağlar.
5. Yüksek kullanılabilirlik:
MongoDB, replicaset içinde verileri otomatik olarak çoğaltır ve dağıtır. Replicaset, birden fazla sunucu üzerinde aynı verilerin kopyalarının tutulmasıyla çalışır. Bu sayede, bir sunucunun arızalanması durumunda diğer sunuculardan hizmet almaya devam edebilirsiniz. Örneğin, e-ticaret bir uygulamanız var ve bir sunucu arızalandığında mağazanızın çevrimdışı kalmasını istemiyorsanız, MongoDB'nin replikasyon özelliği ile verilerin daha yüksek kullanılabilirlikle çoğaltılmasını sağlayabilirsiniz. Ya da sıfır kesinti ile Mongo database versiyon upgradelerinizi replicaset sayesinde yapabilirsiniz.
6. Otomatik yedekleme:
MongoDB, oplog adı verilen bir günlük dosyası kullanarak otomatik yedekleme yapabilir. Bu günlük dosyası, veritabanına yapılan tüm değişikliklerin kaydını tutar. Bu sayede, verilerinizin yedeklerini periyodik olarak alarak, veri kaybı yaşama riskini azaltabilirsiniz. Örneğin, bir proje yönetimi uygulamanız var ve kullanıcılarınızın projelerindeki güncellemelerin kaybolmasını önlemek istiyorsanız, MongoDB'nin otomatik yedekleme özelliğini kullanabilirsiniz.
7. Veri geri alma ve geri yükleme:
MongoDB'de yapılan hatalı bir işlem sonrasında verilerinize geri dönme ihtimaliniz vardır. Örneğin, bir hata nedeniyle yanlış bir kullanıcının verilerini sildiniz. Bu durumda, MongoDB'nin geri alma ve geri yükleme özelliği sayesinde, belirli bir zaman aralığındaki geçmiş verilere dönerek kaybettiğiniz verileri geri alabilirsiniz. Bu avantaj, veri kurtarma sürecini kolaylaştırır ve kullanıcı hatalarının etkisini azaltır.
Veritabanı çökmesi durumunda ise, yedek verileri kullanarak hızlı bir şekilde veriyi kurtarabilir ve Point-in-time recovery yapabilirsiniz.
Kullanım Senaryoları:
Gelelim MongoDB’nin en çok kullanıldığı senaryolara:
Büyük Veri Depolama: MongoDB, yüksek miktarda veriyi hızlı bir şekilde depolayabilir ve işleyebilir. Büyük ölçekli veri analitiği ve iş zekası projelerinde MongoDB yaygın olarak kullanılır.
Gerçek Zamanlı Analitik: MongoDB, hızlı bir şekilde veri okuma ve yazma işlemleri gerçekleştirdiği için gerçek zamanlı analitik uygulamaları için uygundur. Örneğin, canlı verileri işleyen ve kullanıcı davranışını analiz eden bir uygulama geliştirmek için MongoDB kullanabilirsiniz.
İçerik Yönetimi Sistemleri: MongoDB, dokümanları esnek bir şekilde depolayabildiği için içerik yönetimi sistemleri için ideal bir seçenektir. Örneğin, bloglar, haber siteleri ve e-ticaret platformları gibi içerik ağırlıklı uygulamalar için MongoDB tercih edilebilir.
İnternet of Things (IoT) Uygulamaları: IoT uygulamaları genellikle büyük miktarda veri üretir. MongoDB, IoT cihazlarından gelen verileri hızlı bir şekilde depolayabilir ve işleyebilir. Örneğin, akıllı ev sistemleri veya endüstriyel IoT uygulamaları MongoDB kullanabilir.
Bu kullanım senaryoları MongoDB'nin popüler olduğu alanlardır, ancak MongoDB'nin esnekliği sayesinde pek çok farklı projede kullanılabilir.
Yorum Yap