SlideShare uma empresa Scribd logo
1 de 18
İnternet Programcılığı 2 – vize 2
Gülin Daşdan - Demet Saçlı
13125027 - 13125012
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.
◦ Ş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.
◦ 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.
◦ 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.
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
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
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;
◦ İ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.
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.
MongoDB hangi dillerde çalışabilir ?
C++, C# / .NET, Erlang, Haskell, Java, JavaScript, Lisp,
Perl, PHP, Python, Ruby, Scala
C# İLE MONGODB VERİTABANI BAĞLANTISI
try{
var conn = new MongoDB.Mongo();
conn.Connect();
MessageBox.Show("Connected");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
İ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);
}
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);
}
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() ;
}

Mais conteúdo relacionado

Mais procurados

Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve DisklerMustafa
 
progressokulu.com Database Administration Slide 3
progressokulu.com Database Administration Slide 3progressokulu.com Database Administration Slide 3
progressokulu.com Database Administration Slide 3kaan verdioglu
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuHuseyin Cotuk
 
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarCeph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarHuseyin Cotuk
 
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiCeph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiHuseyin Cotuk
 
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStackOpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStackHuseyin Cotuk
 
Ceph Türkiye 1.meetup Ankara
Ceph Türkiye 1.meetup AnkaraCeph Türkiye 1.meetup Ankara
Ceph Türkiye 1.meetup AnkaraHuseyin Cotuk
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulHuseyin Cotuk
 
Mongodb-Adem
Mongodb-AdemMongodb-Adem
Mongodb-AdemAdem Ayas
 

Mais procurados (10)

Veri Depolama ve Diskler
Veri Depolama ve DisklerVeri Depolama ve Diskler
Veri Depolama ve Diskler
 
progressokulu.com Database Administration Slide 3
progressokulu.com Database Administration Slide 3progressokulu.com Database Administration Slide 3
progressokulu.com Database Administration Slide 3
 
No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
 
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek HususlarCeph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
Ceph Türkiye 3.Meetup Ankara: Ceph Tasarımında Dikkat Edilecek Hususlar
 
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiCeph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
 
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStackOpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
OpenStack Türkiye 14. Meetup Ankara: Yeni Başlayanlar için OpenStack
 
Ceph Türkiye 1.meetup Ankara
Ceph Türkiye 1.meetup AnkaraCeph Türkiye 1.meetup Ankara
Ceph Türkiye 1.meetup Ankara
 
Ceph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbulCeph Türkiye 2.meetup İstanbul
Ceph Türkiye 2.meetup İstanbul
 
Mongodb-Adem
Mongodb-AdemMongodb-Adem
Mongodb-Adem
 

Destaque

Introducción Programática mobile
Introducción Programática mobile Introducción Programática mobile
Introducción Programática mobile mediasmart_mb
 
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSO
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSODESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSO
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSOMarvin Roca Gatica
 
ABMHealthcare_ServiceLinesCollateral_HC ONLY
ABMHealthcare_ServiceLinesCollateral_HC ONLYABMHealthcare_ServiceLinesCollateral_HC ONLY
ABMHealthcare_ServiceLinesCollateral_HC ONLYJason R Fabbri
 
Presentation1 blogggggggggggg
Presentation1 bloggggggggggggPresentation1 blogggggggggggg
Presentation1 bloggggggggggggKatryna Upshaw
 
Av de português maio - prova 2- 8º
Av de português   maio - prova 2- 8ºAv de português   maio - prova 2- 8º
Av de português maio - prova 2- 8ºEdson Alves
 

Destaque (7)

9.manual no pavimentadas
9.manual no pavimentadas9.manual no pavimentadas
9.manual no pavimentadas
 
Introducción Programática mobile
Introducción Programática mobile Introducción Programática mobile
Introducción Programática mobile
 
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSO
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSODESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSO
DESCUBRA SUS HABILIDADES OCULTAS PARA SER EXITOSO
 
ABMHealthcare_ServiceLinesCollateral_HC ONLY
ABMHealthcare_ServiceLinesCollateral_HC ONLYABMHealthcare_ServiceLinesCollateral_HC ONLY
ABMHealthcare_ServiceLinesCollateral_HC ONLY
 
Style
StyleStyle
Style
 
Presentation1 blogggggggggggg
Presentation1 bloggggggggggggPresentation1 blogggggggggggg
Presentation1 blogggggggggggg
 
Av de português maio - prova 2- 8º
Av de português   maio - prova 2- 8ºAv de português   maio - prova 2- 8º
Av de português maio - prova 2- 8º
 

Semelhante a Mongodb Ödev- İnternet programcılığı- IP2-Vize 2

Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?Ertugrul Akbas
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL OverviewCihan Özhan
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnıMustafa Tepe
 
NoSQL Nedir MongoDB ile .NET Kardeşliği
NoSQL Nedir MongoDB ile .NET KardeşliğiNoSQL Nedir MongoDB ile .NET Kardeşliği
NoSQL Nedir MongoDB ile .NET Kardeşliğiİbrahim ATAY
 
veri tabanları . sql vs nosql
veri tabanları . sql vs nosqlveri tabanları . sql vs nosql
veri tabanları . sql vs nosqlOrçun Çolak
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web ProgramlamaCihan Özhan
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03Önder Değer
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.comHakan Ilter
 

Semelhante a Mongodb Ödev- İnternet programcılığı- IP2-Vize 2 (20)

MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
 
Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Php veritabani
Php veritabaniPhp veritabani
Php veritabani
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL Overview
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
NoSQL Nedir MongoDB ile .NET Kardeşliği
NoSQL Nedir MongoDB ile .NET KardeşliğiNoSQL Nedir MongoDB ile .NET Kardeşliği
NoSQL Nedir MongoDB ile .NET Kardeşliği
 
veri tabanları . sql vs nosql
veri tabanları . sql vs nosqlveri tabanları . sql vs nosql
veri tabanları . sql vs nosql
 
Riak ve RiakCS
Riak ve RiakCSRiak ve RiakCS
Riak ve RiakCS
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03
DP:900 Azure Data Fundamentals - Azure'da ilişkisel olmayan veriler-03
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
Veri tabanı
Veri tabanıVeri tabanı
Veri tabanı
 
Veritabanı
VeritabanıVeritabanı
Veritabanı
 

Mongodb Ödev- İnternet programcılığı- IP2-Vize 2

  • 1. İnternet Programcılığı 2 – vize 2 Gülin Daşdan - Demet Saçlı 13125027 - 13125012
  • 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
  • 15. C# İLE MONGODB VERİTABANI BAĞLANTISI try{ var conn = new MongoDB.Mongo(); conn.Connect(); MessageBox.Show("Connected"); } catch (Exception ex) { MessageBox.Show(ex.Message); }
  • 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() ; }