Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

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

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
Nosql ve mongoDB
Nosql ve mongoDB
Cargando en…3
×

Eche un vistazo a continuación

1 de 18 Anuncio

Más Contenido Relacionado

Anuncio

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

Más reciente (20)

Anuncio

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

  1. 1. İnternet Programcılığı 2 – vize 2 Gülin Daşdan - Demet Saçlı 13125027 - 13125012
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. 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.
  11. 11. MongoDB hangi dillerde çalışabilir ? C++, C# / .NET, Erlang, Haskell, Java, JavaScript, Lisp, Perl, PHP, Python, Ruby, Scala
  12. 12. 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); }
  13. 13. İ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); }
  14. 14. 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); }
  15. 15. 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() ; }

×