MongoDB ve Django Nedir?

MongoDB ve Django Nedir?

MongoDB ve Django, modern web uygulamaları geliştirirken kullanılan en popüler açık kaynaklı araçlardan bazılarıdır MongoDB, NoSQL veritabanı olduğu için verilerin doğal şekilde depolanmasını sağlarken, Django ise Python dilinde yazılmış bir web çatısıdır Bu yazılımlarla geliştirilen uygulamalar daha yüksek performans ve ölçeklenebilirlik sunar Detaylı bilgi için sitemizi ziyaret edin

MongoDB ve Django Nedir?

MongoDB, ilişkisel veritabanları yerine kullanılan ilişkisel olmayan bir veritabanı sistemidir. MongoDB'nin en belirgin özelliği, bütün verileri yapılandırılmış bir şekilde saklamak yerine JSON benzeri bir formatta depolamaktır. Bu sayede, verilerin yapısal değişiklikleri kolayca gerçekleştirilirken kaybolması da önlenir.

Diğer yandan, Django, açık kaynaklı Python tabanlı bir web uygulama çatısıdır. Modüler bir yapısı vardır ve web uygulamalarının hızlı bir şekilde geliştirilmesine yardımcı olur. Django ile yapılan uygulamaların tamamı MVC (Model-View-Controller) tasarım desenine göre hazırlanır.

Bir arada kullanıldığında, MongoDB ve Django, yüksek performanslı ve ölçeklenebilir web uygulamaları geliştirmek için harika bir çözüm sunar. Ayrıca Django'nun sağladığı MVC özellikleri, MongoDB'nin ilişkisel olmayan verilerle uyumlu yapısı ile mükemmel bir şekilde birleşir ve veri depolama ve işleme işlerini oldukça kolaylaştırır.


İlişkisel ve İlişkisel Olmayan Veritabanları

Bir veritabanı, verilerin saklanması ve kullanılması için yapılandırılmış bir depolama alanıdır. İki ana veritabanı türü vardır: ilişkisel ve ilişkisel olmayan veritabanları.

İlişkisel veritabanları, verileri tablolar halinde saklar ve bunları farklı ilişkilerle birbirine bağlar. Veritabanı yönetim sistemi (DBMS) yazılımı, İlişkisel veritabanları yapmak için tasarlanmıştır.

Diğer taraftan, ilişkisel olmayan veritabanları, belirli bir yapının olmaması nedeniyle daha esnek bir yaklaşım sunar. Veriler JSON veya BSON gibi belgelere benzer görsel bir yapı içinde saklanır. İlişkisel olmayan veritabanları, özellikle büyük ve genişletilebilir veri tümleştirmeleri ve veriler arasındaki çapraz başvurulara ihtiyaç duyulduğunda kullanışlıdır.

İlişkisel Veritabanları İlişkisel Olmayan Veritabanları
Veritabanı şeması gereklidir. Yapı kurallarında daha az kısıtlama vardır.
Yüksek performanslı işlemler yapmak için uygun değillerdir. Yüksek performanslı büyüyen veri gereksinimlerinde kullanışlıdır.
Veri tutarlılığı için daha belirgin kurallara sahiptir. Bir verinin başka bir veriyle ilişkisi olmadığından daha az kaygılardır.
Yapısal kısıtlamaları nedeniyle değişiklikler karmaşıktır. Değişiklikler kapsamlı bir şekilde yönetilebilir.

MongoDB ve İlişkisel Olmayan Veriler

MongoDB, veritabanı yönetim sistemleri arasında ilişkisel olmayan verileri saklamak için en çok tercih edilen yöntemlerden biridir. İlişkisel olmayan veriler, yani her bir öğenin birbirine bağlı veya ayrı bir şekilde saklandığı veri türleri, MongoDB tarafından kolayca desteklenir. MongoDB'nin bu avantajı, karmaşık ilişkileri olan verilerin tanımlanmasına olanak tanır.

MongoDB, doküman-odaklı bir veritabanıdır ve veriler BSON (Binary-Encoded JSON) formatında saklanır. BSON, JSON ile aynı şekilde kullanılan bir veri değişim formatıdır ve MongoDB'de kullanılan bir veri yapısıdır. BSON, JSON'dan daha hızlıdır ve daha fazla veri türü desteği sağlar. İlişkisel olmayan veriler, BSON formatında saklanan verilerdir ve MongoDB, bu verileri veritabanında tutarken, ilişkileri korur ve veriyi hızlı bir şekilde erişilebilir kılar.

İlişkisel Veritabanı İlişkisel Olmayan Veritabanı (MongoDB)
Tablolar Koleksiyonlar
Satırlar Dokümanlar
Sütunlar Alanlar

MongoDB'nin sunduğu bir başka avantaj, dinamik şemadır. İlişkisel veri tabanları, verileri bir şema altında saklama zorunluluğu getirirler. Bunun anlamı, tablolarda belirtilen sütunların sayısı ve adları önceden belirlenmiştir ve değiştirilemez. MongoDB'de ise, verilerin dokümanlar şeklinde saklanması ve belirli bir shema olmaması, verilerin daha esnek ve yönetilebilir olmasını sağlar.

MongoDB'nin basit ve etkili bir sorgulama yapısı, ilişkisel olmayan verilerin saklanmasını daha da kolaylaştırır. Veriler, JSON'a benzer bir arayüzle sorgulanabilir ve filtrelenir. Ayrıca, birçok programlama dili, MongoDB'ye kolayca bağlanabilir ve verileri işleyebilir.


Veri Örnekleri

Veri Örnekleri

MongoDB, NoSQL veritabanı olarak ilişkisel veritabanlarından farklı bir yapısı vardır. Bu nedenle, MongoDB kullanıcıları verilerini JSON formatında saklayabilirler. Bu aynı zamanda veri işleme işlemlerinin daha hızlı ve daha zahmetsiz bir şekilde yapılmasını mümkün kılar.

Bir örnek olarak, kitap verilerini kaydetmek istediğinizi düşünelim. İlişkisel bir veritabanı kullansanız, kitapların her örneği için ayrı bir tablo oluşturmanız gerekir. Bununla birlikte, MongoDB kullanarak kitap özelliklerini bir belge içinde saklayabilirsiniz. Bu belge JSON formatında olacaktır ve birçok kitap örneği tek bir koleksiyonda saklanabilir.

Aşağıdaki tablo, MongoDB kullanarak kitap bilgilerini saklamak için bir örnektir:

Kitap Adı Yazar Fiyat Yayın Tarihi
Yüzüklerin Efendisi J.R.R. Tolkien 35.00 TL 1954
Hobbit J.R.R. Tolkien 25.00 TL 1937
Suç ve Ceza Fyodor Dostoyevsky 20.00 TL 1866

Yukarıdaki tablo, bir koleksiyona eklenecek kitap belgesinin bir örneğidir. Ayrıca, MongoDB, ilişkisel olmayan verilerde veri işleme işlemleri için etkili bir şekilde kullanılabileceğini gösterir.

Sonuç olarak, MongoDB ve Django ile çalışmak, kullanıcıların verilerini verimli bir şekilde saklamasına ve işlemesine olanak tanır. MongoDB'nin ilişkisel olmayan verilerde kullanımı da birçok avantaja sahiptir ve Django-MongoDB entegrasyonu, geliştiricilerin web uygulamaları için veritabanı modelleri oluşturmasına imkan tanır.


Veri Ekleme

Django ve MongoDB entegrasyonu sayesinde MongoDB veritabanına veri eklemek oldukça basit hale gelmektedir. Öncelikle Django'da bir model oluşturmak gerekmektedir. Bunun için modeller.py dosyasında şu şekilde bir kod yazılabilir:

class Ogrenci(models.Model):   adi = models.CharField(max_length=50)   soyadi = models.CharField(max_length=50)   numarasi = models.CharField(max_length=10, unique=True)

Bu örnekte, "Ogrenci" adında bir model oluşturduk. Bu model, "adi", "soyadi" ve "numarasi" adında üç özelliğe sahiptir. "numarasi" özelliği unique olduğu için, aynı numaraya sahip birden fazla öğrenci eklenemez. Artık bu modele veri eklemek için Django'nun sağladığı "save" metodu kullanılabilir. Örneğin:

ogrenci = Ogrenci(adi="Ahmet", soyadi="Yılmaz", numarasi="1234567890")ogrenci.save()

Yukarıdaki kodda, "Ogrenci" modelinden bir öğrenci yarattık ve "save" metodu ile MongoDB'ye kaydettik. MongoDB veri formatı olarak JSON kullanmaktadır. Bu nedenle, kaydedilen her veri, JSON formatında MongoDB'de saklanır. Aşağıdaki tabloda, örnek bir JSON veri yapısı gösterilmiştir:

Alan Adı Veri Türü Örnek Değer
_id ObjectId 614f5ab223067b184e363c96
adi string Ahmet
soyadi string Yılmaz
numarasi string 1234567890

Bu veri yapısında, "_id" alanı, MongoDB tarafından oluşturulmuş bir benzersiz kimlik numarasıdır. "_id" alanı, ObjectId veri türüne sahiptir ve her veri için benzersiz bir değer içerir. "adi", "soyadi" ve "numarasi" alanları, string veri türüne sahiptir ve öğrencinin adı, soyadı ve numarası bilgilerini içerir.


Django ve MongoDB Entegrasyonu

Django ve MongoDB'yi birleştirerek yapılabilecek işlemler oldukça geniştir. İlk olarak, Django üzerinde MongoDB'yi kullanmak için, requirements.txt dosyasında birkaç değişiklik yapılması gerekir. Django için PyMongo kütüphanesi eklenir ve MongoDB sürücüsü yüklenir. Bunun yanı sıra, MONGODB_DATABASE_OPTIONS ve MONGODB_DATABASE_NAME ayarları belirtilir.

Ardından, MongoDB'nin Django ile kullanılması için settings.py dosyası ayarlanmalıdır. Bu dosyada, MONGODB_DATABASES ayarı belirtilmeli ve veritabanına erişmek için kullanılacak MONGODB_USER ve MONGODB_PASSWORD bilgileri eklenmelidir. Ayrıca, MONGODB_HOST, MONGODB_PORT ve MONGODB_NAME ayarları belirtilir.

MongoDB'ye uygun veritabanı modelleri tanımlanırken, MongoDB'nin koşullarına uygun olması gerekir. Bunun yanı sıra, tablolardaki anahtar alanların ObjectId formatında olması da gereklidir. Örneğin, "from bson import ObjectId" kodunu kullanarak veritabanındaki bir alana ObjectId ekleyebilirsiniz. Veritabanı işlemleri sırasında, Django'da yerel veritabanına benzer bir şekilde verileri kolayca ekleyebilirsiniz. Ancak, belirli özelliklerde farklılıklar vardır, örneğin, ilkel veri türleri ve ilişkili veri tipleri farklıdır.

Django ve MongoDB entegrasyonunu tamamlamak için, veritabanındaki modülleri oluşturmak gerekir. Bu doğru yapılırsa, veritabanı işlemleri, MongoDB veritabanında sürdürülebilir. Bu sayede, kullanıcıların verileri saklayıp, yönetmesi daha kolay bir hale gelir.


requirements.txt

Python projenizin hem Django hem de MongoDB kullanacak şekilde ayarlandığını varsayalım. Django ve MongoDB'un birlikte çalışabilmesi ve bu özelliklerin bir arada kullanılabilmesi için bazı gereksinim belgeleri değiştirilmelidir.

requirements.txt dosyası bu iş için kullanılan belgelerden biridir. Bu dosyada uygulamanız için kullanılan tüm modüllerin adı, sürüm numaraları ve diğer bağımlılıklar yer alır. MongoDB desteği eklemek için requirements.txt dosyasına bson, pymongo ve djongo modüllerinin sürüm numaraları eklenebilir.

  • bson: MongoDB tarafından kullanılan BSON (Binary JSON) için Python 2.6+ sürümü
  • pymongo: MongoDB Python sürücüsü için stabil bir sürüm
  • djongo: MongoDB ile Django entegrasyonunu sağlayan bir sürücü

Bu modüllerin tüm sürüm numaraları gereksinimler belgelerinde belirtilmelidir. Web sitenizde MongoDB ve Django'yu kullanmak isteyen bir yazılımcı, requirements.txt dosyasında bu modülleri ve sürüm numaralarını görebilmelidir.


settings.py

Django-MongoDB entegrasyonu için, settings.py dosyasında bazı değişiklikler yapılması gerekiyor. İlk olarak, işe MongoDB sürücüsünü yükleyerek başlayın. Bunun için, settings.py dosyasına 'djongo' eklemeniz gerekiyor.

Daha sonra, veritabanı ayarlamalarınızı belirlemelisiniz. Bunun için, 'DATABASES' sekmesini belirleyin ve örnek ayarları aşağıdaki şekilde değiştirin:

```DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'mydatabase', 'HOST': 'localhost', 'PORT': 27017 }}```

Burada, 'ENGINE' parametresi 'djongo' olarak ayarlanması gerekiyor. 'NAME' parametresi, MongoDB veritabanınızın adını temsil eder. 'HOST' parametresi, MongoDB sunucusunun adresidir ve burada yerel sunucunuzda çalıştığını varsayıyoruz. 'PORT' parametresi, MongoDB bağlantı noktasını belirtir.

Son olarak, Django settings.py dosyasındaki 'INSTALLED_APPS' ayarını değiştirmeniz gerekiyor. Djongo sürücüsünü kullanmak için 'djongo' uygulamasını eklemelisiniz. Bunun için, 'INSTALLED_APPS' ayarını aşağıdaki şekilde değiştirin:

```INSTALLED_APPS = [ ... 'djongo', ...]```

Artık Django-MongoDB entegrasyonu için settings.py dosyasına ihtiyaç duyduğumuz tüm değişiklikleri yaptık. Bu değişiklikler sayesinde, Django uygulamanızı MongoDB verileriyle entegre edebilirsiniz.


Veritabanı Modelleri

MongoDB, ilişkisel olmayan verileri kolayca depolama ve yönetme konusunda birçok fayda sağlamaktadır. Django ile MongoDB kullanacak olan bir geliştiricinin ilk adımı, veritabanı modellerini MongoDB veritabanına uygun şekilde tanımlamaktır. Veritabanı modelleri, Django ile ilişkisel veritabanlarında gördüğümüz ilişkileri koruyan nesnelerdir. Fakat MongoDB'nin doğası gereği, ilişki tabanlı modellere ihtiyaç yoktur ve MongoDB'de ilişkisel veritabanlarına uygun kullanılmaları gerekmektedir.

MongoDB veritabanı modelleri için birkaç farklı seçenek bulunmaktadır. Bunlardan ilki, "Embedded Models" olarak adlandırılan modellerdir. Bu modeller, birbirleriyle doğrudan bağlantılıdır ve Nesting (Yerleştirme) olarak da adlandırılan teknik ile birbirlerine bağlanırlar. Bir diğer seçenek, "Reference Fields" olarak adlandırılan modellerdir. Bu modeller, koleksiyonlar arasında bağlantılar oluşturmak için kullanılırlar. Birincil olan modelden ikincil modele doğrudan bir bağlantı oluşturulmaz, bunun yerine ikincil modelin koleksiyon adı ve birincil olan modeldeki veya koleksiyondaki bir belirleyici alanın adı kullanılır.

MongoDB ayrıca, "Denormalized Models" olarak adlandırılan ve verilerin bir koleksiyonda bulunmasına izin veren modelleri de desteklemektedir. Bu modeller, işlevsellik için çok yararlıdır, ancak verilerin tekrarlanması ve aynı bilginin birden fazla kez depolanması gibi olası sakıncaları nedeniyle, dikkatli bir şekilde kullanılmalıdırlar.

Django-MongoDB entegrasyonu, veritabanı modellerini MongoDB veritabanına uygun şekilde tanımlamayı gerektirmektedir. Bu modeller, Django'nun ilişkisel model tanımlama sisteminden farklıdır ve MongoDB veritabanı üzerinde doğrudan ekleme, güncelleme ve silme işlemleri gerçekleştirmek için kullanılırlar. Veritabanı modelleri, doğru bir şekilde tanımlandığında, Django ve MongoDB arasındaki entegrasyon sorunsuz bir şekilde gerçekleştirilebilir.