Site Loader

Selamlar herkese, yepyeni bir eğitim serisi olan MongoDB Eğitim Serisi ile birlikteyiz. Bu seride başlangıç seviyeden ileri seviyeye kadar MongoDB ile ilgili ne varsa anlatmaya çalışacağım. O zaman ilk yazımız MongoDB Veritabanı Giriş yazısına başlayalım. Keyifli okumalar.

MongoDB Veritabanı Nedir?

Kısaca, MongoDB doküman tabanlı, açık kaynak ve  C++ ile yazılmış bir NoSQL veritabanıdır?  Peki NoSQL nedir? NoSQL ilişkisel olmayan veritabanı demektir. İlişkili demek ise verilerin tablolar şeklinde olması, satır ve sütunlar ile düzenlenmesi demektir. NoSQL de tablo, satır ve sütun yok veriler farklı şekilde saklanır. Konumuz olan MongoDB de collections, documen, field gibi kavramlar bulunuyor.

SQL vs MongoDB

MongoDB Documents(Belgeler)

MongoDB de belgeler  verileri field-value  şeklinde düzenlenir ve saklanır.

Document

Tek bir belgenin içinde yinelenen alan(field) adları olamaz. Örneğin bir belgenin içinde  birden fazla name adında  alan olamaz. Oluşturduğunuz zaman hata verecektir. Veriler field-value(alan-değer ) çiftleri halinde düzenlenir, böylece her alan kendisiyle ilişkilendirilmiş bir değere sahiptir.

MongoDB Collections(Koleksiyon)

MongoDB’de ki tek bir koleksiyon(collection), bir veya daha fazla belgeden oluşur. MongoDB’de ki bir Veritabanı ise bir veya birden fazla koleksiyondan oluşur.

Collection

 

MongoDB JSON ve BSON Standartları

Bu standartlar web üzerinde veri alıverişi sağlayan standartlardır. Şimdi bu standartları detaylı inceleyip ve MongoDB ile nasıl bir ilişki olduğunu görelim.

 

JSON Nedir?

JSON açılımı  JavaScript Object Notation(JavaScript Nesne Notasyonu) olan   JSON, anahtar-değer yani her  anahtarın bir değere (sayı, dize, işlev veya hatta başka bir nesne olabilir) eşlendiği basit ilişkisel yapılardır. Bu basit dil özelliği, JavaScript nesnelerinin metinde oldukça basit bir şekilde temsil edilmesinin sağlanması: Başka bir veri alış-veriş standarttı olan XML’i hızla geçmesini sağladı. Çünkü JSON daha okunabilir, daha kolay ve nesne yapılarını temsil etmede daha ideal olan bir standarttır. Bu sayede JSON, MongoDB’nin belge(document) veri yapılarını temsil etmek için ideal bir seçim olmuştur.

BSON Nedir?

Biraz önce JSON standarttın ne olduğunu ve MongoDB’de  bir veri yapısını olmasını sağlayan avantajlardan bahsetmiştik. Fakat JSON’ bir Veritabanı içinde kullanılmasını ideal olmaktan çıkaran bazı dezavantajları var. Bunlar JSON’nın yetersiz temel veri türünü desteklemesi ve JSON metin tabanlı bir formattır ve metinleri ayrıştırma işlemi çok yavaştır. Bu yüzden MongoDB BSON (Binary JSON) yani ikili JSON formatını geliştirdi. Bu sayede artık daha hızlı, daha esnek ve daha geliştirilmiş veri yapılarına olanak sağlamış oldu. Peki bunu sağladı? BSON  tür ve uzunluk bilgilerini kodlayarak çok daha hızlı çözümlenmesini sağlamış oldu.

Peki MongoDB BSON formatını nasıl kullanılır? Çünkü biz JSON formatını anlatırken  MongoDB’nin veri yapılarını temsil etmek için JSON kullandığını söyledik.  “MongoDB, verileri hem dahili olarak hem de ağ üzerinden BSON biçiminde depolar, ancak bu, MongoDB’yi bir JSON veritabanı olarak düşünemeyeceğiniz anlamına gelmez.” (bu alıntıyı MongoDB sitesinden aldım). Siz JSON dosyalarında rahatlıkla kullanabilirsiniz ve bu veri yapısının karşılığı MongoDB’de mevcuttur.

Şimdi aklınıza şu soru gelmiştir: JSON veri formatı mı? Yoksa BSON veri formatı mı? İsterseniz MongoDB’nin kendi sitesinde bulanan tabloya bakalım.

JSON vs BSON

Niye MongoDB Veritabanı?

MongoDB Veritabanının ne olduğunu ve bazı avantajlarını ele aldık. Şimdi MongoDB’ nin avantajlarını ve niye MongoDB kullanmalıyız bunu maddeler şeklinde sıralayalım.

  • Esnek Belge Şemaları

Günümüzde artık şirketler birçok veriden(ses, video vb.) bilgi çıkarmaya başladı  artık sadece yapılandırılmış  kısıtlı ve sınırlı veri modelleri dışında yapılandırılmamış veriler üzerinde işlemler yapıyor. Yani birden çok veri türü üzerinde işlemler yapıyor. İşte burada MongoDB’nin JSON formatından esinlenerek geliştirdiği BSON formatı bize veriler üzerinde istenilen işlemleri yapabilme esnekliği sağlıyor. Bu format sayesinde çok karmaşık veri yapıları üzerinde kolayca işlemler yapabiliyoruz.

  • Kodlama  Tabanlı Veri Erişimi

Kodlama tabanlı erişim bize aslında vakit kazandıran bir özellik. Örneğin; Python da yazdığın bir şeyi veri tabanına kaydetmek için bir nesneye önce dönüştürme işlemi yapmamız gerekiyordu. Bunun için ORM(Object Relational Mappers)  standartlarını kullanmaya zorluyordu. Artık bunun yapmanıza gerek yok çünkü siz artık o programlama diline özgü veri türü ile kaydedebiliyorsunuz.  Python da bulunan dictionary(sözlük), Java da Maps vb.

  • Değiştirilebilir Tasarım

İlişkisel Veritabanlarında Veritabanı önceden tasarlanır ve sonradan bunları değiştirmek oldukça zahmetli ve problemliydi. MongoDB de ise siz verilerinizi istediğiniz zaman tasarlayabilir düzenleyebilir veya değiştirebilirsiniz çok rahat bir şekilde.

  • Güçlü Sorgular ve Analitik İşlemler

MongoDB bize güçlü sorgular ve analitik işlemler yapmamızı sağlayan MongoDB Query Language (MQL) yani MongoDB Sorgu Dili ile çok güçlü sorguları bile birkaç satırda yapmamızı sağlıyor.

  • Kolay Yatay Ölçeklendirme

SQL de bir tablonun yatay şekilde büyümesi hiç bir zaman zaman istemeyeceğimiz bir şey. Çünkü yatay şekilde büyüme ciddi performans kayıplarına sebep oluyor. MongoDB büyük veriler üzerinde işlemler yapmamızı sağlayan bir Veritabanı olduğu için bize bunun için birçok seçenek sunuyor. Detaylı bilgiye buradan ulaşabilirsiniz.

MongoDB Veritabanı Giriş yazısının sonuna geldik. Eksik veya hatalı noktalar için geriş dönüş yaparsanız mutlu olurum. Bir sonraki yazıda görüşmek üzere.

 

 

Post Author: Cahit ISLEYEN

Data Scientist at @embedica.ai

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir