Öncelikle mongoDB hakkında kısa bir ön bilgi vermem gerekirse;
* Doküman tabanlıdır.
* C++ ile geliştirilmiştir.
* NoSQL veritabanıdır.
* Özellikle hız gerektiren ve fazlaca veri yoğunluğunun olduğu uygulamalarda kullanılmaktadır.
* Veriler JSON ya da XML formatında saklanmaktadır.
* Veriler hiyerarşik olarak tutulmaktadır.
Peki NoSQL nedir?
NOSQL ile tabloları birbiri ile ilişkilendirmeye gerek duymadan tanımlamaları yapıyoruz. Yani "ilişkisel olmayan" verileri depolayabileceğiniz veritabanı sistemleridir. NoSQL'in açılımı ise Not-only-SQL'dir. Yani sadece SQL kullanılmayan anlamındadır. NoSQL tabanlı veritabanlarının genel özellikleri olarak:
- Sorgulama arayüzleri değişkenlik gösteriyor. (JSON, REST vb.. şeklinde farklı API'lerle ) Yani SQL sorguları ile çalışmıyorlar.
- Veri tipleri önceden belirlenmemiştir
- Dinamik veri şeması kullanıyor
- Yatay ölçeklendirmeye göre tasarlanmışlardır.
- Veriyi disk ya da sadece hafızada taşıyabilirler.
diyebiliriz.
MongoDB kullanırken benim en sevdiğim özellikleri ise, hangi tablolar arasında hangi sütunla ilişki kurulacak vs. şeklinde düşünmeye gerek kalmıyor. Modelleri istediğiniz gibi tasarlayıp daha sonra ilişkisi olan bir modelden diğer modele bir referans vermeniz yeterli oluyor. Ayrıca sorguları çok hızlı bir şekilde çalıştırabiliyoruz.
MongoDB kurulumuna gelecek olursak:
Ben Linux-Ubuntu kullandığım için Linux-Ubuntu için olan kurulum aşamalarına değineceğim. Dilerseniz şurada tüm işletim sistemleri için kurulum aşamları güzel bir şekilde adım adım anlatılmış. Sayfada sol menüden linux, windows, mac vs işletim sistemini seçip o işletim sistemi ile ilgili kurulum sayfasına gidebiliyorsunuz.
Eğer ubuntu kullanıyorsanız ben size yormayayım ve burda adımları vereyim :)
Terminalimizi açıyoruz. Ve aşağıdaki komutları adım adım yazıyoruz.
1)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
2)
Bu adım sürümden sürüme değişiyor. Ben Ubuntu Gnome 14.04 için olanını yazıyorum
Bu adım sürümden sürüme değişiyor. Ben Ubuntu Gnome 14.04 için olanını yazıyorum
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
3)
sudo apt-get update
4)
Kurulum tamamlandıktan sonra çalıştırmak için konsoldan "mongo" yazıp çalıştırabilirsiniz. Bu komut ile mongoDB'nin komut satırına girersiniz.
Eğer mongoDB'niz otomatik çalışmıyorsa şu komutu yazmalısınız: "sudo service mongod start" Servisi kapatmak için ise tahmin edersiniz ki :) "sudo service mongod stop"
MongoDB'nin komut satırından çıkmak için ise Ctrl+c yapmalısınız.
MongoDB Komutları
Terminalde mongo yazıp mongoDB komut satırına girdikten sonra aşağıdaki komutları kullanabiliriz.
$ show dbs komutu ile varolan veritabanlarını görüntüleriz. İlk kurduğunuzda test diye bir veritabanı olmalı.
$ use dbName komutu ile işlem yapacağınız veritabanını seçiyorsunuz.
$ db komutu ile şuan hangi veritabanı seçili ise onu görürsünüz.
$ db.createCollection('CollectionAdı") komutu ile seçili olan veritabanına bir collection eklersiniz.
Collection'ı ilişkisel veritabanlarındaki Tablo gibi düşünebilirsiniz.
$ show collections komutu seçili olan veritabanımızdaki tüm collectionları listeler.
$ db.CollectionAdı.insert({collectionAdı_id:"ad",yas:10,durum:"a"}) komutu ile "CollectionAdı" adındaki collection'a veri girmiş olduk. İlişkisel veritanablarındaki satır yerine document, sütun yerine field kullanılıyor.
$ db.CollectionAdı.find() komutu "CollectionAdı" Collection'ını görüntüler.
$ db.CollectionAdı.find().pretty() yukardaki komutla aynı işlevi görür ancak daha düzenli bir şekilde veriler gelir. (dökümanlar alt alta gelecek şekilde)
$ db.CollectionAdı.findOne() bu komut ise collectiondaki herhangi bir dökümanı getirir.
$ db.CollectionAdı.find({"id" : ObjectId("abcd12345")}) bu komutla ise Collection içerisindeki tek bir elemanı görüntülememizi sağlar.
$ db.collectionAdı.update({},..) komutu collectionı günceller.
$ db.collectionAdı.drop() komutu ile collectionı kaldırırırz
$ db.CollectionAdı.remove({}) collectionı kaldırmayıp içindeki tüm verileri silmek içindir.
$ db.CollectionAdı.remove({"id" : ObjectId("abcd12345")}) bu komut ise Collection içerisindeki belirli bir elemanı silmeye yarar.
$ db.source-namespace.renameCollection( "target" ) komutu ile collection adını değiştiririz.
$ db.CollectionAdı.count() komutu collection içerisindeki eleman sayısını verir. Collection içerisindeki obje ya da dökuman sayısını verir dersek daha doğru olur.
db.CollectionAdı.stats() komutu collectionın ozelliklerini gosterir
$ db.dropDatabase() komutu ile seçmiş olduğunuz veritabanını silersiniz.
$ db.copyDatabase('dbAdı','dbAdı','cekeceginiz pcnin ipsi') bu ise başka makinedeki bir veritabanını kendi makinenize çekmeyi sağlar.
MongoDB Export ve Import İşlemleri
MongoDB'deki bir collectionın json ya da başka bir formatta exportunu almak istiyorsanız aşağıdaki komut kullanılır. Bu komutları yazarken terminali açıp mongo komut satırına girmeden normal komut satırında yazıyoruz.
mongoexport --db veritabanıAdı --collection collectionAdı --out dosyaAdı.json
Bu komutla adını vermiş olduğunuz collectionı dosyaAdı.json dosyasına JSON formatında exportunu alıp kaydeder. Dosya home dosyasında konumlanır. İsterseniz bu komutu daha çok özelleştirebilirsiniz. Başka bir host'tan (yukarıdaki komutta default host olarak localhostu algılar) veya başka bir klasör konumu vererek exportunuzu oraya kaydedebilirsiniz.
Bir JSON formatındaki dosyanızı mongoDB'ye import etmek için yine terminalde normal komut satırından aşağıdaki komutu yazıyoruz.
mongoimport --db veritabanıAdı --collection CollectionAdı --file dosyaAdı.json
Bu komut ise home klasöründe dosyaAdı.json dosyasını arar. Eğer dosyanız home dışında bir klasörde ise yine onu komutta belirtmeniz gerekiyor.( ~/**/dosyaAdı.json vs.)
Son olarak mongoDB komut satırı ile uğraşmak istemeyenler için bir veritabanı yönetim aracı önerebilirim: Robomongo. Kurulumu oldukça basit. Kurduktan sonra bir kereliğine bir kaç ayar yapmanız gerekiyor.
Aşağıya bir ekran görüntüsü bırakıyorum :)
sudo apt-get install -y mongodb-org
Kurulum tamamlandıktan sonra çalıştırmak için konsoldan "mongo" yazıp çalıştırabilirsiniz. Bu komut ile mongoDB'nin komut satırına girersiniz.
Eğer mongoDB'niz otomatik çalışmıyorsa şu komutu yazmalısınız: "sudo service mongod start" Servisi kapatmak için ise tahmin edersiniz ki :) "sudo service mongod stop"
MongoDB'nin komut satırından çıkmak için ise Ctrl+c yapmalısınız.
MongoDB Komutları
Terminalde mongo yazıp mongoDB komut satırına girdikten sonra aşağıdaki komutları kullanabiliriz.
$ show dbs komutu ile varolan veritabanlarını görüntüleriz. İlk kurduğunuzda test diye bir veritabanı olmalı.
$ use dbName komutu ile işlem yapacağınız veritabanını seçiyorsunuz.
$ db komutu ile şuan hangi veritabanı seçili ise onu görürsünüz.
$ db.createCollection('CollectionAdı") komutu ile seçili olan veritabanına bir collection eklersiniz.
Collection'ı ilişkisel veritabanlarındaki Tablo gibi düşünebilirsiniz.
$ show collections komutu seçili olan veritabanımızdaki tüm collectionları listeler.
$ db.CollectionAdı.insert({collectionAdı_id:"ad",yas:10,durum:"a"}) komutu ile "CollectionAdı" adındaki collection'a veri girmiş olduk. İlişkisel veritanablarındaki satır yerine document, sütun yerine field kullanılıyor.
$ db.CollectionAdı.find() komutu "CollectionAdı" Collection'ını görüntüler.
$ db.CollectionAdı.find().pretty() yukardaki komutla aynı işlevi görür ancak daha düzenli bir şekilde veriler gelir. (dökümanlar alt alta gelecek şekilde)
$ db.CollectionAdı.findOne() bu komut ise collectiondaki herhangi bir dökümanı getirir.
$ db.CollectionAdı.find({"id" : ObjectId("abcd12345")}) bu komutla ise Collection içerisindeki tek bir elemanı görüntülememizi sağlar.
$ db.collectionAdı.update({},..) komutu collectionı günceller.
$ db.collectionAdı.drop() komutu ile collectionı kaldırırırz
$ db.CollectionAdı.remove({}) collectionı kaldırmayıp içindeki tüm verileri silmek içindir.
$ db.CollectionAdı.remove({"id" : ObjectId("abcd12345")}) bu komut ise Collection içerisindeki belirli bir elemanı silmeye yarar.
$ db.source-namespace.renameCollection( "target" ) komutu ile collection adını değiştiririz.
$ db.CollectionAdı.count() komutu collection içerisindeki eleman sayısını verir. Collection içerisindeki obje ya da dökuman sayısını verir dersek daha doğru olur.
db.CollectionAdı.stats() komutu collectionın ozelliklerini gosterir
$ db.dropDatabase() komutu ile seçmiş olduğunuz veritabanını silersiniz.
$ db.copyDatabase('dbAdı','dbAdı','cekeceginiz pcnin ipsi') bu ise başka makinedeki bir veritabanını kendi makinenize çekmeyi sağlar.
MongoDB Export ve Import İşlemleri
MongoDB'deki bir collectionın json ya da başka bir formatta exportunu almak istiyorsanız aşağıdaki komut kullanılır. Bu komutları yazarken terminali açıp mongo komut satırına girmeden normal komut satırında yazıyoruz.
mongoexport --db veritabanıAdı --collection collectionAdı --out dosyaAdı.json
Bu komutla adını vermiş olduğunuz collectionı dosyaAdı.json dosyasına JSON formatında exportunu alıp kaydeder. Dosya home dosyasında konumlanır. İsterseniz bu komutu daha çok özelleştirebilirsiniz. Başka bir host'tan (yukarıdaki komutta default host olarak localhostu algılar) veya başka bir klasör konumu vererek exportunuzu oraya kaydedebilirsiniz.
Bir JSON formatındaki dosyanızı mongoDB'ye import etmek için yine terminalde normal komut satırından aşağıdaki komutu yazıyoruz.
mongoimport --db veritabanıAdı --collection CollectionAdı --file dosyaAdı.json
Bu komut ise home klasöründe dosyaAdı.json dosyasını arar. Eğer dosyanız home dışında bir klasörde ise yine onu komutta belirtmeniz gerekiyor.( ~/**/dosyaAdı.json vs.)
Son olarak mongoDB komut satırı ile uğraşmak istemeyenler için bir veritabanı yönetim aracı önerebilirim: Robomongo. Kurulumu oldukça basit. Kurduktan sonra bir kereliğine bir kaç ayar yapmanız gerekiyor.
Aşağıya bir ekran görüntüsü bırakıyorum :)


