106
MONGODB WORKSHOP { meetup: “NYC Open Data”, presenters: [“Kannan Sankaran”, “Roman Kubiak”], host: “Vivian”, location: “ThoughtWorks”, audience: “You guys” }

Mongodbworkshop I: get started

Embed Size (px)

DESCRIPTION

It is a NYC Open Data Meetup event. All credits went to Kannan and Roman. Event link: http://www.meetup.com/NYC-Open-Data/events/141123082/ Blog Post: http://www.nycopendata.com/2014/02/11/mongodb/

Citation preview

Page 1: Mongodbworkshop I: get started

MONGODB WORKSHOP{

meetup: “NYC Open Data”, presenters: [“Kannan Sankaran”, “Roman Kubiak”],host: “Vivian”,location: “ThoughtWorks”,audience: “You guys”

}

Page 2: Mongodbworkshop I: get started

MONGODB WORKSHOP{

meetup: “NYC Open Data”, presenters: [“Kannan Sankaran”, “Roman Kubiak”],host: “Vivian is awesome, THANK YOU”,location: “ThoughtWorks is awesome, THANK YOU”,audience: “You guys are awesome, THANK YOU”

}

Page 3: Mongodbworkshop I: get started

OUR TOPICSOVERVIEW OF DATABASES

WHAT IS MONGODB?

MONGODB, NOSQL, AND RELATIONAL DATABASES

A PEEK AT MONGODB COMMANDS

SHARDING AND REPLICATION IN MONGODB

FUTURE OF MONGODB AND US

DEMO

WORKSHOP

Page 4: Mongodbworkshop I: get started

ARCHITECT

MONGO PIE

Page 5: Mongodbworkshop I: get started

OVERVIEW OF DATABASES

Page 6: Mongodbworkshop I: get started

ROWSCOLUMNS

TABLES

ORGANIZING DATA

Page 7: Mongodbworkshop I: get started

DATA SPREAD OUT IN VARIOUS

TABLES

Page 8: Mongodbworkshop I: get started

DATA MAY BE RELATED

Page 9: Mongodbworkshop I: get started

1980s 1990s 2000s 20071970s

RELATIONAL DATABASES

(RDBMS) CREATED

CLIENT/SERVER MODEL

STRUCTURED QUERY LANGUAGE (SQL) CREATED

RDBMS CONTINUE TO BE POPULAR

INTERNET ARRIVES

INTERNET GROWS

NoSQL DATABASES EMERGE

MONGODB CREATED

DATABASES AND THEIR GROWTH

Page 10: Mongodbworkshop I: get started

WHAT IS NoSQL?

Page 11: Mongodbworkshop I: get started

A TWITTER HASHTAG#nosql

Page 12: Mongodbworkshop I: get started

NOSQL GENERALLY REFERS TO DATABASES THAT DO NOT HAVE

A FIXED ROW-COLUMN DATA ORGANIZATION STRUCTURE.

Page 13: Mongodbworkshop I: get started

WHAT IS MONGODB?

Page 14: Mongodbworkshop I: get started

A HUMONGOUS NoSQL DB

Page 15: Mongodbworkshop I: get started

DOCUMENTS NOT ROWSCOLLECTIONS NOT TABLES

A HUMONGOUS NoSQL DBWHERE DATA IS ORGANIZED BY

Page 16: Mongodbworkshop I: get started

WHAT IS A DOCUMENT?

Page 17: Mongodbworkshop I: get started

A DOCUMENT IS LIKE A ROW…

{_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”

}

Page 18: Mongodbworkshop I: get started

…BUT IT IS MORE FLEXIBLE{

_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”,payments: {

car: “100.50”,hotel: “200”

}}

THAT LOOKS LIKE A DOCUMENT WITHIN ANOTHER DOCUMENT!

{_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”,payments: {

car: “100.50”,hotel: “200”

},tags: [“shirt”, “tie”]

}

WHAT IS THIS? MULTIPLE VALUES WITHIN A COLUMN?

Page 19: Mongodbworkshop I: get started

HOW LARGE CAN THIS DOCUMENT BE?

{_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”,payments: {

car: “100.50”,hotel: “200”

}………

}

UP TO 16 MB

LEO TOLSTOY’S 1225-PAGE BOOK ON WAR AND PEACE CAN FIT IN 1 DOCUMENT, AS IT IS ONLY AROUND 3 MB.

Page 20: Mongodbworkshop I: get started

WELL, ALMOST!

ISN’T THAT JSON?

Page 21: Mongodbworkshop I: get started

WHAT IS JSON?

WEB SERVER

MONGODB DATABASE

{

“vehicle”: “Chevy Malibu 2014”,“price”: { “min”: 22340, “max”: 29950 },“citympg”: 25

}

{ “make”: “Chevy”,“model”: “Malibu”,“year”: 2014

}

Page 22: Mongodbworkshop I: get started

WHAT IS JSON?

{

vehicle: “car”, make: “Malibu”,color: “blue”

}

JAVASCRIPT OBJECT NOTATION NAME-VALUE PAIRS

{ name: “Kannan”, gender: “male”,favorites: {

color: “blue”},interests: [“MongoDB”, “R”]

}

Page 23: Mongodbworkshop I: get started

MONGODB DOCUMENT{

_id: ObjectID(“12AB34CD56EF”),name: “Kannan”,

gender: “male”,

favorites:

{

color: “blue”

},

interests: [“MongoDB”, “R”],

date: new Date()

}

Page 24: Mongodbworkshop I: get started

WHAT IS A COLLECTION?

Page 25: Mongodbworkshop I: get started

A GROUP OF DOCUMENTS

{_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”

}{

_id: ObjectID(“78AB34CD56EF”),name: “Roman Ku”,orderDate: “2-1-2014”

}{

_id: ObjectID(“56AB34CD56EF”),name: “Eva Green”,orderDate: “2-1-2014”

}

{_id: ObjectID(“34AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”,tags: [“shirt”, “tie”]

}{

_id: ObjectID(“90AB34CD56EF”),name: “Roman Ku”,orderDate: “2-1-2014”,payments: { car: “100.50”, hotel: “200” }

}{

_id: ObjectID(“13AB34CD56EF”),name: “Eva Green”,orderDate: “2-1-2014”

}

{_id: ObjectID(“35AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”

}{

_id: ObjectID(“79AB34CD56EF”),vehicle: “car”, make: “Malibu”,color: “blue”

}{

_id: ObjectID(“57AB34CD56EF”),name: “Eva Green”,orderDate: “2-1-2014”,tags: [“shirt”, “tie”]

}

SIMILAR DIFFERENT VERY DIFFERENT

Page 26: Mongodbworkshop I: get started

MONGODB IS...

A DOCUMENT-ORIENTED NOSQL DATABASE WHERE DATA CONSISTS OF

DOCUMENTS STORED IN COLLECTIONS.

Page 27: Mongodbworkshop I: get started

MONGODB FEATURES

EASY TO LEARNDYNAMIC QUERY LANGUAGE - SEARCH BY FIELDS, REGULAR EXPRESSIONS- USER-DEFINED JAVASCRIPT FUNCTIONS- AGGREGATION, INCLUDING MAP/REDUCEINDEXING – SINGLE, COMPOUND, GEOSPATIALREPLICATIONLOAD BALANCING USING SHARDINGGRIDFS TO STORE FILES

Page 28: Mongodbworkshop I: get started

MONGODB USAGE

CONTENT MANAGEMENT SYSTEMSE-COMMERCE WEBSITESLOG DATA AND HIERARCHICAL AGGREGATIONREAL-TIME ANALYTICS

Page 29: Mongodbworkshop I: get started

MONGODB, NOSQL, AND RELATIONAL DATABASES

Page 30: Mongodbworkshop I: get started

1980s 1990s 2000s 20071970s

BERKELEY INGRES

ORACLE

INFORMIX

DB2

SYBASE

SQL SERVER

MS ACCESS

POSTGRESQL

MYSQL

NETEZZA

GREENPLUM

VERTICA

MARIADB

MONGODB

DATABASE MANAGEMENT SYSTEMS

MOST SYSTEMS USE SOME FLAVOR OF SQL

Page 31: Mongodbworkshop I: get started

RELATIONAL DATABASES WERE / STILL ARE THE DEFACTO IN SEVERAL

COMPANIES.

Page 32: Mongodbworkshop I: get started

RELATIONAL DATABASE FEATURESC.R.U.D. OPERATIONS

STRUCTURED QUERY LANGUAGE (SQL)

FIXED DATABASE SCHEMAS

NORMALIZATION

REFERENTIAL INTEGRITY(E.G. FOREIGN KEYS, CONSTRAINTS)

JOINS

TRANSACTIONS - A.C.I.D. PROPERTIES

INDEXES

Page 33: Mongodbworkshop I: get started

IN THE LATE 90s/EARLY 2000s…

DOT COM BUBBLE

DOT COM BUST

WEB SERVICES

SOCIAL NETWORKS

GOOGLE, AMAZON

COMPUTER OWNERS/USERS

WEBSITE DATA COLLECTION

DATABASE SIZES

Page 34: Mongodbworkshop I: get started

COMPUTING/STORAGE RESOURCES BECAME A

CHALLENGE FOR SMALLER COMPANIES LIKE GOOGLE AND

AMAZON THAT HAD LOTS OF DATA.

Page 35: Mongodbworkshop I: get started

SCALE UP

MORE DISK SPACE

MORE RAM

MORE PROCESSORS

MORE EXPENSIVE

SINGLE POINT OF FAILURE

HARDWARE HAS LIMITS!

BIGGER MACHINE

SCALE OUT

LESS DISK SPACE

LESS RAM

LESS PROCESSORS

LESS EXPENSIVE

NO SINGLE POINT OF FAILURE

HIGHER RELIABILITY DESPITE FAILURE OF INDIVIDUAL MACHINES

SMALLER MACHINES

Page 36: Mongodbworkshop I: get started

RELATIONAL DATABASES WERE DESIGNED TO OPERATE ON A

SINGLE MACHINE, AND SCALING OUT MEANT A LOT OF

CHALLENGES.

Page 37: Mongodbworkshop I: get started

SPLITTING DATA FOR SCALE OUT

BY COLUMNS BY

ROWS

Page 38: Mongodbworkshop I: get started

WORDPRESS MYSQL SCHEMA WITH 2 TABLES

Page 39: Mongodbworkshop I: get started

A JOIN QUERY IN MYSQLWP_POSTS

SELECT p.post_author, p.post_date, c.comment_author, c.comment_dateFROM wp_posts AS p INNER JOIN wp_comments AS c ON p.ID = c.comment_post_IDWHERE p.ID = 1;

WP_COMMENTS

Page 40: Mongodbworkshop I: get started

A JOIN QUERY IN MYSQLWP_POSTS WP_COMMENTS

RESULT

Page 41: Mongodbworkshop I: get started

SCALE OUT DATA BY ROWSWP_POSTS

A

B

WP_COMMENTSC

D

Page 42: Mongodbworkshop I: get started

HOW COMPLICATED

WOULD SCALING THIS

BE?

Page 43: Mongodbworkshop I: get started

JOINS MAY GET REALLY MESSY WITH MANY MACHINES

(DISTRIBUTED JOINS)

Page 44: Mongodbworkshop I: get started

TRANSACTIONSWP_POSTS

BEGIN TRANSACTIONTRY

DELETE FROM wp_comments AS cWHERE c.comment_post_ID = 1;

DELETE FROM wp_posts AS pWHERE p.ID = 1;

CATCHIF ERROR THEN ROLLBACK TRANSACTION

COMMIT TRANSACTIONEND TRANSACTION

WP_COMMENTS

MUST SATISFY A.C.I.D.

PROPERTIES

Page 45: Mongodbworkshop I: get started

TRANSACTIONS MAY TAKE A LONG TIME TO EXECUTE IF DATA

IS ON DIFFERENT MACHINES (DISTRIBUTED TRANSACTIONS)

Page 46: Mongodbworkshop I: get started

TO SPLIT THE DATA, A WHOLE BUNCH OF COMPROMISES

MUST BE MADE IN RELATIONAL DATABASES

Page 47: Mongodbworkshop I: get started

THIS GAVE RISE TO NON-RELATIONAL SOLUTIONS

Page 48: Mongodbworkshop I: get started

GOOGLEAMAZON

Page 49: Mongodbworkshop I: get started

NoSQL SYSTEM CHARACTERISTICSC.R.U.D. OPERATIONS

STRUCTURED QUERY LANGUAGE (SQL)

FIXED DATABASE SCHEMAS

NORMALIZATION

REFERENTIAL INTEGRITY(E.G. FOREIGN KEYS, CONSTRAINTS)

JOINS

TRANSACTIONS – LIMITED A.C.I.D. PROPERTIES

INDEXES

OPEN SOURCE

Page 50: Mongodbworkshop I: get started
Page 51: Mongodbworkshop I: get started

HOW IS THIS SCALABILITY ACHIEVED IN MONGODB?

Page 52: Mongodbworkshop I: get started

STACKING THE DATA

Page 53: Mongodbworkshop I: get started

STACKING THE DATAWP_POSTS

WP_COMMENTS

NO NEED TO JOIN

{_id: 1,post_author: “Amy W”,post_date: “1/1/2014”,comments: [{

comment_author: “bestguy”,comment_date: “1/1/2014”

},{comment_author: “baddie”,comment_date: “1/10/2014”

},{comment_author: “clever24”,comment_date: “1/11/2014”

}]}

Page 54: Mongodbworkshop I: get started

NOW, EACH DOCUMENT CAN BE IN A DIFFERENT MACHINE

Page 55: Mongodbworkshop I: get started

WHAT ABOUT TRANSACTIONS?

Page 56: Mongodbworkshop I: get started

MONGODB DOES NOT SUPPORT TRANSACTIONS

Page 57: Mongodbworkshop I: get started

BUT SINGLE DOCUMENT UPDATE IS ATOMIC{

_id: 1,post_author: “Amy W”,post_date: “1/1/2014”,comments: [{

comment_author: “bestguy”,comment_date: “1/1/2014”

},{comment_author: “baddie”,comment_date: “1/10/2014”

},{comment_author: “clever24”,comment_date: “1/11/2014”

}]}

Page 58: Mongodbworkshop I: get started

THE KEY IS TO FOCUS ONTHE DATA MODEL

Page 59: Mongodbworkshop I: get started

MONGODB CHARACTERISTICSC.R.U.D. OPERATIONS

STRUCTURED QUERY LANGUAGE (SQL) DYNAMIC QUERY LANGUAGE

FIXED DATABASE SCHEMASFLEXIBLE DATABASE SCHEMAS

NORMALIZATION

REFERENTIAL INTEGRITY(E.G. FOREIGN KEYS, CONSTRAINTS)

JOINS

TRANSACTIONS – LIMITED A.C.I.D. PROPERTIES

INDEXES

OPEN SOURCE

Page 60: Mongodbworkshop I: get started

WHEN NOT TO USE MONGODB

IF TRANSACTIONS ARE A MUST

IF JOINS ARE ABSOLUTELY NECESSARY

SOFTWARE PRODUCTS LIKE WORDPRESS THAT ALREADY HAVE TONS OF SUPPORT FOR RELATIONAL DATABASES

Page 61: Mongodbworkshop I: get started

FOR MONGODB vs MYSQL ARGUMENTS, WATCH…

Source: http://www.youtube.com/watch?v=b2F-DItXtZs

Page 62: Mongodbworkshop I: get started

A PEEK AT MONGODB COMMANDS

Page 63: Mongodbworkshop I: get started

{ _id: ObjectID(“A1234566789”), name: “Ed Brown”, orderDate: “2-1-2014”

}{

_id: ObjectID(“A1234566789”), name: “Roman Ku”, orderDate: “1-1-2014”

}{

_id: ObjectID(“A1234566789”), name: “Eva Green”, orderDate: “10-12-2013”

}

MONGODB IS A DOCUMENT-ORIENTED DATABASE

DOCUMENTS ARE INTERNALLY STORED AS BSON (BINARY JSON)

Page 64: Mongodbworkshop I: get started

MONGODB FEATURES

EASY TO LEARNDYNAMIC QUERY LANGUAGE - SEARCH BY FIELDS, REGULAR EXPRESSIONS- USER-DEFINED JAVASCRIPT FUNCTIONS- AGGREGATION, INCLUDING MAP/REDUCEINDEXING – SINGLE, COMPOUND, GEOSPATIALREPLICATIONLOAD BALANCING USING SHARDINGGRIDFS TO STORE FILES

Page 65: Mongodbworkshop I: get started

MONGODB SYNTAX SEEMS TO BE BORROWED FROM…

- MYSQL

- JSON

- JAVASCRIPT

- UNIX

Page 66: Mongodbworkshop I: get started

MONGODB SUPPORTS SEVERAL LANGUAGES

DRIVERS FOR

- PYTHON

- NODE.JS

- C#

- HADOOP

- R

AND MANY MORE

Page 67: Mongodbworkshop I: get started

MONGODB TERMINOLOGYRDBMS MONGODBDATABASE DATABASE

TABLE COLLECTION

ROW DOCUMENT

A DATABASE CAN HAVE 1 OR MORE COLLECTIONS.

A COLLECTION CAN HAVE 1 OR MORE DOCUMENTS.

A DOCUMENT CAN HAVE 1 OR MORE NAME-VALUE PAIRS, AND/OR 1 OR MORE EMBEDDED DOCUMENTS.

Page 68: Mongodbworkshop I: get started

MONGODB SUPPORTS SEVERAL DATA TYPES

STRING

NUMBER

BOOLEAN

ARRAY

DATE

EMBEDDED DOCUMENT

NULL

Page 69: Mongodbworkshop I: get started

MONGODB OPERATIONS

C.R.U.D.CREATE

READ

UPDATE

DELETE

Page 70: Mongodbworkshop I: get started

CONNECTING TO MONGODB

MONGOD

MONGO ROBOMONGO

MONGO SHELL IS A JAVASCRIPT INTERPRETER.

ROBOMONGO HAS THE SAME JAVASCRIPT ENGINE AS THE MONGO SHELL.

Page 71: Mongodbworkshop I: get started

mongoimport -d tennis –c ParksNYC --type json --drop < ParksNYC.json

IMPORT JSON TO MONGO COLLECTION

Page 72: Mongodbworkshop I: get started

CREATE TABLE ParksNYC

(

id int identity(1, 1),

Prop_ID varchar(10),

Name varchar(50) not null,

Location varchar(20) not null,

EstablishedOn datetime

)

SQL MONGODB

CREATE COLLECTION

Page 73: Mongodbworkshop I: get started

INSERT ParksNYC (Prop_ID, Name, Location, EstablishedOn)

VALUES(’Q900’, ’Ridge Park’, ‘1843 Norman St.’, ‘1/1/1970’)

db.ParksNYC.insert({

Prop_ID : "Q900",

Name : "Ridge Park",

Location : ”1843 Norman St.”,

EstablishedOn: “1/1/1970”

})

SQL MONGODB

CREATE DOCUMENT

Prop_ID Name Location EstablishedOn

Q900 Ridge Park 1843 Norman St. 1/1/1970

Page 74: Mongodbworkshop I: get started

SELECT * FROM ParksNYC

SQL MONGODB

READ ALL DOCUMENTS

db.ParksNYC.find()

Page 75: Mongodbworkshop I: get started

SELECT * FROM ParksNYC

WHERE Name = "Ridge Park"

SQL MONGODB

READ SPECIFIC DOCUMENT

db.ParksNYC.find(

{

Name : "Ridge Park”

})

Page 76: Mongodbworkshop I: get started

SELECT TOP 1 * FROM ParksNYC

SQL MONGODB

READ FIRST DOCUMENT

db.ParksNYC.findOne()

Page 77: Mongodbworkshop I: get started

SELECT id, Name FROM ParksNYC

SQL MONGODB

READ SPECIFIC FIELDS IN DOCUMENT

db.ParksNYC.find(

{ },{

_id: 1, Name: 1

}

)

Page 78: Mongodbworkshop I: get started

SELECT id, Name FROM ParksNYC WHERE Courts > 5AND Courts <= 8

SQL MONGODB

READ DOCUMENTS WITH RANGE CRITERIA

db.ParksNYC.find(

{

Courts: { $gt: 5, $lte: 8}

}

)

Page 79: Mongodbworkshop I: get started

SELECT id, Name FROM ParksNYC WHERE NAME LIKE ‘F%’

SQL MONGODB

READ DOCUMENTS THAT START WITH A LETTER (REGULAR EXPRESSION)

db.ParksNYC.find(

{

Name: /^F/

}

)

Page 80: Mongodbworkshop I: get started

UPDATE ParksNYCSET VisitDate = ‘1/1/2014’

SQL MONGODB

UPDATE FIELD IN DOCUMENT

db.ParksNYC.update({ }, {

$set: { VisitDate: "1/1/2014" }

},{ multi: true}

)

Page 81: Mongodbworkshop I: get started

DELETE FROM ParksNYCWhere Name = ‘Ridge Park’

SQL MONGODB

DELETE DOCUMENT

db.ParksNYC.remove(

{

Name : “Ridge Park”})

Page 82: Mongodbworkshop I: get started

SELECT COUNT(Name) AS Parks_Number,

SUM(Courts) AS Courts_Number

FROM ParksNYC

GROUP BY Accessible

SQL MONGODB

GROUP BY AND SUM

db.ParksNYC.aggregate({ $group :

{_id : "$Accessible", Parks_Number : { $sum : 1 }, Courts_Number :

{ $sum : "$Courts" } }

})

Page 83: Mongodbworkshop I: get started

SHARDING AND REPLICATION IN MONGODB

Page 84: Mongodbworkshop I: get started

EACH DOCUMENT CAN BE IN A DIFFERENT MACHINE

Page 85: Mongodbworkshop I: get started

HOW DOES MONGODB DO THIS?

Page 86: Mongodbworkshop I: get started

AUTOSHARDING, FOR A COLLECTION

Page 87: Mongodbworkshop I: get started

MONGODB CLUSTER

MONGOS

CLIENT

MONGOD MONGOD MONGOD

CLIENT

MONGOD

Page 88: Mongodbworkshop I: get started

SHARDING STEPS1. ENABLE SHARDING ON DATABASE.2. PICK A SHARD KEY FROM THE COLLECTION.

MAKE SURE THE KEY IS- INDEXED- SUFFICIENTLY UNIQUE SO IT WILL HAVE A VARIETY OF UNIQUE VALUES.

3. SIT BACK AND RELAX. MONGODB WILL AUTOMATICALLY DO THE SHARDING.

Page 89: Mongodbworkshop I: get started

SHARDING WP_POSTS COLLECTION{

_id: 1,post_author: “Amy W”,post_date: “1/1/2014”,comments: [{

comment_author: “bestguy”,comment_date: “1/1/2014”

},{comment_author: “baddie”,comment_date: “1/10/2014”

},{comment_author: “clever24”,comment_date: “1/11/2014”

}]}

SHARD KEY

Page 90: Mongodbworkshop I: get started

BREAKING THE USERS INTO CHUNKS

$minKeyAbba1234

Abba1235CarlW

CarlZFrankT

FrankYJackA

JackBLambV

LambWRobF

RobGTimA

TimB$maxKey

Page 91: Mongodbworkshop I: get started

BREAKING THE RANGE INTO CHUNKS

$minKeyAbba1234

Abba1235CarlW

CarlZFrankT

FrankYJackA

JackBLambV

LambWRobF

RobGTimA

TimB$maxKeyMONGOS

CLIENT

MONGOD

MONGOD

MONGOD

SHARD0000

SHARD0001

SHARD0002

Page 92: Mongodbworkshop I: get started

BENEFITS OF SHARDING

1. INCREASES AVAILABLE MEMORY.2. REDUCES LOAD ON THE SERVER.3. INCREASES HARD DISK SPACE.4. LOCATION-BASED SHARD KEYS CAN PUT DATA

CLOSE TO THE USERS AND KEEP RELATED DATA TOGETHER.

Page 93: Mongodbworkshop I: get started

MASTER-SLAVE REPLICATION

MONGOD

CLIENT

MASTER SLAVE SLAVE

REPLICA SET

MONGOD MONGOD

Page 94: Mongodbworkshop I: get started

MASTER-SLAVE REPLICATION

MONGOD

CLIENT

MASTER SLAVE SLAVE

REPLICA SET

MONGOD MONGOD

ELECTION

Page 95: Mongodbworkshop I: get started

MASTER-SLAVE REPLICATION

MONGOD

CLIENT

MASTER SLAVE

REPLICA SET

MONGOD MONGOD

MINIMUM 3 MEMBERS TO FORM REPLICA SET

Page 96: Mongodbworkshop I: get started

MASTER-SLAVE REPLICATION

MONGOD

CLIENT

MASTER SLAVE

REPLICA SET

MONGOD MONGOD

SLAVE

REPLICATION SOLVES THE PROBLEM OF AVAILABILITY

AND FAULT TOLERANCE

Page 97: Mongodbworkshop I: get started

FUTURE OF MONGODB AND US

Page 98: Mongodbworkshop I: get started

COMPANIES USING MONGODB

Page 99: Mongodbworkshop I: get started

MONGODB WINS AWARD

Page 100: Mongodbworkshop I: get started

36 MOST VALUABLE STARTUPS ON EARTH

Page 101: Mongodbworkshop I: get started

ORACLE

SQL SERVER

MONGODB

POSTGRESQL

?RIAK

NEO4J

POLYGLOT PERSISTENCE

GOOD TO KNOW BOTH SQL AND

NOSQL

MYSQL

DREMEL

Page 102: Mongodbworkshop I: get started

ARCHITECT

WHAT WE DID NOT COVER

SECURITY

BACKUP/RECOVERY

DATA MODELING

Page 103: Mongodbworkshop I: get started

THANK YOU VERY MUCH

Page 104: Mongodbworkshop I: get started

AND THANK YOU TO EVERYONE WHO HELPED US

DR. BILL HOWE, UNIVERSITY OF WASHINGTON

JASON CHEN, MONGODB RECRUITER

KRISTINA CHODOROW (DEFINITIVE GUIDE AUTHOR)

FRANCESCA KRIHELY (MONGODB COMMUNITY MANAGER)

DR. MARKUS SCHMIDBERGER, RMONGODB

JOHANNES BRANDSTETTER, MONGOSOUP (THE FIRST EUROPEAN PARTNER OF MONGODB TO PROVIDE MONGODB AS A SERVICE)

DR. RAMNATH VAIDYANATHAN, RCHARTS

Page 105: Mongodbworkshop I: get started

REFERENCESMongoDBhttp://www.mongodb.org

Book: MongoDB, The Definitive Guide – Kristina Chodorow

Book: NoSQL Distilled – Pramod J. Sadalage and Martin Fowler

NoSQLhttp://en.wikipedia.org/wiki/NoSQL

MongoDB Use Caseshttp://www.mongodb.com/use-cases

First NoSQL Meetup Noteshttp://developer.yahoo.com/blogs/ydn/notes-nosql-meetup-7663.html

Billion dollar clubhttp://graphics.wsj.com/billion-dollar-club/

Photos from Google

Page 106: Mongodbworkshop I: get started

DEMO