Herkese merhaba, daha önce makine öğrenimi ve derin öğrenme araştırmalarım hakkında yazılar yayınlıyordum. Şu sıralar Web Programlama üzerinde çalışıyorum.
MongoDB makalemi geçen sene Veritabanı Programlama dersi için hazırlamıştım. Güncelleyip sizlere de sunmak istedim. Hem aldığım dersin hemde proje derslerimin hocası Erdinç hocama selamlar diyerekten başlayalım. :)
Önce NoSQL hakkında bilgi vermekte fayda var.
NoSQL, SQL gibi bir dil değildir. İlişkili Veri tabanı Yönetim Sistemlerine alternatif olarak geliştirilmiş farklı teknolojiler topluluğudur.
Neden NoSQL’e ihtiyaç duyuldu:
Bir nedeni verilerin çok fazla büyümesi, bundan kaynaklı verilerin tek bir ilişkisel veri tabanında giderek artması, güvenlik açıklarına yol açmasıdır, diğer bir neden ise NoSQL’in daha dinamik bir şema yapısına sahip olmasından dolayı büyük verilerde NoSQL veri tabanı tercih edilmesidir.
NoSQL için teknolojiler topluluğu demiştik. Yukarıdaki görselde farklı farklı veritabanı yapılarını görmekteyiz. Örnek verecek olursak:
Sütun tabanlı: Cassandra, APACHE HBASE
Anahtar - Değer tabanlı: ORACLE NoSQL, Redis
Grafik Tabanlı: Neo4j
Doküman Tabanlı: MongoDB, CouchDB
MongoDB
MongoDB 2009 yılında geliştirilmiş NoSQL veri tabanlarından biridir. Çok amaçlı, doküman tabanlı ve Dağıtılmış Veri Tabanı Sistemidir(1).
MongoDB, birçok programlama dili için driver desteği bulundurmasından dolayı NoSQL veri tabanları arasından en çok tercih edilendir.
(1) Dağıtılmış Veri Tabanı Sistemi, verilerin tek bir bilgisayarda olma zorunluluğunu ortadan kaldırmayı amaçlar.
Klasik SQL ve MongoDB Arasında Farklılıklar, Benzerlikler
· Veri tabanı yapısal olarak ikisinde de aynıdır.
· SQL’de tablo yapısı MongoDB’de collections’a denk gelmektedir.
· SQL’de verilerin bulunduğu her bir satır MongoDB’de dökümanlara (BSON) denk gelmektedir.
· SQL’de sütunlar MongoDB’de fields’e denk gelmektedir.
MongoDB’ye doküman tabanlı dememiz JSON yapısına benzediğinden dolayıdır. Bu yüzden ismine BSON (Binary JSON) denmektedir.
Kurulum ve Örnekler
MongoDB’nin topluluk sunucusunu bilgisayarımıza indirdikten sonra iki şekilde üzerinde çalışabilmekteyiz. Biri grafik ara yüzü olan Compass üzerinden diğer bir seçenek ise Shell üzerinden, ben örnekleri Shell üzerinden göstereceğim.
Şimdi örneklerimize başlayalım.
Shell (Windows için cmd) ekranını açıp alttaki yolu girin.
> “C:\Program Files\MongoDB\Server\4.4\bin\mongo.exe”
Artık cmd üzerinde mongoDB ile çalışabileceğiz.
> cls
Bunu yazarak ekranı temizledik. Aynı zamanda MongoDB Compass ekranımızı açıyoruz, bağlandığımızda ilk olarak 3 adet veri tabanı bizi karşılıyor. Aşağıdaki görselde admin, config ve local olarak bunları görebiliriz.
Veritabanlarını Shell ekranında görelim
Yeni bir veritabanı oluşturalım
blog üzerinde çalıştığımızı test edelim
Bir tane collection (klasik SQL’de tablolara denk gelir) oluşturalım
Veri tabanlarımızı görelim
Elimizdeki collection’ları görelim
Veri ekleyelim.
Yukarıdaki çıktıyı anlatmak gerekirse:
Veriler JSON yapısı şeklinde yani { } arasına yazılır.
insertOne komutu ile tek bir veri ekledik.
Virgülden önce gelen her değer fields, klasik SQL üzerinden sütunlara denk gelmektedir.
ObjectId değeri, girdiğimiz her veriye MongoDB tarafından otomatik olarak verilen tekil bir tanımlayıcıdır.
***
Birden fazla veri ekleyelim.
Birden fazla veri eklerken { } yerine [ ] kullanılır.
Şimdi verilerimizi görüntüleyelim. Bunun için find() komutunu kullanıyoruz.
Verilerimizi Key-Value olarak gösterelim.
Eklediğimiz verileri birde Compass üzerinden görelim.
Tekrar Shell ekranımıza dönelim.
Kaç verimiz olduğunu görmek için count() komutunu kullanıyoruz.
Verilerimiz üzerinde birçok işlemi komutlar sayesinde gerçekleştirebiliyoruz. Son olarak komut satırına
> db.
yazıp iki defa tab tuşuna bastığımızda bize tüm komutları gösterecektir.
Kaynaklar
https://docs.mongodb.com/manual/introduction/
https://www.mongodb.com/json-and-bson
https://medium.com/@berkekurnaz/nedir-bu-mongodb-994a94a9d1df
https://www.tutorialride.com/distributed-databases/distributed-databases-tutorial.htm
https://www.b3lab.org/nosql-veritabanlari-hakkinda-bilgi/
https://www.youtube.com/watch?v=ZMgs0wSsfUk