2. MongoDB Nedir?
◦MongoDB (“humongous”); ölçeklenebilir,
doküman tabanlı, C++ ile geliştirilmiş açık kaynak,
NoSQL veritabanı uygulamasıdır.
◦NoSQL, klasik ilişkisel veritabanı yönetim
sistemlerinden (İVTYS) bir şekilde farklı olan
veritabanı yönetim sistemleri için kullanılan bir
kavramdır.
3. ◦ Şubat 2009’da ilk olarak yayınlanmıştır.
◦ 32 ve 64 bitlik Windows, Mac OS X, Linux, Unix, BSD
sistemlerde çalışmaktadır.
◦ Verilerini JSON tipli doküman yapılarında muhafaza
eder.
◦ JSON (JavaScript Object Notation) : Yapı olarak XML’e çok
benzemesine rağmen JSON, verileri daha küçük boyutlarda
işler. Bu sebeple XML’den daha hızlıdır. XML yapısı gibi JSON
yapısıda tüm platformlarda rahatlıkla çalışabilir. Kullanımı
XML’e göre daha basit ve kullanışlıdır.
◦ BSON (Binary JavaScript Object Notation) : JSON tipli verilerin
Encode edilmiş hallerini barındıran yapıdır. MongoDB, bu
yapıyı uzak çağrı, ağ ve disk sistemlerinde kullanmaktadır.
4. ◦ Yoğun veri barındıran büyük uygulamalar üzerinde yüksek
performans ve düşük maliyeti sağlamak amacıyla tasarlanmıştır.
◦ Sağladığı sorgu desteği sayesinde ilişkisel yapılarda olduğu gibi
belirlenen alanlara ait veriler rahatlıkla sorgulanabilmektedir.
Ayrıca MongoDB belirlenen bu alanlara indeksleme yaparak
performans konusunda ekstra avantaj sağlıyor.
◦ Sharding özelliği sayesinde, verileri sunucular arasında
paylaştırılarak sunucuları veri yükünden kurtarıyor. Bu sayede
performans kaybını engellemiş oluyor.
5. ◦ MapReduce desteği sayesinde büyük ölçekli veriler de bile
performans kaybı yaşamadan işlemler gerçekleştirebilir.
◦ Map : Tüm verileri sırayla parametre şeklinde alır Key-Value şeklinde
dönüş yapar.
◦ Reduce : Map’in döndürdüğü Key-Value değerlerini yakalayarak
üzerinde işlemler gerçekleştirmenize olanak sağlar.
o Ölçeklendirmeyi sağlamak için Master-Slave Replication desteği
sunuyor.
o Master : Yazma işlemlerinin yapıldığı sunucudur.
o Slave : Okuma işleminin yapıldığı ve ölçeklendirmenin sağlandığı
sunucudur. Master sunucu herhangi bir şekilde devreden çıkarsa
Slave sunuculardan birisi Master olarak atanır.
6. MongoDB, özellikle hız gerektiren ve geleneksel ilişkisel
veritabanlarının (rdbms) hantal ve yavaş kaldığı yapılarda
kullanılmaktadır. Örnek kullanım alanları arasında:
◦ yüksek hacim/içerikli problemler
◦ analiz için veri saklanması
◦ MMORPG (Devasa çok oyunculu çevrim içi rol yapma
oyunu)uygulamaları
◦ caching sistemleri
◦ web içerik yönetim sistemleri
◦ web yorum/etiket saklama ve yönetme
7. MongoDB kullanılan girişimciler:
◦ MTV Networks
◦ Disney Interactive Media Group
◦ Shutterfly
◦ foursquare
◦ bit.ly
◦ The New York Times
◦ SourceForge
◦ CERN LHC
◦ The Guardian
◦ Barclays
8. NoSQL
◦ NoSQL, ilişkisel olmayan bir veritabanıdır. SQL dili kullanmadan
Map-Reduce kavramı ile sorgulama yapılır. Map ve Reduce,
aslında fonksiyonel programlamada sıkça kullanılan iki
fonksiyondur. Excel buna güzel bir örnektir.
◦ NoSQL, ilişkisel veri tabanındaki(RDBMS) tüm verileri farklı tablolar
yerine tek bir dokümanda saklayan veri tabanı modelidir. Bu
nedenle doküman tabanlı veri tabanı denmektedir. Daha iyi
anlaşılabilmesi için örnek verecek olursak;
9. ◦ İlişkisel veri tabanlarında kişi, il, ilçe ve mahalle/köy tablolarını düşünün. Buna
göre elimizde birbirlerine foreign key/yabancı anahtar ile bağlı 4 tablo var.
Örnek olarak ta Ahmet arkadaşımız 20 milyonluk İstanbul'da yaşayan azınlık 2
milyon İstanbulludan biri olduğunu ve Üsküdar Altunizade'de yaşadığını
düşünebilirsin. Buna göre NoSQL veri tabanında tüm bilgiler tam da burada
yazdığımız/düşündüğümüz gibi saklanacaktır. Nereden olduğunu öğrenmek
için birleştiren sorgular falan yazmanıza gerek yoktur. RDBMS de bu bilgileri
toplamak için ilgili tüm tabloları birleştirmek gerekiyor. Sql sonucu ise döküman
tabanlı veriye benzeyecektir. Burada hemen akla şu gelmektedir. Döküman
tabanlı veri tabanında doğal olarak milyonlarca insanda birbirinin tekrarı
milyonlarca bilgi olacağı kesindir. Bu da veri tabanı boyutunun büyümesine
neden olacaktır.
10.
11. MongoDB’nin sahip olduğu özellikler
şöyledir:
◦ * Tutulan dokümanın her özelliğine, anahtarına(key) göre indeksleme sağlamaktadır.
◦ * Sık kullanılan okuma işlemi sorgularında yüksek performans göstermektedir.
◦ * Yedeklilik (High Availability) desteği bulunmaktadır.
◦ * Auto-Sharding, aynı verinin birden çok yerde işlenebilmesi, bulunması, yatay
ölçeklendirme özelliği bulunmaktadır.
◦ * Zengin döküman tabanlı sorguları mevcuttur.
◦ * Hızlı bir veri yazma özelliği bulunmaktadır.
◦ * Map/Reduce (eşle/indirge) özelliği sayesinde esnek toplama ve veri işlemeyi sağlar.
◦ * Veriler kendi yapısında saklamada karmaşıklaştırmadan işlerini yapmaktadır. BSON
olarak verileri tutmaktadır.
12.
13.
14. MongoDB hangi dillerde çalışabilir ?
C++, C# / .NET, Erlang, Haskell, Java, JavaScript, Lisp,
Perl, PHP, Python, Ruby, Scala
16. İNSERT İŞLEMİ
public void insert(){
var p = new Personel();
p.personelAdi = "Kemal";
p.numarasi = 1234;
view sourceprint?
try
{
var mongo = new MongoDB.Mongo();
mongo.Connect();
var db = mongo.GetDatabase("DemoDB");
var coll = db.GetCollection<Personel>();
coll.Save(p);
MessageBox.Show("kaydedildi");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
17. UPDATE İŞLEMİ
public void update(Personel p){
var mongo = new MongoDB.Mongo();
mongo.Connect();
var db = mongo.GetDatabase("Demo");
var coll = db.GetCollection<Personel>();
p.personelAdi = "Duran";
coll.Save(p);
}
18. SELECT İŞLEMİ
public List<Personel> getPersolonels()
{
var mongo = new MongoDB.Mongo();
mongo.Connect();
var db = mongo.GetDatabase("DemoDB");
var personels = db.GetCollection<Personel>().FindAll().Documents;
return personels.ToList() ;
}