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