40
MongoDB on Azure for Developers Mark Greenway @markKgreenway [email protected] Listen to more on this .NET Rocks Episode 921 on November 7 th

MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

MongoDB on Azure for DevelopersMark Greenway

@[email protected]

Listen to more on this .NET Rocks Episode 921 on

November 7th

Page 2: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Thanks to our

AWESOME sponsors!

Page 3: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

What we will talk about

Use Mongo db with C#Patterns for data access / storage

Page 4: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

What I won’t cover

Managing serversShardingMassive scaleAbsolutes

Page 5: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Why not cover that?

Page 6: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP
Page 7: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Dev Team Photo

Page 8: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

My Biggest Collection (thus far)

Page 9: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

NoSQLNo ACID –PerformanceScaling Simplicity Not Only SQL

http://css.dzone.com/articles/how-acid-mongodb

Page 10: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Mongo itself

Document Database

DatabaseCollection

Document

Key Value

Single Threaded (its JS!)

Server side JS execution BSON Capped Collections

Page 11: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Offerings

Page 12: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

C# Access demo

Page 13: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Story Time!

Page 14: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Schema

Page 15: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP
Page 16: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Uptime Robot

www.uptimerobot.com

Page 17: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP
Page 18: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

So That’s how I used mongo on a project

Page 19: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Curveball

Page 20: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP
Page 21: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP
Page 22: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Map

Page 23: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Reduce

Page 24: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Finalize

Page 25: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

C#

Page 26: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP Engineer/Evangelist for MongoDB at 10gen. derickrethans.nl

Page 27: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Normalizing Data

Familiar with this with SQLBenefitsDrawbacksScenarioAuthor -- Books

Presenter
Presentation Notes
No Joins
Page 28: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

De normalizing DataPoint in Time DataThings that will be accessed togetherTags Join tables

Documents should try to be self sufficient

Embed for Atomicity

Page 29: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

{"_id": {

"$uuid": "419265a2-f31e-7f06-f8be-1b1649c3db8f"},"PolicyId": 41662,"TagId": 33,"TagName": "Engines","d": false,"l": false,"CurrentVersion": {

"Filename": "Marine Jan10.xls","MD5": "67F6D6C62478F0482B1C1006CD2ABC83","C": {

"$date": "2010-01-14T19:22:36.407Z"},"Usr": "tbridges","ContentType": "application/x-msexcel","Uri": "8578","uploading": false

},

"Versions": [{

"Filename": " Marine Jan10 (1).xls ","MD5": "8C53285C42B0D8DCEAEAA63125DC248D","C": {

"$date": "2010-02-02T13:31:40.970Z"},"Usr": "kcameron","ContentType": "application/x-msexcel","Uri": "9389","uploading": false

},{

"Filename": "Marine Jan10.xls ","MD5": "67F6D6C62478F0482B1C1006CD2ABC83","C": {

"$date": "2010-01-14T19:22:36.407Z"},"Usr": "tbridges","ContentType": "application/x-msexcel","Uri": "8578","uploading": false

},{

"Filename": " Marine Jan10(1).xls ","MD5": "17975AD7D2375CA0FB02F1CAA067CFCC","C": {

"$date": "2010-01-22T15:49:24.500Z"},"Usr": "kcameron","ContentType": "application/x-msexcel","Uri": "8945","uploading": false

}]

Page 30: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

C# Access

Presenter
Presentation Notes
Infrastructure\MongoStuff.cs Controllers\StandardsControllers.cs
Page 31: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

C# Constructor with Factory

Demo

Presenter
Presentation Notes
Infrastructure\MongoStuff.cs Controllers\StandardsControllers.cs
Page 32: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Web API with SQLMy way - CRUD start

Presenter
Presentation Notes
APIControllers/base/RESTController.cs
Page 33: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Web API with Mongo

Presenter
Presentation Notes
APIControllers/base/RESTMongoController.cs
Page 34: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Side by Side

Page 35: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Giant page of numbersSQL Mongo

Get all Get 1 Create Update Get all Get 1 Create Update1 84 79 257 261 66 49 51 812 81 77 165 157 60 50 46 493 68 68 165 176 53 49 46 474 79 74 254 197 52 47 50 545 87 85 240 302 49 51 48 526 75 62 166 164 50 48 51 467 66 60 162 169 52 47 51 468 80 68 156 191 61 46 48 559 112 69 226 184 85 48 51 4810 71 66 173 201 50 50 48 47

Page 36: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

0

100

200

300

400

Get all Get 1 Create Update

Orange SQL - Blue Mongo

Page 37: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Average Percent Faster

Get all Get 1 Create Update

28% 31% 75% 74%

Page 38: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

References http://docs.mongodb.org/manual/

50 Tips and Tricks for MongoDB Developers by Kristina Chodorow (O’Reilly). Copyright 2011 Kristina Chodorow, 978-1-449-30461-4.

MongoDB Applied Design Patterns by Rick Copeland (O’Reilly). Copyright 2013 Richard D. Copeland, Jr., 978-1-449-34004-9.

Page 39: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

MongoDB on Azure for Developers

Mark Greenway@markKgreenway

[email protected]

Listen to more on this .NET Rocks Episode 921 on

November 7th

Page 40: MongoDB on Azure for Developersmgreenway.blob.core.windows.net/blog/.../MongoDB-on... · PHP internals person, author of Xdebug; OpenStreetMap and mapping enthusiast. Works as PHP

Extra Time?Name a scenarionormalize vs. de-normalize data