MongoDB Workshop
-
Upload
eagerdeveloper -
Category
Technology
-
view
2.714 -
download
0
description
Transcript of MongoDB Workshop
![Page 1: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/1.jpg)
MONGODB WORKSHOP{
meetup: “NYC Open Data”, presenters: [“Kannan Sankaran”, “Roman Kubiak”],host: “Vivian”,location: “ThoughtWorks”,audience: “You guys”
}
![Page 2: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/2.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/3.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/4.jpg)
ARCHITECT
MONGO PIE
![Page 5: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/5.jpg)
OVERVIEW OF DATABASES
![Page 6: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/6.jpg)
ROWSCOLUMNS
TABLES
ORGANIZING DATA
![Page 7: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/7.jpg)
DATA SPREAD OUT IN VARIOUS
TABLES
![Page 8: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/8.jpg)
DATA MAY BE RELATED
![Page 9: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/9.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/10.jpg)
WHAT IS NoSQL?
![Page 11: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/11.jpg)
A TWITTER HASHTAG#nosql
![Page 12: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/12.jpg)
NOSQL GENERALLY REFERS TO DATABASES THAT DO NOT HAVE
A FIXED ROW-COLUMN DATA ORGANIZATION STRUCTURE.
![Page 13: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/13.jpg)
WHAT IS MONGODB?
![Page 14: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/14.jpg)
A HUMONGOUS NoSQL DB
![Page 15: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/15.jpg)
DOCUMENTS NOT ROWSCOLLECTIONS NOT TABLES
A HUMONGOUS NoSQL DBWHERE DATA IS ORGANIZED BY
![Page 16: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/16.jpg)
WHAT IS A DOCUMENT?
![Page 17: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/17.jpg)
A DOCUMENT IS LIKE A ROW…
{_id: ObjectID(“12AB34CD56EF”),name: “Ed Brown”,orderDate: “2-1-2014”
}
![Page 18: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/18.jpg)
…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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/19.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/20.jpg)
WELL, ALMOST!
ISN’T THAT JSON?
![Page 21: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/21.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/22.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/23.jpg)
MONGODB DOCUMENT{
_id: ObjectID(“12AB34CD56EF”),name: “Kannan”,
gender: “male”,
favorites:
{
color: “blue”
},
interests: [“MongoDB”, “R”],
date: new Date()
}
![Page 24: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/24.jpg)
WHAT IS A COLLECTION?
![Page 25: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/25.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/26.jpg)
MONGODB IS...
A DOCUMENT-ORIENTED NOSQL DATABASE WHERE DATA CONSISTS OF
DOCUMENTS STORED IN COLLECTIONS.
![Page 27: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/27.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/28.jpg)
MONGODB USAGE
CONTENT MANAGEMENT SYSTEMSE-COMMERCE WEBSITESLOG DATA AND HIERARCHICAL AGGREGATIONREAL-TIME ANALYTICS
![Page 29: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/29.jpg)
MONGODB, NOSQL, AND RELATIONAL DATABASES
![Page 30: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/30.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/31.jpg)
RELATIONAL DATABASES WERE / STILL ARE THE DEFACTO IN SEVERAL
COMPANIES.
![Page 32: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/32.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/33.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/34.jpg)
COMPUTING/STORAGE RESOURCES BECAME A
CHALLENGE FOR SMALLER COMPANIES LIKE GOOGLE AND
AMAZON THAT HAD LOTS OF DATA.
![Page 35: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/35.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/36.jpg)
RELATIONAL DATABASES WERE DESIGNED TO OPERATE ON A
SINGLE MACHINE, AND SCALING OUT MEANT A LOT OF
CHALLENGES.
![Page 37: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/37.jpg)
SPLITTING DATA FOR SCALE OUT
BY COLUMNS BY
ROWS
![Page 38: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/38.jpg)
WORDPRESS MYSQL SCHEMA WITH 2 TABLES
![Page 39: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/39.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/40.jpg)
A JOIN QUERY IN MYSQLWP_POSTS WP_COMMENTS
RESULT
![Page 41: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/41.jpg)
SCALE OUT DATA BY ROWSWP_POSTS
A
B
WP_COMMENTSC
D
![Page 42: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/42.jpg)
HOW COMPLICATED
WOULD SCALING THIS
BE?
![Page 43: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/43.jpg)
JOINS MAY GET REALLY MESSY WITH MANY MACHINES
(DISTRIBUTED JOINS)
![Page 44: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/44.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/45.jpg)
TRANSACTIONS MAY TAKE A LONG TIME TO EXECUTE IF DATA
IS ON DIFFERENT MACHINES (DISTRIBUTED TRANSACTIONS)
![Page 46: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/46.jpg)
TO SPLIT THE DATA, A WHOLE BUNCH OF COMPROMISES
MUST BE MADE IN RELATIONAL DATABASES
![Page 47: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/47.jpg)
THIS GAVE RISE TO NON-RELATIONAL SOLUTIONS
![Page 48: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/48.jpg)
GOOGLEAMAZON
![Page 49: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/49.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/50.jpg)
![Page 51: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/51.jpg)
HOW IS THIS SCALABILITY ACHIEVED IN MONGODB?
![Page 52: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/52.jpg)
STACKING THE DATA
![Page 53: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/53.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/54.jpg)
NOW, EACH DOCUMENT CAN BE IN A DIFFERENT MACHINE
![Page 55: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/55.jpg)
WHAT ABOUT TRANSACTIONS?
![Page 56: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/56.jpg)
MONGODB DOES NOT SUPPORT TRANSACTIONS
![Page 57: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/57.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/58.jpg)
THE KEY IS TO FOCUS ONTHE DATA MODEL
![Page 59: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/59.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/60.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/61.jpg)
FOR MONGODB vs MYSQL ARGUMENTS, WATCH…
Source: http://www.youtube.com/watch?v=b2F-DItXtZs
![Page 62: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/62.jpg)
A PEEK AT MONGODB COMMANDS
![Page 63: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/63.jpg)
{ _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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/64.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/65.jpg)
MONGODB SYNTAX SEEMS TO BE BORROWED FROM…
- MYSQL
- JSON
- JAVASCRIPT
- UNIX
![Page 66: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/66.jpg)
MONGODB SUPPORTS SEVERAL LANGUAGES
DRIVERS FOR
- PYTHON
- NODE.JS
- C#
- HADOOP
- R
AND MANY MORE
![Page 67: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/67.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/68.jpg)
MONGODB SUPPORTS SEVERAL DATA TYPES
STRING
NUMBER
BOOLEAN
ARRAY
DATE
EMBEDDED DOCUMENT
NULL
![Page 69: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/69.jpg)
MONGODB OPERATIONS
C.R.U.D.CREATE
READ
UPDATE
DELETE
![Page 70: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/70.jpg)
CONNECTING TO MONGODB
MONGOD
MONGO ROBOMONGO
MONGO SHELL IS A JAVASCRIPT INTERPRETER.
ROBOMONGO HAS THE SAME JAVASCRIPT ENGINE AS THE MONGO SHELL.
![Page 71: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/71.jpg)
mongoimport -d tennis –c ParksNYC --type json --drop < ParksNYC.json
IMPORT JSON TO MONGO COLLECTION
![Page 72: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/72.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/73.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/74.jpg)
SELECT * FROM ParksNYC
SQL MONGODB
READ ALL DOCUMENTS
db.ParksNYC.find()
![Page 75: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/75.jpg)
SELECT * FROM ParksNYC
WHERE Name = "Ridge Park"
SQL MONGODB
READ SPECIFIC DOCUMENT
db.ParksNYC.find(
{
Name : "Ridge Park”
})
![Page 76: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/76.jpg)
SELECT TOP 1 * FROM ParksNYC
SQL MONGODB
READ FIRST DOCUMENT
db.ParksNYC.findOne()
![Page 77: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/77.jpg)
SELECT id, Name FROM ParksNYC
SQL MONGODB
READ SPECIFIC FIELDS IN DOCUMENT
db.ParksNYC.find(
{ },{
_id: 1, Name: 1
}
)
![Page 78: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/78.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/79.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/80.jpg)
UPDATE ParksNYCSET VisitDate = ‘1/1/2014’
SQL MONGODB
UPDATE FIELD IN DOCUMENT
db.ParksNYC.update({ }, {
$set: { VisitDate: "1/1/2014" }
},{ multi: true}
)
![Page 81: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/81.jpg)
DELETE FROM ParksNYCWhere Name = ‘Ridge Park’
SQL MONGODB
DELETE DOCUMENT
db.ParksNYC.remove(
{
Name : “Ridge Park”})
![Page 82: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/82.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/83.jpg)
SHARDING AND REPLICATION IN MONGODB
![Page 84: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/84.jpg)
EACH DOCUMENT CAN BE IN A DIFFERENT MACHINE
![Page 85: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/85.jpg)
HOW DOES MONGODB DO THIS?
![Page 86: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/86.jpg)
AUTOSHARDING, FOR A COLLECTION
![Page 87: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/87.jpg)
MONGODB CLUSTER
MONGOS
CLIENT
MONGOD MONGOD MONGOD
CLIENT
MONGOD
![Page 88: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/88.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/89.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/90.jpg)
BREAKING THE USERS INTO CHUNKS
$minKeyAbba1234
Abba1235CarlW
CarlZFrankT
FrankYJackA
JackBLambV
LambWRobF
RobGTimA
TimB$maxKey
![Page 91: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/91.jpg)
BREAKING THE RANGE INTO CHUNKS
$minKeyAbba1234
Abba1235CarlW
CarlZFrankT
FrankYJackA
JackBLambV
LambWRobF
RobGTimA
TimB$maxKeyMONGOS
CLIENT
MONGOD
MONGOD
MONGOD
SHARD0000
SHARD0001
SHARD0002
![Page 92: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/92.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/93.jpg)
MASTER-SLAVE REPLICATION
MONGOD
CLIENT
MASTER SLAVE SLAVE
REPLICA SET
MONGOD MONGOD
![Page 94: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/94.jpg)
MASTER-SLAVE REPLICATION
MONGOD
CLIENT
MASTER SLAVE SLAVE
REPLICA SET
MONGOD MONGOD
ELECTION
![Page 95: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/95.jpg)
MASTER-SLAVE REPLICATION
MONGOD
CLIENT
MASTER SLAVE
REPLICA SET
MONGOD MONGOD
MINIMUM 3 MEMBERS TO FORM REPLICA SET
![Page 96: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/96.jpg)
MASTER-SLAVE REPLICATION
MONGOD
CLIENT
MASTER SLAVE
REPLICA SET
MONGOD MONGOD
SLAVE
REPLICATION SOLVES THE PROBLEM OF AVAILABILITY
AND FAULT TOLERANCE
![Page 97: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/97.jpg)
FUTURE OF MONGODB AND US
![Page 98: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/98.jpg)
COMPANIES USING MONGODB
![Page 99: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/99.jpg)
MONGODB WINS AWARD
![Page 100: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/100.jpg)
36 MOST VALUABLE STARTUPS ON EARTH
![Page 101: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/101.jpg)
ORACLE
SQL SERVER
MONGODB
POSTGRESQL
?RIAK
NEO4J
POLYGLOT PERSISTENCE
GOOD TO KNOW BOTH SQL AND
NOSQL
MYSQL
DREMEL
![Page 102: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/102.jpg)
ARCHITECT
WHAT WE DID NOT COVER
SECURITY
BACKUP/RECOVERY
DATA MODELING
![Page 103: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/103.jpg)
THANK YOU VERY MUCH
![Page 104: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/104.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/105.jpg)
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: MongoDB Workshop](https://reader033.fdocuments.in/reader033/viewer/2022052822/554f722ab4c905c8088b567c/html5/thumbnails/106.jpg)
DEMO