mongoDb Nedir? (kurulum, robomongo, kodlama)


MongoDB, doküman tabanlı, C++ ile geliştirilen bir NoSql veritabanıdır. Veriler BinaryJson türünde dokümanlarda tutulur.

  • MongoDB’nin en önemli özelliği, ilişkisel modeli (relational model) kullanmamasıdır.
  • Tablo yoktur, tasarım yoktur, ilişki yoktur.
  • Windows, Linux, Mac, Solaris.
  • Açık kaynak kodlu
  • Dinamik veri yapısı
  • Ucuz , Hızlı
  • Hızlı okuma ve yazma
  • Büyük veri ile çalışabilme

  • Belgeye dayalı modelde, ilişkisel modelin “satır” (row) kavramı yerine, çok daha esnek bir yapı olan “belge” (document) kavramı kullanılmaktadır. Gömülü belgelere (embedded documents) ve dizilere (arrays) müsaade edilmesi ile, çok karmaşık hiyerarşik yapıları tek bir kayıt (record) içinde saklamak olanaklı hale gelmiştir.
  • MongoDB, basit fakat çok güçlü JavaScript kabuğu (shell) kullanır ve bunun yardımı ile veri tabanlarının işlenmesi çok daha etkin hale gelir.

mongoDB Nerede Kullanılabilir

  • Bloglar (Post, Comment, Like)
  • Üye Bilgileri (Kullanici > Kullanici Detayları)
  • Log datası saklamak
  • Coğrafi bilgi saklamak
  • Zaman içinde yapısı değişecek uygulamalar
  • Big data projeleri
  • Çoklu sunucu gerektirebilecek dağıtık projeler

 

mongoDB Kullanan Firmalar

mongoDB Kurulum, Servisi Çalıştırmak, Robomongo Stüdyo Kurulumu

www.mongodb.com sitesinden Downloads menüsünden güncel halini indirebilirsiniz.

Kurulumu oldukça basit. Kurulum anında Custom seçeneği ile C:\MongoDB klasörüne kurulması daha sonra CMD üzerinden klasöre erişim açısından kolaylık sağlayacaktır.

Kurulumdan sonra C:\MongoDB altında Data klasörü açıyoruz. Yoksa hata verebilir.
C:\MongoDB bin altında Mongod.exe ve Mongo.exe adında 2 adet dosya bulunmaktadır.  Mongod.exe esas servis ve veritabanı işlemlerini sağlamaktadır. Mongo.exe ise bir Shell uygulaması. Buraya script yazarak veritabanı oluşturabiliriz, kayıt ekleme, silme gibi işlemler yapabiliriz. Fakat bunları cmd penceresinden çalıştırmamız gerekiyor.

Mongo Servisi Çalıştırmak

Komut penceresi açıyoruz (Başlat/Çalıştır/cmd) ve aşağıdaki komutları yazıyoruz:

Cd C:\MongoDB\bin
mongod.exe --dbpath "c:\MongoDB\Data"

Mongod.exe için esas servis demiştik. Servisimiz çalıştığına göre artık veritabanı kodlarımızı yazabiliriz.

1.Komut satırını kapatmadan 2. CMD penceresini açıyoruz ve aşağıdaki kodları yazıyoruz:

cd c:\mongodb\bin
mongo.exe
show dbs
use Test
db.Kullanici.insert({Ad:"Yunus", Sehir:"Elazig"})
show collections
db.Kullanici.find()

Bu kodda ise mongo.exe’ yi çalıştırdık ve “Test” adında bir veritabanı oluşturduk. Ve “Kullanici” koleksiyonuna 1 kayıt ekleyerek listeledik.


Peki ama biz hep bu siyah konsoldan mı veritabanımızı yöneticez. Yani bunun bir görsel sütüdyosu yok mu? dediğinizi duyar gibiyim 🙂
Var tabi. Robomongo bunlardan bir tanesi.

  • Robomongo görsel bir Mongodb stüdyosudur.
  • Ücretsiz ve açıkkaynak.
  • Basit ve kullanışlı
  • https://robomongo.org/   adresinden kurulum sağlanabilir.

 

 

Microsoft Servis Oluşturmak
robomongodan artık veritabanı sorgularımızı yazabiliriz. Fakat robomongonun çalışması için servisimizin(Mongod.exe) çalışır durumda olması gerekiyor. Bunun için ister yukarıdaki 1. komut penceresinde yaptığımız işlemleri yapın. ister microsoft service oluşturarak bunu otomatikleştirin.

Her seferinde cmd den uğraşmamak için MS servis oluşturarak otomatik çalışmasını sağlayabiliriz. Şimdi CMD penceresi yönetici modunda açalım ve sırasıyla aşağıdaki komutları çalıştıralım

cd C:\MongoDB\bin
mongod --install --logpath=C:\MongoDB\bin\mongodb.log --dbpath=C:\MongoDB\data\

Şimdi görev yöneticisinden hizmetler sekmesinde Mongo servisini görebiliriz. Bunu başlatıyoruz ve robomongo stüdyoyu açıyoruz.

 

Robomongo oldukça kullanışlı ve kolay bir editördür. Sol kısımda server, veritabanı, koleksiyonlar alt alta dallanmış durumda. Burada admin bizim veritabanı adımız, test ise koleksiyonumuzun adı. sorgumuzu orta üst kısma yazıyoruz. db.test.find() komutu ile test koleksiyonumuzdaki verileri listeliyoruz. Veriler JSON formatında alt kısımda gözüküyor. toplam 1 kayıt var ve 3 field (sütun) mevcut. _id field’ini mongoDB otomatik oluşturur.
mongoDB de esnek tablo yapısı vardır. Yani 1. kayıtta 3 sütun varken 2. kayıtta 5 sütun olabilir. klasik Mssql deki gibi bir tablo şablonuna gerek yoktur.
mongoDB nin en sevdiğim özelliklerinden biri ise Javascript kodlarını çalıştırmasıdır. üst kısımdaki kod alanına bir javascript function’ u oluşturup istediğiniz şartlarda, formatta veri çekebilirsiniz.

 

mongoDB ile temel kodlama

Temel İşlemler

use db_adi //db_adi adında bir veritabanı varsa erişim sağla. Yoksa yeni oluştur.
show dbs //Sistemdeki veritabanlarını listele
db.dropDatabase() //mevcut veritabanını sil
db.createCollection("pers") //pers adında bir koleksiyon oluştur
db.pers.drop() //pers adındaki koleksiyonu sil

Döküman Ekleme

person koleksiyonuna json formatında 2 adet kayıt ekliyoruz.

Var kayit = [{
"sicil": 2345,
"ad": "ayse okan",
"maas": 3000
},

{
"sicil": 1234,
"ad": "mahmut sarı",
"maas": 5000
}];

db.person.insert(kayit)

Verileri Sorgulamak

//Tümünü listele
db.person.find()
//sicil=1234 olan kaydı listele
db.person.find({"sicil":1234})
//Maaşı 4000e eşit ve daha küçük olan kayıtları listele
db.person.find({"maas":{$lte:4000}})
//adı mahmut aslan olmayan kayıtları listele
db.person.find({"ad":{$ne:"mahmut aslan"}})
//maaşı 4000 den küçük ve 1000 den büyük olan kayıtları listele
db.person.find({$and:[{"maas":{$lt:4000}}, {"maas":{$gt:1000}}]})
//sicil 1234 olan veya maaşı 3000 den büyük olan kayıtları listele
db.person.find({$or:[{"sicil":"1234"},{"maas":{$gt:3000}}]})
//ilk 2 kaydı listele
db.person.find().limit(2)
//tümünü listele, ada göre sırala (A dan Z ye)
db.person.find().sort({"ad":1})
//tümünü listele, ada göre sırala (Z den A ya)
db.person.find().sort({"ad":-1})

Update ve Delete

db.person.update({"ad":"mahmut aslan"} ,{$set:{‘maas':5500}}) //ad=mahmut aslan olan kaydın maaşını 5500 yap
db.person.remove({"sicil":"1234"}) //Sicil=1234 olan kaydı sil
db.person.remove("",0) //Tümünü Sil

Bunun yanında istediğiniz javascript kodunu yazarak kendinize özgü fonksiyonlar oluşturabilirsiniz. mongoDB javascript kodlarını çalıştırabilmektedir.

 

Tüm bu bilgileri ve daha fazlasını içeren bir slayt hazırladım. Slayt konuları:

  • NO SQL (Not Only SQL) Nedir ?
  • NO SQL Avantajları ve Dezavantajları Nelerdir
  • İlişkisel Veri Modelleri ile Farkları Nelerdir ?
  • Performans Karşılaştırmaları
  • Hangi Projelerde Kullanılabilir ?
  • Kimler Kullanıyor ?
  • mongoDB Nedir ?
  • mongoDB Kurulumu
  • Robomongo Kurulumu
  • Servisi Çalıştırmak
  • mongoDB Dokuman yapısı ve kodlama
  • Verileri sorgulamak
  • CRUD işlemleri
  • Indexler
  • Replica Set Kavramı Nedir?
  • Sharding Kavramı Nedir ?
  • C# ile mongoDB uygulaması

Hazırladığım slayta aşağıdaki github adresinden erişebilirsiniz.
Slayt Github Linki

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.