MongoDB ve C# Driver'ı
-
Upload
serdar-buyuktemiz -
Category
Technology
-
view
1.067 -
download
2
description
Transcript of MongoDB ve C# Driver'ı
MongoDB And C#
Serdar Büyüktemiz
@hserdarb / serdarb.com
altdotnetturkiye
Web Application Developer
Program
• No-Sql
• MongoDB
• C# Driver
• Demo
NO-SQL
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…)
http://jeeconf.com/archive/jeeconf-2011/materials/graph-db/
Veri tabanı Boyut/Karmaşa Grafiği
http://jeeconf.com/archive/jeeconf-2011/materials/graph-db/
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
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.
İdeal MongoDB Başlangıç Setup’ı
• Yazılımcı olarak kurmakla uğraşmayın bir bilen size kursun (spp42.com/mongodb/danismanlik)
MONGODB
RDBMS => MongoDB
RDBMS MongoDB
Table, View Collection
Row JSON Document
Index Index
Join Embeded Document
Partition Shard
Partition Key Shard Key
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)
İş Büyüdükçe Aradaki Fark Ortaya Çıkıyor
http://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/
Güzel bir web tutorial
http://tutorial.mongly.com/tutorialBy Karl Seguin
C# DRIVER
Official C# Driver
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
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
MongoDB’ye Bağlanmak
• GetDatabase methodu db yoksa sizin için oluşturuyor.
• http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Connectionstrings
• mongodb://[username:password@]hostname[:port][/[database][?options]]
MongoCollection
• GetCollection<MyType>
Insert
Find
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…
Map Reduce
Demo
• https://bitbucket.org/serdarb/mongo-c-driver-poc
• https://github.com/serdarb/Mongo-C--Driver-POC
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/perform-two-phase-commits/
– https://github.com/rystsov/mongodb-transaction-example
Indexing
İ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 indexbelirlememizde bize kılavuzluk edecektir
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/