Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDB ve C# Driver'ı

MongoDB ve C# Driver'ı

Temel seviyede No-Sql ve MongoDB'nin C# driver'ının kullanımının anlatıldığı bir sunumdur.

Avatar for Serdar Büyüktemiz

Serdar Büyüktemiz

December 08, 2012

More Decks by Serdar Büyüktemiz

Other Decks in Programming

Transcript

  1. Dünyada Sadece OLTP Databaseler Yok • Her problemin kendine has

    başka bir çözümü de olabilir. (NO – Not Only SQL) – Karşımıza çıkan işlerin %90’dan fazlası ilişkisel veri tabanlarıyla rahatlıkla çözülebilir… – Ama bunlar da var • Key-Value • Column Oriented • Document (MongoDB, CouchDB) • Graph • OLAP (No-Sql ler arasında anılmıyo…)
  2. NoSQL Problem Çözüm Örnekleri • Key-Value • Uygulama State’ini Saklamak

    (Session) • Column Oriented • Google :) • Data warehouse • Document • Blog (Yazı Yorumları), • Eticaret (Ürün Özellikleri) • Hızlı insert • Graph • Arkadaşımın, arkadaşlarının, arkadaşları… • OLAP • Pek değişmeyen verilerde hızlı rapor gösterimi
  3. Genel Olarak Nasıl Bir DB Lazım? • Kolayca kullanmaya başlayabileceğimiz

    (şemasız) • İşler büyüdüğünde de bizi kaldırabilecek ama küçükken de yük olmayacak • Bize veri kaybettirmeyecek • Daima up olacak • No-Sql veri tabanları genel olarak bu düşünce ile farklı iş sorunlarını çözmek üzere geliştirilmişlerdir.
  4. RDBMS => MongoDB RDBMS MongoDB Table, View Collection Row JSON

    Document Index Index Join Embeded Document Partition Shard Partition Key Shard Key
  5. Neden MongoDB? • Popüler  • Kolay • Şemasız •

    Web projeleri için ideal • High performance (İlişkili bir yapı kurmazsak ve makul oranda «embeded döküman» kullanırsak) • High availability (Replicated servers with automatic master failover) • Easy scalability (Automatic sharding)
  6. BSON Nedir? • BSON, MongoDB’nin «dökümanlar» için kullandığı veri saklama

    ve network transfer formatı. • Binary JSON • http://bsonspec.org/ • http://www.mongodb.org/display/DOCS/BSON
  7. POCO’larla Çalışmak • İşleri kolaylaştıran kurallar… – Parametresiz public constructor

    – Serialize olmasını istediğiniz her Property için Public get ve set
  8. MongoDB’ye Bağlanmak • GetDatabase methodu db yoksa sizin için oluşturuyor.

    • http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTut orial-Connectionstrings • mongodb://[username:password@]hostname[:port][/[database][?options]]
  9. Map Reduce • Mümkün olduğunca çabuk çok miktarda data üzerinde

    paralel olarak işlem yapmak için bir çözüm… • CouchDB incremental Map Reduce Yapıyor…
  10. Transaction • Transaction desteği yok – Çözümümümüz transaction gerektiriyorsa başka

    bir DB kullanmayı düşünebilirsiniz. • Kendiniz geliştirmek isterseniz şu linkleri inceleyebilirsiniz – http://docs.mongodb.org/manual/tutorial/perfor m-two-phase-commits/ – https://github.com/rystsov/mongodb-transaction- example
  11. İpucu • Mongodb’yi notablescan parameteresiyle çalıştırarak sorgularımızın «full table scan»

    yapmamasına emin olabiliriz... – Eğer bir sorgu fulltable scan yapıyorsa hata verecektir. Buda geliştirme anında index belirlememizde bize kılavuzluk edecektir
  12. Sources • http://www.mongodb.org/display/DOCS/Introduction • http://mongly.com/Multiple-Collections-Versus-Embedded-Documents/ • http://openmymind.net/mongodb.pdf • http://www.mongodb.org/display/DOCS/Padding+Factor •

    https://github.com/mongodb/mongo • http://www.codeproject.com/Articles/273145/Using-MongoDB-with-the-Official-Csharp-Driver • http://stackoverflow.com/questions/4067197/mongodb-and-joins • http://www.mongodb.org/display/DOCS/Schema+Design#SchemaDesign-EmbeddingandLinking • http://docs.mongodb.org/manual/applications/database-references/ • http://www.10gen.com/presentations?programming_lang=46 • https://speakerdeck.com/mongodb/whats-new-in-the-net-driver • http://learnmongo.com/ • http://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/ • http://spp42.com/mongodbde-dogru-index-kullanimi-nasil-kontrol-edilir-i/