SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
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/tutorial
By 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#CSharpDriverTut
    orial-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/perfor
    m-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 index
    belirlememizde 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/

Mais conteúdo relacionado

Semelhante a MongoDB ve C# Driver'ı

AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkara JUG
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web ProgramlamaCihan Özhan
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2gulindasdan
 
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar Yaratın
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar YaratınYazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar Yaratın
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar YaratınYusuf Ozbay
 
Programlama odev-sitesi
Programlama odev-sitesiProgramlama odev-sitesi
Programlama odev-sitesisersld96
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web ProgramlamaCihan Özhan
 
MLaaS - Presenting & Scaling Machine Learning Models as Microservices
MLaaS - Presenting & Scaling Machine Learning Models as MicroservicesMLaaS - Presenting & Scaling Machine Learning Models as Microservices
MLaaS - Presenting & Scaling Machine Learning Models as MicroservicesCihan Özhan
 
Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Omer Buyukoglu
 
Xsteel odev-sitesi
Xsteel odev-sitesiXsteel odev-sitesi
Xsteel odev-sitesisersld85
 

Semelhante a MongoDB ve C# Driver'ı (20)

MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
Mongo sunum
Mongo sunumMongo sunum
Mongo sunum
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big Data
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
 
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
12factor apps
12factor apps12factor apps
12factor apps
 
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar Yaratın
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar YaratınYazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar Yaratın
Yazılım Yetekenleri İle Teknik SEO Dünyasında Harikalar Yaratın
 
Php veritabani
Php veritabaniPhp veritabani
Php veritabani
 
Web development
Web developmentWeb development
Web development
 
Programlama odev-sitesi
Programlama odev-sitesiProgramlama odev-sitesi
Programlama odev-sitesi
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
MLaaS - Presenting & Scaling Machine Learning Models as Microservices
MLaaS - Presenting & Scaling Machine Learning Models as MicroservicesMLaaS - Presenting & Scaling Machine Learning Models as Microservices
MLaaS - Presenting & Scaling Machine Learning Models as Microservices
 
Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?
 
Riak ve RiakCS
Riak ve RiakCSRiak ve RiakCS
Riak ve RiakCS
 
Xsteel odev-sitesi
Xsteel odev-sitesiXsteel odev-sitesi
Xsteel odev-sitesi
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
 
React native 101
React native 101React native 101
React native 101
 
NodeJS Nedir
NodeJS NedirNodeJS Nedir
NodeJS Nedir
 

Mais de Serdar Buyuktemiz

Mais de Serdar Buyuktemiz (6)

Temel web güvenliği
Temel web güvenliğiTemel web güvenliği
Temel web güvenliği
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongo db first steps with csharp
Mongo db first steps with csharpMongo db first steps with csharp
Mongo db first steps with csharp
 
Bug tracking tools
Bug tracking toolsBug tracking tools
Bug tracking tools
 
Seo
SeoSeo
Seo
 
Balanced scorecard
Balanced scorecardBalanced scorecard
Balanced scorecard
 

MongoDB ve C# Driver'ı

  • 1. MongoDB And C# Serdar Büyüktemiz @hserdarb / serdarb.com altdotnetturkiye Web Application Developer
  • 2. Program • No-Sql • MongoDB • C# Driver • Demo
  • 4. 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…)
  • 6. Veri tabanı Boyut/Karmaşa Grafiği http://jeeconf.com/archive/jeeconf-2011/materials/graph-db/
  • 7. 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
  • 8. 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.
  • 9. İdeal MongoDB Başlangıç Setup’ı • Yazılımcı olarak kurmakla uğraşmayın bir bilen size kursun (spp42.com/mongodb/danismanlik)
  • 11. RDBMS => MongoDB RDBMS MongoDB Table, View Collection Row JSON Document Index Index Join Embeded Document Partition Shard Partition Key Shard Key
  • 12. 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)
  • 13. İş Büyüdükçe Aradaki Fark Ortaya Çıkıyor http://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/
  • 14. Güzel bir web tutorial http://tutorial.mongly.com/tutorial By Karl Seguin
  • 17. 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
  • 18. 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
  • 19. 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]]
  • 22. Find
  • 23. 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…
  • 26. 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
  • 28. İ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
  • 29. 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/