SlideShare a Scribd company logo
1 of 68
Download to read offline
#MDBlocal
From SQL to NoSQL
Changing Your Mindset
SANFRANCISCO
Girish Dusane
Senior Solution Architect
#MDBLocal
The mental journey from SQL to MongoDB
• Map terms & concepts
from SQL to MongoDB
• Discover the 4 humongous
advantages of MongoDB
• Change your mindset in 3
key ways
#MDBLocal
MongoDB stores data in documents
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
MongoDB stores data in documents
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
Relationships?
#MDBLocal
Modeling data in MongoDB vs SQL
{
first_name: ”Homer",
last_name: ”Simpson",
cell: ”415123456",
city: ”Springfield",
location: [37.407419, -102.618143],
profession: [”technical supervisor", ”nuclear safety inspector"],
cars: [
{
model: “Plymouth Junkerolla",
year: 1986
},
{
model: ”Plymouth Valiant",
year: 1973
}
]
}
#MDBLocal
Modeling data in MongoDB vs SQL
{
first_name: "Randy",
surname: "Marsh",
cell: "415123456",
city: "Southpark",
location: [45.123,47.232],
profession: ["geologist", "hemp farmer"],
cars: [
{
model: "Bentley",
year: 1973
},
{
model: "Rolls Royce",
year: 1965
}
]
}
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
Users
#MDBLocal
{
first_name: ”Randy",
surname: "Marsh",
cell: "415123456",
city: "Southpark",
location: [45.123,47.232],
profession: ["geologist", "hemp farmer"],
cars: [
{
model: "Bentley",
year: 1973
},
{
model: "Rolls Royce",
year: 1965
}
]
}
Modeling data in MongoDB vs SQL
Users
ID user_id profession
10 1 geologist
11 1 hemp farmer
Professions
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
#MDBLocal
{
first_name: ”Randy",
surname: "Marsh",
cell: "415123456",
city: "Southpark",
location: [45.123,47.232],
profession: ["geologist", "hemp farmer"],
cars: [
{
model: "Bentley",
year: 1973
},
{
model: "Rolls Royce",
year: 1965
}
]
}
Modeling data in MongoDB vs SQL
Users
ID user_id profession
10 1 geologist
11 1 hemp farmer
Professions
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
ID user_id model year
20 1 Bentley 1973
21 1 Rolls Royce 1965
Cars
#MDBLocal
Collections vs Tables
{
first_name: ”Randy",
surname: ”Marsh",
cell: "415123456",
city: ”Southpark",
location: [45.123,47.232],
profession: [”geologist", ”hemp farmer"],
cars: [
{
model: "Plymouth Junkerolla ",
year: 1986
},
{
model: "Rolls Royce",
year: 1965
}
]
}
{
first_name: ”Sharon",
surname: ”Marsh",
cell: ”415456789",
city: ”Southpark",
profession: [”receptionist"],
}
{
first_name: ”Stan",
surname: ”Marsh",
city: ”Southpark",
school: ”Southpark
Elementary”
}
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
2 Sharon Marsh 415456789 Southpark NULL NULL
3 Stan Marsh NULL Southpark NULL NULL
UsersUsers
#MDBLocal
Collections vs Tables
{
first_name: ”Sharon",
surname: ”Marsh",
cell: ”415456789",
city: ”Southpark",
profession: [”receptionist"],
}
{
first_name: ”Stan",
surname: ”Marsh",
city: ”Southpark",
school: ”Southpark
Elementary”
}
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
2 Sharon Marsh 415456789 Southpark NULL NULL
3 Stan Marsh NULL Southpark NULL NULL
Users
{
first_name: ”Randy",
surname: ”Marsh",
cell: "415123456",
city: ”Southpark",
location: [45.123,47.232],
profession: [”geologist", ”hemp farmer"],
cars: [
{
model: "Plymouth Junkerolla ",
year: 1986
},
{
model: "Rolls Royce",
year: 1965
}
]
}
Users
#MDBLocal
{
first_name: ”Randy",
surname: ”Marsh",
cell: "415123456",
city: ”Southpark",
location: [45.123,47.232],
profession: [”geologist", ”hemp farmer"],
cars: [
{
model: "Plymouth Junkerolla ",
year: 1986
},
{
model: "Rolls Royce",
year: 1965
}
]
}
Users
Collections vs Tables
{
first_name: ”Sharon",
surname: ”Marsh",
cell: ”415456789",
city: ”Southpark",
profession: [”receptionist"],
}
{
first_name: ”Stan",
surname: ”Marsh",
city: ”Southpark",
school: ”Southpark
Elementary”
}
ID first_name surname cell city location_x location_y
1 Randy Marsh 415123456 Southpark 45.123 47.232
2 Sharon Marsh 415456789 Southpark NULL NULL
3 Stan Marsh NULL Southpark NULL NULL
Users
#MDBLocal
Flexible Schema or Schemaless
#MDBLocal
Flexible Schema or Schemaless
Don’t panic!
Use schema validation.
#MDBLocal
Map terms from SQL to MongoDB
ID a ...
1 b ...
2 ... ...
3 ... ...
{
...
a: “b”
...
}
Row Document
#MDBLocal
Map terms from SQL to MongoDB
{
...
a: “b”
...
}
Row(s) Document
ID a ...
1 b ...
2 ... ...
3 ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
Column Field
{
...
a: “b”
...
}
{
...
a: “c”
...
}
ID a ...
1 b ...
2 c ...
3 ... ...
#MDBLocal
Map terms from SQL to MongoDB
Table Collection
{
...
}
{
...
}
{
...
}
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
Database Database
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
#MDBLocal
Map terms from SQL to MongoDB
Index Index
{
...
}
{
...
}
{
...
}
{
...
}
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
View View
{
...
}
{
...
}
{
...
}
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
Join Embedding
{
...
a: “b”,
...
c: {
d: “e”
...
},
...
}
ID a ...
1 b ...
2 ... ...
3 ... ...
... d ...
1 e ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
Join Linking
ID ... ...
1 ... ...
2 ... ...
3 ... ...
... ... ...
1 ... ...
... ... ...
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
#MDBLocal
Map terms from SQL to MongoDB
Left Outer Join $lookup
(Aggregation Pipeline)
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
ID ... ...
1 ... ...
2 ... ...
3 ... ...
... ... ...
1 ... ...
4 ... ...
#MDBLocal
Map terms from SQL to MongoDB
Recursive Common Table
Expressions
$graphLookup
(Aggregation Pipeline)
{
...
}
{
...
}
{
...
}
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Map terms from SQL to MongoDB
Multi-Record ACID Transaction Multi-Record ACID Transaction
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
#MDBLocal
Summary of term mapping
Row Column Table Database Index Join Join Left Outer
Join
Recursive
Common Table
Expressions
View Transaction
Document Field Collection Database Index Embedding
Database
References $lookup $graphLookup View Transaction
#MDBLocal
The mental journey from SQL to MongoDB
• Map terms & concepts
from SQL to MongoDB
• Discover the 4 humongous
advantages of MongoDB
• Change your mindset in 3
key ways
#MDBLocal
Scale Cheaper
As the size of your database grows, scale horizontally.
#MDBLocal
Program Faster
Documents map to data structures in most popular languages.
Update Your Profile
#MDBLocal
Program Faster
{
first_name: "Paul",
surname: "Miller",
cell: "447557505611",
city: "London",
location: [45.123,47.232],
profession: ["banking", "finance", "trader"],
}
ID first_name surname cell city location_x location_y
1 Paul Miller 447557505611 London 45.123 47.232
Users
ID user_id profession
10 1 banking
11 1 finance
12 1 trader
Professions
import pymongo
from pymongo import MongoClient
# CONNECT TO THE DB
client = MongoClient()
client =
pymongo.MongoClient("mongodb+srv://
username:password@cluster0nsdia.
mongodb.net/test?retryWrites=true")
db = client.fabapp
# THE ID OF THE USER WHOSE PROFILE WE WILL
BE RETRIEVING AND UPDATING
userId = 1
Program faster!
import mysql.connector
# CONNECT TO THE DB
mydb = mysql.connector.connect(
host="localhost",
user=”username",
passwd=”password",
database=”fabapp”
)
mycursor = mydb.cursor()
# THE ID OF THE USER WHOSE PROFILE WE WILL
BE RETRIEVING AND UPDATING
userId = 1
# GET THE USER'S PROFILE INFORMATION
### Pull the info from the Users table & put
it in the user dictionary
sql = "Select * FROM Users WHERE Users.ID=%s”
values = (userId,)
mycursor.execute(sql, values)
result = mycursor.fetchone()
user = {
"first_name": result[1],
"surname": result[2],
"cell": result[3],
"city": result[4],
"location_x": result[5],
"location_y": result[6]
}
# GET THE USER'S PROFILE INFORMATION
## We can pull all of the info from the same
document since we used embedding
user = db['Users'].find_one({"_id": userId})
Program faster!
### Pull the info from the Professions table
& put it in the user dictionary
sql = "Select * FROM Professions WHERE
Professions.user_id=%s”
values = (userId,)
mycursor.execute(sql, values)
results = mycursor.fetchall()
professions = []
for result in results:
professions.append(result[2])
user["professions"] = professions
# UPDATE THE USER DICTIONARY BASED ON USER
INPUT IN THE APP
### We'll update the user dictionary
manually for simplicity
user = {
"first_name": "NewFirst",
"surname": "NewSurname",
"cell": "123-456-7890",
"city": "NewCity",
"location": [40.762, -73.979],
"professions": [”Manager", "Engineer"]
}
Program faster!
# UPDATE THE USER DICTIONARY BASED ON USER
INPUT IN THE APP
### We'll update the user dictionary
manually for simplicity
user = {
"first_name": "NewFirst",
"surname": "NewSurname",
"cell": "123-456-7890",
"city": "NewCity",
"location_x": 40.762,
"location_y": 73.979,
"professions": [”Manager", "Engineer"]
}
# UPDATE THE USER'S PROFILE IN THE DATABASE
### First update what is stored in the Users
table
sql = "UPDATE Users SET first_name=%s,
surname=%s, cell=%s, city=%s, location_x=%s,
location_y=%s WHERE (ID=%s)"
values = (
user["first_name"],
user["surname"],
user["cell"],
user["city"],
user["location_x"],
user["location_y"],
userId)
mycursor.execute(sql, values)
mydb.commit()
# UPDATE THE USER'S PROFILE IN THE DATABASE
### Since the user's data is stored in a
single document, we only have to make one
update
result = db['Users'].update_one(
{"_id": userId}, {"$set": user})
Program faster!
### Delete existing records in Professions
table and add new ones
sql = "DELETE FROM Professions WHERE
user_id=%s”
values = (userId,)
mycursor.execute(sql, values)
mydb.commit()
if(len(user["professions"]) > 0):
sql = "INSERT INTO Professions
(user_id,profession) VALUES (%s, %s)”
values = []
for profession in user["professions"]:
values.append((userId, profession))
mycursor.executemany(sql,values)
mydb.commit()
30 lines of code
Program faster!
73 lines of code
#MDBLocal
Query Faster
Stop doing expensive joins to get your data.
SQLMongoDB
ID a ...
1 b ...
2 ... ...
3 ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
... ... ...
{
...
a: “b”,
...
c: {
d: “e”
...
},
...
}
#MDBLocal
Pivot easier
Easily change the shape of your data as your app evolves.
SQLMongoDB
{
a: “b”,
c: “one”,
e: “f”
}
{
a: “b”,
c: 1,
new: “no biggee”
}
ALTER TABLE `mydb`.`letters_table`
DROP COLUMN `e`,
ADD COLUMN `New` VARCHAR(45) NULL AFTER `C`,
CHANGE COLUMN `C` `C` INT NULL DEFAULT NULL ;
#MDBLocal
Summary - 4 advantages of MongoDB
• Scale cheaper
• Program faster
• Query faster
• Pivot faster
#MDBLocal
The mental journey from SQL to MongoDB
• Map terms & concepts
from SQL to MongoDB
• Discover the 4 humongous
advantages of MongoDB
• Change your mindset in 3
key ways
#MDBLocal
Not all documents in a collection need to have the same fields
#MDBLocal
Not all documents in a collection need to have the same fields
The Polymorphic Pattern
{
first_name: ”Randy",
surname: ”Marsh",
cell: "415123456",
city: ”Southpark",
location: [45.123,47.232],
profession: [”geologist", ”hemp farmer"],
cars: [
{
model: "Plymouth Junkerolla ",
year: 1986
},
{
model: "Rolls Royce",
year: 1965
}
]
}
{
first_name: ”Sharon",
surname: ”Marsh",
cell: ”415456789",
city: ”Southpark",
profession: [”receptionist"],
}
{
first_name: ”Stan",
surname: ”Marsh",
city: ”Southpark",
school: ”Southpark
Elementary”
}
#MDBLocal
Not all documents in a collection need to have the same fields
The Outlier Pattern
{
_id: ”@eric",
displayName: ”Eric Cartman",
numFollowers: 1310
followers: [
“stan”,
“kenny”,
“kyle”
...
]
}
{
_id: ”@jerry",
displayName: ”Jerry Seinfeld",
numFollowers: 1730332
followers: [
“LarryDavid”,
“GeorgeCostanza”,
“Elaine”
...
],
has_extras: true
}
{
_id: ”@jerry_1",
displayName: “Jerry Seinfeld”,
is_overflow: true,
followers: [
“StephenAtHome”,
“TheEllenShow”,
“hulu”
...
]
}
#MDBLocal
Data that is accessed together is stored together
#MDBLocal
Data that is accessed together is stored together
#MDBLocal
Data that is accessed together is stored together
0
20000
40000
60000
80000
100000
120000
1985 2017
Storage vs Developer Costs
Storage Cost per GB Developer Salary
#MDBLocal
Data that is accessed together is stored together
Don’t normalize your data for the sake of normalizing it.
{
a: “b”,
c: {
d: “e”
...
},
f: [“g”, “h”, “i”],
j: [
{
k: “l”
},
{
m: “n”
}
]
}
#MDBLocal
Stop using transactions regularly
Relying on transactions is a bad design smell
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
{
...
}
#MDBLocal
Summary – Changing your mindset
• Not all documents in a collection need to have the
same fields
• Data that is accessed together should be stored
together
• Stop using transactions regularly
#MDBLocal
The mental journey from SQL to MongoDB
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Row Column Table Database Index Join Join Left Outer
Join
Recursive
Common Table
Expressions
View Transaction
Document Field Collection Database Index Embedding
Database
References $lookup $graphLookup View Transaction
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
• Scale cheaper
#MDBLocal
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
• Scale cheaper
• Program faster
The mental journey from SQL to MongoDB
# UPDATE THE USER'S PROFILE IN THE DATABASE
### First update what is stored in the Users table
sql = "UPDATE Users SET first_name=%s, surname=%s,
cell=%s, city=%s, location_x=%s, location_y=%s WHERE
(ID=%s)"
values = (
user["first_name"],
user["surname"],
user["cell"],
user["city"],
user["location_x"],
user["location_y"],
userId)
# UPDATE THE USER'S PROFILE IN THE DATABASE
### Since the user's data is stored in a single
document, we only have to make one update
result = db['Users'].update_one(
{"_id": userId}, {"$set": user})
#MDBLocal
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
• Scale cheaper
• Program faster
• Query faster
The mental journey from SQL to MongoDB
#MDBLocal
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
• Scale cheaper
• Program faster
• Query faster
• Pivot easier
The mental journey from SQL to MongoDB
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
Change your mindset in 3 key ways
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
Change your mindset in 3 key ways
• Not all documents in a collection need to have the same fields
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
Change your mindset in 3 key ways
• Not all documents in a collection need to have the same fields
• Data that is accessed together should be stored together
#MDBLocal
The mental journey from SQL to MongoDB
Map terms & concepts from SQL to MongoDB
Discover the 4 humongous advantages of MongoDB
Change your mindset in 3 key ways
• Not all documents in a collection need to have the same fields
• Data that is accessed together should be stored together
• Stop using transactions regularly
THANK YOU

More Related Content

What's hot

MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...MongoDB
 
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...MongoDB
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchMongoDB
 
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQLMongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQLMongoDB
 
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...MongoDB
 
Jumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDBJumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDBMongoDB
 
Jumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignJumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignMongoDB
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB
 
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON SchemaMongoDB
 
MongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and ImplicationsMongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and ImplicationsMongoDB
 
When to Use MongoDB
When to Use MongoDB When to Use MongoDB
When to Use MongoDB MongoDB
 
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB
 
Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters MongoDB
 
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...MongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
Data Analytics: Understanding Your MongoDB Data
Data Analytics: Understanding Your MongoDB DataData Analytics: Understanding Your MongoDB Data
Data Analytics: Understanding Your MongoDB DataMongoDB
 
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2MongoDB
 
MongoDB BI Connector & Tableau
MongoDB BI Connector & Tableau MongoDB BI Connector & Tableau
MongoDB BI Connector & Tableau MongoDB
 

What's hot (20)

MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
MongoDB .local Paris 2020: Les bonnes pratiques pour travailler avec les donn...
 
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...
MongoDB .local Munich 2019: Best Practices for Working with IoT and Time-seri...
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB Stitch
 
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQLMongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
 
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...
MongoDB .local Chicago 2019: Best Practices for Working with IoT and Time-ser...
 
Jumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDBJumpstart: Introduction to MongoDB
Jumpstart: Introduction to MongoDB
 
Jumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignJumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema Design
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
 
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local Munich 2019: MongoDB Atlas Data Lake Technical Deep Dive
 
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema
[MongoDB.local Bengaluru 2018] Just in Time Validation with JSON Schema
 
MongoDB + Spring
MongoDB + SpringMongoDB + Spring
MongoDB + Spring
 
MongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and ImplicationsMongoDB Schema Design: Practical Applications and Implications
MongoDB Schema Design: Practical Applications and Implications
 
When to Use MongoDB
When to Use MongoDB When to Use MongoDB
When to Use MongoDB
 
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB AtlasMongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
MongoDB World 2019: Ticketek: Scaling to Global Ticket Sales with MongoDB Atlas
 
Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters Database Trends for Modern Applications: Why the Database You Choose Matters
Database Trends for Modern Applications: Why the Database You Choose Matters
 
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...
MongoDB World 2019: MongoDB in Data Science: How to Build a Scalable Product ...
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
 
Data Analytics: Understanding Your MongoDB Data
Data Analytics: Understanding Your MongoDB DataData Analytics: Understanding Your MongoDB Data
Data Analytics: Understanding Your MongoDB Data
 
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
Joins and Other Aggregation Enhancements Coming in MongoDB 3.2
 
MongoDB BI Connector & Tableau
MongoDB BI Connector & Tableau MongoDB BI Connector & Tableau
MongoDB BI Connector & Tableau
 

Similar to From SQL to NoSQL: Mapping Concepts and Advantages

Jumpstart! From SQL to NoSQL -- Changing Your Mindset
Jumpstart! From SQL to NoSQL -- Changing Your MindsetJumpstart! From SQL to NoSQL -- Changing Your Mindset
Jumpstart! From SQL to NoSQL -- Changing Your MindsetLauren Hayward Schaefer
 
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...MongoDB
 
From SQL to NoSQL -- Changing Your Mindset
From SQL to NoSQL -- Changing Your MindsetFrom SQL to NoSQL -- Changing Your Mindset
From SQL to NoSQL -- Changing Your MindsetLauren Hayward Schaefer
 
MongoDB World 2019: From SQL to NoSQL -- Changing Your Mindset
MongoDB World 2019: From SQL to NoSQL -- Changing Your MindsetMongoDB World 2019: From SQL to NoSQL -- Changing Your Mindset
MongoDB World 2019: From SQL to NoSQL -- Changing Your MindsetMongoDB
 
Mongodbworkshop I: get started
Mongodbworkshop I: get startedMongodbworkshop I: get started
Mongodbworkshop I: get startedVivian S. Zhang
 
MongoDB and DigitalOcean Automation with Cloud Manager
MongoDB and DigitalOcean Automation with Cloud ManagerMongoDB and DigitalOcean Automation with Cloud Manager
MongoDB and DigitalOcean Automation with Cloud ManagerJay Gordon
 
Jumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignJumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignMongoDB
 
Webinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBWebinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBMongoDB
 
Sql vs no sql and azure data factory
Sql vs no sql and azure data factorySql vs no sql and azure data factory
Sql vs no sql and azure data factoryDiponkar Paul
 
Baton rouge - sql vs no sql and azure data factory
Baton rouge - sql vs no sql and azure data factoryBaton rouge - sql vs no sql and azure data factory
Baton rouge - sql vs no sql and azure data factoryDiponkar Paul
 
SQL vs. NoSQL and Moving data by Azure Data Factory
SQL vs. NoSQL and Moving data by Azure Data FactorySQL vs. NoSQL and Moving data by Azure Data Factory
SQL vs. NoSQL and Moving data by Azure Data FactoryDiponkar Paul
 
RedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory OptimizationRedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory OptimizationRedis Labs
 
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018Keshav Murthy
 
[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] KeynoteMongoDB
 
Jumpstart: MongoDB BI Connector & Tableau
Jumpstart: MongoDB BI Connector & TableauJumpstart: MongoDB BI Connector & Tableau
Jumpstart: MongoDB BI Connector & TableauMongoDB
 
MVP Cloud OS Week Track 1 9 Sept: Data liberty
MVP Cloud OS Week Track 1 9 Sept: Data libertyMVP Cloud OS Week Track 1 9 Sept: Data liberty
MVP Cloud OS Week Track 1 9 Sept: Data libertycsmyth501
 

Similar to From SQL to NoSQL: Mapping Concepts and Advantages (20)

Jumpstart! From SQL to NoSQL -- Changing Your Mindset
Jumpstart! From SQL to NoSQL -- Changing Your MindsetJumpstart! From SQL to NoSQL -- Changing Your Mindset
Jumpstart! From SQL to NoSQL -- Changing Your Mindset
 
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...
MongoDB .local Houston 2019: Jumpstart: From SQL to NoSQL -- Changing Your Mi...
 
From SQL to NoSQL -- Changing Your Mindset
From SQL to NoSQL -- Changing Your MindsetFrom SQL to NoSQL -- Changing Your Mindset
From SQL to NoSQL -- Changing Your Mindset
 
MongoDB World 2019: From SQL to NoSQL -- Changing Your Mindset
MongoDB World 2019: From SQL to NoSQL -- Changing Your MindsetMongoDB World 2019: From SQL to NoSQL -- Changing Your Mindset
MongoDB World 2019: From SQL to NoSQL -- Changing Your Mindset
 
Mongodbworkshop I: get started
Mongodbworkshop I: get startedMongodbworkshop I: get started
Mongodbworkshop I: get started
 
MongoDB Workshop
MongoDB WorkshopMongoDB Workshop
MongoDB Workshop
 
MongoDB and DigitalOcean Automation with Cloud Manager
MongoDB and DigitalOcean Automation with Cloud ManagerMongoDB and DigitalOcean Automation with Cloud Manager
MongoDB and DigitalOcean Automation with Cloud Manager
 
MongoDB: Back to Basics
MongoDB:  Back to BasicsMongoDB:  Back to Basics
MongoDB: Back to Basics
 
Jumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema DesignJumpstart: Introduction to Schema Design
Jumpstart: Introduction to Schema Design
 
Webinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBWebinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDB
 
Intro to MongoDB Workshop
Intro to MongoDB WorkshopIntro to MongoDB Workshop
Intro to MongoDB Workshop
 
Sql vs no sql and azure data factory
Sql vs no sql and azure data factorySql vs no sql and azure data factory
Sql vs no sql and azure data factory
 
Baton rouge - sql vs no sql and azure data factory
Baton rouge - sql vs no sql and azure data factoryBaton rouge - sql vs no sql and azure data factory
Baton rouge - sql vs no sql and azure data factory
 
SQL vs. NoSQL and Moving data by Azure Data Factory
SQL vs. NoSQL and Moving data by Azure Data FactorySQL vs. NoSQL and Moving data by Azure Data Factory
SQL vs. NoSQL and Moving data by Azure Data Factory
 
RedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory OptimizationRedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory Optimization
 
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
 
[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote
 
Jumpstart: MongoDB BI Connector & Tableau
Jumpstart: MongoDB BI Connector & TableauJumpstart: MongoDB BI Connector & Tableau
Jumpstart: MongoDB BI Connector & Tableau
 
MongoDB
MongoDBMongoDB
MongoDB
 
MVP Cloud OS Week Track 1 9 Sept: Data liberty
MVP Cloud OS Week Track 1 9 Sept: Data libertyMVP Cloud OS Week Track 1 9 Sept: Data liberty
MVP Cloud OS Week Track 1 9 Sept: Data liberty
 

More from MongoDB

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump StartMongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB
 
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB ChartsMongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB ChartsMongoDB
 
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDBMongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDBMongoDB
 

More from MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
 
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB ChartsMongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
MongoDB .local Paris 2020: Devenez explorateur de données avec MongoDB Charts
 
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDBMongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
MongoDB .local Paris 2020: La puissance du Pipeline d'Agrégation de MongoDB
 

Recently uploaded

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Recently uploaded (20)

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

From SQL to NoSQL: Mapping Concepts and Advantages

  • 1. #MDBlocal From SQL to NoSQL Changing Your Mindset SANFRANCISCO Girish Dusane Senior Solution Architect
  • 2. #MDBLocal The mental journey from SQL to MongoDB • Map terms & concepts from SQL to MongoDB • Discover the 4 humongous advantages of MongoDB • Change your mindset in 3 key ways
  • 4. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 5. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 6. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 7. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 8. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 9. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 10. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 11. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 12. #MDBLocal MongoDB stores data in documents { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] } Relationships?
  • 13. #MDBLocal Modeling data in MongoDB vs SQL { first_name: ”Homer", last_name: ”Simpson", cell: ”415123456", city: ”Springfield", location: [37.407419, -102.618143], profession: [”technical supervisor", ”nuclear safety inspector"], cars: [ { model: “Plymouth Junkerolla", year: 1986 }, { model: ”Plymouth Valiant", year: 1973 } ] }
  • 14. #MDBLocal Modeling data in MongoDB vs SQL { first_name: "Randy", surname: "Marsh", cell: "415123456", city: "Southpark", location: [45.123,47.232], profession: ["geologist", "hemp farmer"], cars: [ { model: "Bentley", year: 1973 }, { model: "Rolls Royce", year: 1965 } ] } ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232 Users
  • 15. #MDBLocal { first_name: ”Randy", surname: "Marsh", cell: "415123456", city: "Southpark", location: [45.123,47.232], profession: ["geologist", "hemp farmer"], cars: [ { model: "Bentley", year: 1973 }, { model: "Rolls Royce", year: 1965 } ] } Modeling data in MongoDB vs SQL Users ID user_id profession 10 1 geologist 11 1 hemp farmer Professions ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232
  • 16. #MDBLocal { first_name: ”Randy", surname: "Marsh", cell: "415123456", city: "Southpark", location: [45.123,47.232], profession: ["geologist", "hemp farmer"], cars: [ { model: "Bentley", year: 1973 }, { model: "Rolls Royce", year: 1965 } ] } Modeling data in MongoDB vs SQL Users ID user_id profession 10 1 geologist 11 1 hemp farmer Professions ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232 ID user_id model year 20 1 Bentley 1973 21 1 Rolls Royce 1965 Cars
  • 17. #MDBLocal Collections vs Tables { first_name: ”Randy", surname: ”Marsh", cell: "415123456", city: ”Southpark", location: [45.123,47.232], profession: [”geologist", ”hemp farmer"], cars: [ { model: "Plymouth Junkerolla ", year: 1986 }, { model: "Rolls Royce", year: 1965 } ] } { first_name: ”Sharon", surname: ”Marsh", cell: ”415456789", city: ”Southpark", profession: [”receptionist"], } { first_name: ”Stan", surname: ”Marsh", city: ”Southpark", school: ”Southpark Elementary” } ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232 2 Sharon Marsh 415456789 Southpark NULL NULL 3 Stan Marsh NULL Southpark NULL NULL UsersUsers
  • 18. #MDBLocal Collections vs Tables { first_name: ”Sharon", surname: ”Marsh", cell: ”415456789", city: ”Southpark", profession: [”receptionist"], } { first_name: ”Stan", surname: ”Marsh", city: ”Southpark", school: ”Southpark Elementary” } ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232 2 Sharon Marsh 415456789 Southpark NULL NULL 3 Stan Marsh NULL Southpark NULL NULL Users { first_name: ”Randy", surname: ”Marsh", cell: "415123456", city: ”Southpark", location: [45.123,47.232], profession: [”geologist", ”hemp farmer"], cars: [ { model: "Plymouth Junkerolla ", year: 1986 }, { model: "Rolls Royce", year: 1965 } ] } Users
  • 19. #MDBLocal { first_name: ”Randy", surname: ”Marsh", cell: "415123456", city: ”Southpark", location: [45.123,47.232], profession: [”geologist", ”hemp farmer"], cars: [ { model: "Plymouth Junkerolla ", year: 1986 }, { model: "Rolls Royce", year: 1965 } ] } Users Collections vs Tables { first_name: ”Sharon", surname: ”Marsh", cell: ”415456789", city: ”Southpark", profession: [”receptionist"], } { first_name: ”Stan", surname: ”Marsh", city: ”Southpark", school: ”Southpark Elementary” } ID first_name surname cell city location_x location_y 1 Randy Marsh 415123456 Southpark 45.123 47.232 2 Sharon Marsh 415456789 Southpark NULL NULL 3 Stan Marsh NULL Southpark NULL NULL Users
  • 21. #MDBLocal Flexible Schema or Schemaless Don’t panic! Use schema validation.
  • 22. #MDBLocal Map terms from SQL to MongoDB ID a ... 1 b ... 2 ... ... 3 ... ... { ... a: “b” ... } Row Document
  • 23. #MDBLocal Map terms from SQL to MongoDB { ... a: “b” ... } Row(s) Document ID a ... 1 b ... 2 ... ... 3 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  • 24. #MDBLocal Map terms from SQL to MongoDB Column Field { ... a: “b” ... } { ... a: “c” ... } ID a ... 1 b ... 2 c ... 3 ... ...
  • 25. #MDBLocal Map terms from SQL to MongoDB Table Collection { ... } { ... } { ... } ... ... ... ... ... ... ... ... ... ... ... ...
  • 26. #MDBLocal Map terms from SQL to MongoDB Database Database ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... { ... } { ... } { ... } { ... } { ... } { ... } { ... }
  • 27. #MDBLocal Map terms from SQL to MongoDB Index Index { ... } { ... } { ... } { ... } ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  • 28. #MDBLocal Map terms from SQL to MongoDB View View { ... } { ... } { ... } ... ... ... ... ... ... ... ... ... ... ... ...
  • 29. #MDBLocal Map terms from SQL to MongoDB Join Embedding { ... a: “b”, ... c: { d: “e” ... }, ... } ID a ... 1 b ... 2 ... ... 3 ... ... ... d ... 1 e ... ... ... ...
  • 30. #MDBLocal Map terms from SQL to MongoDB Join Linking ID ... ... 1 ... ... 2 ... ... 3 ... ... ... ... ... 1 ... ... ... ... ... { ... } { ... } { ... } { ... } { ... } { ... } { ... }
  • 31. #MDBLocal Map terms from SQL to MongoDB Left Outer Join $lookup (Aggregation Pipeline) { ... } { ... } { ... } { ... } { ... } { ... } { ... } ID ... ... 1 ... ... 2 ... ... 3 ... ... ... ... ... 1 ... ... 4 ... ...
  • 32. #MDBLocal Map terms from SQL to MongoDB Recursive Common Table Expressions $graphLookup (Aggregation Pipeline) { ... } { ... } { ... } ... ... ... ... ... ... ... ... ... ... ... ...
  • 33. #MDBLocal Map terms from SQL to MongoDB Multi-Record ACID Transaction Multi-Record ACID Transaction { ... } { ... } { ... } { ... } { ... } { ... } { ... } ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  • 34. #MDBLocal Summary of term mapping Row Column Table Database Index Join Join Left Outer Join Recursive Common Table Expressions View Transaction Document Field Collection Database Index Embedding Database References $lookup $graphLookup View Transaction
  • 35. #MDBLocal The mental journey from SQL to MongoDB • Map terms & concepts from SQL to MongoDB • Discover the 4 humongous advantages of MongoDB • Change your mindset in 3 key ways
  • 36. #MDBLocal Scale Cheaper As the size of your database grows, scale horizontally.
  • 37. #MDBLocal Program Faster Documents map to data structures in most popular languages. Update Your Profile
  • 38. #MDBLocal Program Faster { first_name: "Paul", surname: "Miller", cell: "447557505611", city: "London", location: [45.123,47.232], profession: ["banking", "finance", "trader"], } ID first_name surname cell city location_x location_y 1 Paul Miller 447557505611 London 45.123 47.232 Users ID user_id profession 10 1 banking 11 1 finance 12 1 trader Professions
  • 39. import pymongo from pymongo import MongoClient # CONNECT TO THE DB client = MongoClient() client = pymongo.MongoClient("mongodb+srv:// username:password@cluster0nsdia. mongodb.net/test?retryWrites=true") db = client.fabapp # THE ID OF THE USER WHOSE PROFILE WE WILL BE RETRIEVING AND UPDATING userId = 1 Program faster! import mysql.connector # CONNECT TO THE DB mydb = mysql.connector.connect( host="localhost", user=”username", passwd=”password", database=”fabapp” ) mycursor = mydb.cursor() # THE ID OF THE USER WHOSE PROFILE WE WILL BE RETRIEVING AND UPDATING userId = 1
  • 40. # GET THE USER'S PROFILE INFORMATION ### Pull the info from the Users table & put it in the user dictionary sql = "Select * FROM Users WHERE Users.ID=%s” values = (userId,) mycursor.execute(sql, values) result = mycursor.fetchone() user = { "first_name": result[1], "surname": result[2], "cell": result[3], "city": result[4], "location_x": result[5], "location_y": result[6] } # GET THE USER'S PROFILE INFORMATION ## We can pull all of the info from the same document since we used embedding user = db['Users'].find_one({"_id": userId}) Program faster! ### Pull the info from the Professions table & put it in the user dictionary sql = "Select * FROM Professions WHERE Professions.user_id=%s” values = (userId,) mycursor.execute(sql, values) results = mycursor.fetchall() professions = [] for result in results: professions.append(result[2]) user["professions"] = professions
  • 41. # UPDATE THE USER DICTIONARY BASED ON USER INPUT IN THE APP ### We'll update the user dictionary manually for simplicity user = { "first_name": "NewFirst", "surname": "NewSurname", "cell": "123-456-7890", "city": "NewCity", "location": [40.762, -73.979], "professions": [”Manager", "Engineer"] } Program faster! # UPDATE THE USER DICTIONARY BASED ON USER INPUT IN THE APP ### We'll update the user dictionary manually for simplicity user = { "first_name": "NewFirst", "surname": "NewSurname", "cell": "123-456-7890", "city": "NewCity", "location_x": 40.762, "location_y": 73.979, "professions": [”Manager", "Engineer"] }
  • 42. # UPDATE THE USER'S PROFILE IN THE DATABASE ### First update what is stored in the Users table sql = "UPDATE Users SET first_name=%s, surname=%s, cell=%s, city=%s, location_x=%s, location_y=%s WHERE (ID=%s)" values = ( user["first_name"], user["surname"], user["cell"], user["city"], user["location_x"], user["location_y"], userId) mycursor.execute(sql, values) mydb.commit() # UPDATE THE USER'S PROFILE IN THE DATABASE ### Since the user's data is stored in a single document, we only have to make one update result = db['Users'].update_one( {"_id": userId}, {"$set": user}) Program faster! ### Delete existing records in Professions table and add new ones sql = "DELETE FROM Professions WHERE user_id=%s” values = (userId,) mycursor.execute(sql, values) mydb.commit() if(len(user["professions"]) > 0): sql = "INSERT INTO Professions (user_id,profession) VALUES (%s, %s)” values = [] for profession in user["professions"]: values.append((userId, profession)) mycursor.executemany(sql,values) mydb.commit()
  • 43. 30 lines of code Program faster! 73 lines of code
  • 44. #MDBLocal Query Faster Stop doing expensive joins to get your data. SQLMongoDB ID a ... 1 b ... 2 ... ... 3 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... { ... a: “b”, ... c: { d: “e” ... }, ... }
  • 45. #MDBLocal Pivot easier Easily change the shape of your data as your app evolves. SQLMongoDB { a: “b”, c: “one”, e: “f” } { a: “b”, c: 1, new: “no biggee” } ALTER TABLE `mydb`.`letters_table` DROP COLUMN `e`, ADD COLUMN `New` VARCHAR(45) NULL AFTER `C`, CHANGE COLUMN `C` `C` INT NULL DEFAULT NULL ;
  • 46. #MDBLocal Summary - 4 advantages of MongoDB • Scale cheaper • Program faster • Query faster • Pivot faster
  • 47. #MDBLocal The mental journey from SQL to MongoDB • Map terms & concepts from SQL to MongoDB • Discover the 4 humongous advantages of MongoDB • Change your mindset in 3 key ways
  • 48. #MDBLocal Not all documents in a collection need to have the same fields
  • 49. #MDBLocal Not all documents in a collection need to have the same fields The Polymorphic Pattern { first_name: ”Randy", surname: ”Marsh", cell: "415123456", city: ”Southpark", location: [45.123,47.232], profession: [”geologist", ”hemp farmer"], cars: [ { model: "Plymouth Junkerolla ", year: 1986 }, { model: "Rolls Royce", year: 1965 } ] } { first_name: ”Sharon", surname: ”Marsh", cell: ”415456789", city: ”Southpark", profession: [”receptionist"], } { first_name: ”Stan", surname: ”Marsh", city: ”Southpark", school: ”Southpark Elementary” }
  • 50. #MDBLocal Not all documents in a collection need to have the same fields The Outlier Pattern { _id: ”@eric", displayName: ”Eric Cartman", numFollowers: 1310 followers: [ “stan”, “kenny”, “kyle” ... ] } { _id: ”@jerry", displayName: ”Jerry Seinfeld", numFollowers: 1730332 followers: [ “LarryDavid”, “GeorgeCostanza”, “Elaine” ... ], has_extras: true } { _id: ”@jerry_1", displayName: “Jerry Seinfeld”, is_overflow: true, followers: [ “StephenAtHome”, “TheEllenShow”, “hulu” ... ] }
  • 51. #MDBLocal Data that is accessed together is stored together
  • 52. #MDBLocal Data that is accessed together is stored together
  • 53. #MDBLocal Data that is accessed together is stored together 0 20000 40000 60000 80000 100000 120000 1985 2017 Storage vs Developer Costs Storage Cost per GB Developer Salary
  • 54. #MDBLocal Data that is accessed together is stored together Don’t normalize your data for the sake of normalizing it. { a: “b”, c: { d: “e” ... }, f: [“g”, “h”, “i”], j: [ { k: “l” }, { m: “n” } ] }
  • 55. #MDBLocal Stop using transactions regularly Relying on transactions is a bad design smell { ... } { ... } { ... } { ... } { ... } { ... } { ... }
  • 56. #MDBLocal Summary – Changing your mindset • Not all documents in a collection need to have the same fields • Data that is accessed together should be stored together • Stop using transactions regularly
  • 57. #MDBLocal The mental journey from SQL to MongoDB
  • 58. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Row Column Table Database Index Join Join Left Outer Join Recursive Common Table Expressions View Transaction Document Field Collection Database Index Embedding Database References $lookup $graphLookup View Transaction
  • 59. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB
  • 60. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB • Scale cheaper
  • 61. #MDBLocal Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB • Scale cheaper • Program faster The mental journey from SQL to MongoDB # UPDATE THE USER'S PROFILE IN THE DATABASE ### First update what is stored in the Users table sql = "UPDATE Users SET first_name=%s, surname=%s, cell=%s, city=%s, location_x=%s, location_y=%s WHERE (ID=%s)" values = ( user["first_name"], user["surname"], user["cell"], user["city"], user["location_x"], user["location_y"], userId) # UPDATE THE USER'S PROFILE IN THE DATABASE ### Since the user's data is stored in a single document, we only have to make one update result = db['Users'].update_one( {"_id": userId}, {"$set": user})
  • 62. #MDBLocal Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB • Scale cheaper • Program faster • Query faster The mental journey from SQL to MongoDB
  • 63. #MDBLocal Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB • Scale cheaper • Program faster • Query faster • Pivot easier The mental journey from SQL to MongoDB
  • 64. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB Change your mindset in 3 key ways
  • 65. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB Change your mindset in 3 key ways • Not all documents in a collection need to have the same fields
  • 66. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB Change your mindset in 3 key ways • Not all documents in a collection need to have the same fields • Data that is accessed together should be stored together
  • 67. #MDBLocal The mental journey from SQL to MongoDB Map terms & concepts from SQL to MongoDB Discover the 4 humongous advantages of MongoDB Change your mindset in 3 key ways • Not all documents in a collection need to have the same fields • Data that is accessed together should be stored together • Stop using transactions regularly