Programlama

MongoDB Nedir ve Nasıl Kullanılır?

MongoDB Nedir ve Nasıl Kullanılır?
Share

MongoDB, NoSQL tabanlı bir veritabanı yönetim sistemidir. Geleneksel veritabanlarından farklı olarak, doküman odaklı bir yapıya sahiptir ve verileri BSON (Binary JSON) formatında depolar. Veritabanı modellemesi ve oluşturma süreci oldukça esnektir ve ilişkisel veritabanlarına kıyasla daha kolaydır. Bu blog yazısında, MongoDB ile veri ekleme, güncelleme ve silme işlemlerinden, sorgular ve aggregation framework kullanımına, indeksleme ve performans iyileştirmelerinden, yedekleme ve kurtarma işlemlerine kadar birçok konuyu ele alacağız. Ayrıca, MongoDB’nin diğer veritabanlarıyla karşılaştırmasını yaparak hangi durumlarda MongoDB’nin tercih edilmesi gerektiğini de açıklayacağız.

MongoDB’nin Tanımı ve Özellikleri

MongoDB, NoSQL tabanlı bir veritabanı yönetim sistemidir. NoSQL (Not Only SQL) terimi, geleneksel SQL (Structured Query Language) tabanlı veritabanı sistemlerinden farklı olarak daha esnek veri işleme ve depolama yöntemlerini ifade eder. MongoDB’nin popülerliği özellikle büyük veri ve bulut tabanlı uygulamaların yaygınlaşmasıyla artmıştır.

MongoDB’nin özellikleri, geleneksel veritabanı sistemlerine göre çeşitli avantajlar sunar. İlk olarak, MongoDB doküman tabanlı bir veritabanıdır. Veriler, JSON benzeri bir yapı olan BSON (Binary JSON) formatında saklanır. Bu, verilerin daha esnek bir şekilde modele dökülmesini sağlar ve ayrıca sorgu işlemlerini kolaylaştırır.

Ayrıca, MongoDB yüksek ölçeklenebilirlik ve performans sunar. Veritabanı, dağıtık bir mimariye sahiptir ve veriler otomatik olarak küme oluşturarak dağıtılabilir. Bu sayede, yüksek trafiğe ve büyük veri hacmine sahip uygulamalarda sorunsuz bir şekilde çalışabilir. Ayrıca, MongoDB’nin replikasyon özelliği sayesinde veriler yedeklenerek veri kaybı riski minimize edilir.

MongoDB’de sorgu işlemleri ve Aggregation Framework kullanımı da oldukça kolaydır. SQL tabanlı sistemlere göre daha esnek bir sorgu dili kullanılır ve verileri birleştirme, gruplama ve filtreleme gibi işlemler hızlı bir şekilde gerçekleştirilebilir. Bu sayede, karmaşık veri analizleri ve raporlamaları kolaylıkla yapılabilmektedir.

  • BSON formatında saklanan doküman tabanlı veri yapısı
  • Yüksek ölçeklenebilirlik ve performans
  • Replikasyon ve yedekleme özellikleri
  • Kolay sorgu işlemleri ve Aggregation Framework kullanımı
Özellik Açıklama
Doküman Tabanlı Veri Yapısı Veriler, JSON benzeri BSON formatında saklanır ve sorgulanır.
Yüksek Ölçeklenebilirlik ve Performans MongoDB, dağıtık bir mimariye sahip olduğu için büyük veri hacimlerini rahatlıkla işleyebilir.
Replikasyon ve Yedekleme Veriler otomatik olarak yedeklenerek veri kaybı riski minimize edilir.
Kolay Sorgu İşlemleri MongoDB, SQL tabanlı sistemlere göre daha esnek sorgu işlemleri sunar.

Veri Modellemesi ve Veritabanı Oluşturma

Veri modellemesi, bir veritabanındaki verilerin nasıl organize edileceğini ve ilişkilendirileceğini belirlemek için kullanılan bir süreçtir. Doğru bir veri modeli oluşturmak, veritabanının etkin ve verimli bir şekilde çalışmasını sağlar. MongoDB, veri modellemesi ve veritabanı oluşturma sürecinde esnek ve ölçeklenebilir bir çözüm sunar.

MongoDB’de veri modellemesi, belgelere dayalı bir yaklaşım kullanır. Veri, BSON (Binary JSON) formatında belgeler halinde saklanır. Veritabanı, belgeleri koleksiyonlar altında gruplandırır. Her bir belge, alanlar ve değerlerden oluşur.

Veri modellemesi yaparken, verilere uygulanacak sorguları ve işlemleri dikkate almak önemlidir. MongoDB, ilişkisel veritabanlara kıyasla daha esnek bir yapıya sahiptir. İlişkili verilerin ayrı tablolarda saklandığı geleneksel bir veritabanı yerine, MongoDB’de ilişkili veriler aynı belge içinde saklanabilir. Bu, veri erişimini hızlandırır ve veri bütünlüğünü sağlar.

Terim Açıklama
Belge (Document) MongoDB’de verinin temel birimidir. BSON formatında saklanır ve alan-değer çiftlerinden oluşur.
Koleksiyon (Collection) Belgelerin gruplandığı yapıdır. Belirli bir türdeki belgeler koleksiyonlarda saklanır.
Alan (Field) Bir belgenin içinde bulunan veri parçalarıdır. Her alanın bir adı ve bir değeri vardır.

Veritabanı oluşturma sürecinde, MongoDB’de yeni bir veritabanı oluşturmak için “use” komutu kullanılır. Veritabanının adı verilerek yeni bir veritabanı oluşturulur. Veri modellemesi yaparken, veritabanının yapısını ve ilişkilendirme mantığını belirlemek önemlidir. Veritabanındaki koleksiyonları oluşturmak ve belgeleri eklemek için MongoDB sorguları kullanılır. Bu sorgular, belgelere ait alanları ve değerleri belirleyerek veri modellemesini gerçekleştirir.

Veri Ekleme, Güncelleme ve Silme İşlemleri

MongoDB’de veri ekleme, güncelleme ve silme işlemleri oldukça basittir ve esneklik sağlar. Bu işlemleri gerçekleştirmek için kullanılan temel komutlar “insert”, “update” ve “delete” komutlarıdır.

Veri Ekleme: MongoDB’de veri eklemek için “insert” komutu kullanılır. Bu komut ile bir veya birden fazla belge veritabanına eklenir. Örneğin, aşağıdaki örnekte “kullanıcılar” koleksiyonuna yeni bir kullanıcı eklemek için “insert” komutu kullanılmıştır.

db.kullanıcılar.insert(
{
“ad”: “Ahmet”,
“soyad”: “Yılmaz”,
“yaş”: 30
}
)

Veri Güncelleme: MongoDB’de veri güncellemek için “update” komutu kullanılır. Bu komut ile belirli bir koşula uyan belgenin içeriği değiştirilir. Örneğin, aşağıdaki örnekte “kullanıcılar” koleksiyonundaki “Ahmet” isimli kullanıcının yaşını güncellemek için “update” komutu kullanılmıştır.

db.kullanıcılar.update(
{ “ad”: “Ahmet” },
{ $set: { “yaş”: 35 } }
)

Veri Silme: MongoDB’de veri silmek için “remove” komutu kullanılır. Bu komut ile belirli bir koşula uyan belge veritabanından silinir. Örneğin, aşağıdaki örnekte “kullanıcılar” koleksiyonundaki “Ahmet” isimli kullanıcıyı silmek için “remove” komutu kullanılmıştır.

db.kullanıcılar.remove(
{ “ad”: “Ahmet” }
)

Sorgular ve Aggregation Framework Kullanımı

Veritabanı sistemlerinde sorgulama ve analiz işlemleri oldukça önemli bir yer tutmaktadır. Sorgular, veritabanındaki verileri filtrelemek, sıralamak veya gruplamak için kullanılan özel komutlardır. Bu sorgulama işlemlerini daha etkili ve verimli bir şekilde gerçekleştirmek için MongoDB, aggregation framework adı verilen bir özellik sunmaktadır.

Aggregation framework, MongoDB kullanıcılarına kompleks sorgulama işlemleri yapma imkanı sunan bir araçtır. Bu framework, verileri bir arada çalışan birçok işlem aşamasından geçirerek sonuçları istenen formatta elde etmemizi sağlar. Aggregation işlemini gerçekleştirmek için pipeline adı verilen bir dizi işlem adımından yararlanılır. Bu adımlar, sırasıyla sorgulama işlemlerini gerçekleştirir ve sonucu belirtilen formatta döndürür.

Aggregation framework, MongoDB’nin sunduğu birçok işlem operatörü ve fonksiyonlardan da yararlanır. Bu operatörler ve fonksiyonlar, verileri gruplama, sıralama, filtreleme, toplama, dönüştürme gibi işlemleri gerçekleştirmek için kullanılır. Örneğin, $match operatörü belirli bir koşula uyan verileri filtrelemek için kullanılırken, $group operatörü verileri belirli bir kritere göre gruplamak için kullanılır.

  • Pipeline: Aggregation işleminde kullanılan işlem adımlarının bir araya getirilmiş hali.
  • Operatörler: Aggregation işleminde kullanılan komutlar veya işlem adımları. Örneğin $match, $group, $sort gibi operatörler.
  • Fonksiyonlar: Aggregation işleminde kullanılan işlem operatörlerine ek olarak, verileri dönüştürmek veya hesaplamalar yapmak için kullanılan özel fonksiyonlar.
Operatör Açıklama
$match Belirli bir koşula uyan verileri filtrelemek için kullanılır.
$group Belirli bir kritere göre verileri gruplamak için kullanılır.
$sort Verileri belirli bir alana göre sıralamak için kullanılır.
$project Verilerin dönüştürülmesi veya belirli alanlara erişim sağlamak için kullanılır.

Indeksleme ve Performans İyileştirmeleri

Indeksleme ve Performans İyileştirmeleri:

Indeksleme, veritabanı performansını artırmak için kullanılan bir yöntemdir. MongoDB’de de indeksleme kullanılarak sorgu performansı ve veritabanı erişimi hızlandırılabilir. İndeksleme, verilerin düzgün bir şekilde depolanmasını sağlar ve sorguların daha hızlı çalışmasını sağlar.

Indeksleme yapılırken dikkat edilmesi gereken bazı noktalar vardır. İndeksleme için uygun alanlar belirlenmelidir. Örneğin, bir kullanıcının adı veya bir ürünün adı bir sorgunun sıklıkla kullanılan bir alanı olabilir. Bu gibi alanlar indekslenebilir ve sorgu performansı artırılabilir. Ancak, her alanın indekslenmesi işlemi yerine yalnızca gerekli alanlar indekslenmelidir. Aksi takdirde, veritabanının boyutu artar ve performans kaybı yaşanabilir.

Liste olarak MongoDB’de kullanılan bazı indeks türleri:

  • Tekli Alan İndeksi: Bir alanı tekli olarak indekslemek için kullanılır.
  • Çoklu Alan İndeksi: Birden fazla alanı birleştirerek indekslemek için kullanılır.
  • Metin İndeksi: Metin aramaları için kullanılır.
  • Coğrafi İndeks: Coğrafi verileri sorgulamak için kullanılır.

Tablo olarak MongoDB’de performansı iyileştirmek için yapılan bazı işlemler:

İşlem Açıklama
Count and Limit Sorgu sonuçlarının sayısını sınırlayarak performansı artırır.
Query Optimization Sorguların optimize edilmesi ile performans iyileştirilir.
Sharding Büyük veritabanlarının parçalara bölünerek performansı artırır.
Index Usage Analysis İndeks kullanım analizi yapılarak gereksiz indekslerin kaldırılması sağlanır.

Yedekleme ve Kurtarma İşlemleri

MongoDB, yüksek performansa sahip ve ölçeklenebilir bir NoSQL veritabanıdır. Bu avantajlarına rağmen, veri kaybının önlenmesi ve veritabanının kurtarılması için düzenli yedekleme ve kurtarma işlemlerinin gerçekleştirilmesi önemlidir. Yedekleme işlemi, veritabanında bulunan tüm verilerin başka bir ortamda saklanması anlamına gelir. Bu sayede, olası bir veri kaybı durumunda veritabanının geri yüklenmesi mümkün olur.

Yedekleme işlemi için MongoDB’nin sunduğu bazı araçlar ve yöntemler bulunmaktadır. mongodump komutu, MongoDB veritabanındaki verileri bir yedek dosyasına aktarmak için kullanılır. Bu komut sayesinde, veritabanının tamamı veya belirli bir koleksiyon yedeklenebilir. Yedekleme işlemi sırasında, veriler BSON (Binary JSON) formatında saklanır.

Bunun yanı sıra, MongoDB’nin yedekleme işlemi için mongorestore komutu da bulunmaktadır. Bu komut, bir yedek dosyasındaki verileri tekrar veritabanına yüklemek için kullanılır. Geri yükleme işlemi sırasında, yedek dosyasındaki BSON verileri orijinal veritabanına geri dönüştürülerek aktarılır. Böylece, verilerin tamamı geri yüklenmiş olur ve veritabanı tekrar kullanılabilir hale gelir.

  • Yedekleme işlemi: Mongodump komutu ile bir yedek dosyası oluşturulur. Bu dosya, veritabanındaki tüm verileri ve yapıyı içerir.
  • Kurtarma işlemi: Mongorestore komutuyla yedek dosyasındaki veriler geri yüklenir.
Commands Description
mongodump MongoDB veritabanındaki verileri bir yedek dosyasına aktarmak için kullanılır.
mongorestore Bir yedek dosyasındaki verileri tekrar veritabanına yüklemek için kullanılır.

Yedekleme ve kurtarma işlemleri, MongoDB veritabanının sağlıklı bir şekilde işlemesini ve olası veri kayıplarının önlenmesini sağlar. Düzenli olarak yapılan yedekleme işlemleri sayesinde, veritabanının geçmiş bir noktadaki durumuna kolayca dönülebilir. Kurtarma işlemi ise bu yedek dosyalarının kullanılarak gerçekleştirilir. Bu nedenle, MongoDB kullanıcılarının yedekleme ve kurtarma işlemlerini ihmal etmemeleri önemlidir.

MongoDB’yi Diğer Veritabanlarıyla Karşılaştırma

MongoDB, ilişkisel veritabanlarına alternatif olarak geliştirilen bir NoSQL veritabanıdır. Diğer veritabanı sistemleriyle karşılaştırıldığında birçok önemli farklılık göstermektedir.

Öncelikle, MongoDB’nin belge tabanlı bir veritabanı olduğunu belirtmek gerekir. Bu, verileri JSON tarzı belgeler halinde sakladığı anlamına gelir. Belge tabanlı olduğu için veritabanı şemasında önemli bir esneklik sunar. RDBMS (İlişkisel Veritabanı Yönetim Sistemi) sistemlerinde olduğu gibi sütun ve satırlardan oluşan yapıya ihtiyaç duymaz.

Bir diğer önemli farklılık ise MongoDB’nin yatay ölçeklenebilirlik için optimize edilmiş olmasıdır. MongoDB, verileri dağıtık bir şekilde depolayabilir ve büyük miktardaki veri trafiğini yönetebilir. Bu sayede performansı büyük ölçüde artırır. Diğer veritabanı sistemleri ise genellikle dikey ölçeklenebilirlik üzerine çalışırlar.