3. 5 Reasons that made MongoDB
the Leading NoSQL Database
Henrik Ingo
Solutions Architect, MongoDB
4. 4
1. Open Source
2. Replication
3. Sharding
4. Schemaless
5. Cloud, Big Data...
5 MongoDB features that are
NOT reasons to choose MongoDB
5. 5
1. Open Source
2. Replication
3. Sharding
4. Schemaless
5. Cloud, Big Data...
Reasons to move FROM relational TO NoSQL
...all NoSQL Databases do this.
6. Ok, so what ARE the
Top 5 reasons to choose MongoDB?
8. 8
1. General Purpose Database
Big Data Product & Asset
Catalogs
Security &
Fraud
Internet of
Things
Database-as-a-
Service
Mobile
Apps
Customer Data
Management
Data
Hub
Social &
Collaboration
Content
Management
Intelligence Agencies
Top Investment and
Retail Banks
Top US Retailer
Top Global Shipping
Company
Top Industrial Equipment
Manufacturer
Top Media Company
Top Investment and
Retail Banks
10. 10
MongoDB is a Document Database
MongoDB
Rich Queries
• Find Paul’s cars
• Find everybody in London with a car
built between 1970 and 1980
Geospatial
• Find all of the car owners within 5km of
Trafalgar Sq.
Text Search
• Find all the cars described as having
leather seats
Aggregation
• Calculate the average value of Paul’s
car collection
Map Reduce
• What is the ownership pattern of colors
by geography over time? (is purple
trending up in China?)
{
first_name: ‘Paul’,
surname: ‘Miller’,
city: ‘London’,
location:
[45.123,47.232],
cars: [
{ model: ‘Bentley’,
year: 1973,
value: 100000, … },
{ model: ‘Rolls Royce’,
year: 1965,
value: 330000, … }
}
}
23. 23
Rich query language = less code
MongoDB
Rich Queries
• Find Paul’s cars
• Find everybody in London with a car
built between 1970 and 1980
Geospatial
• Find all of the car owners within 5km of
Trafalgar Sq.
Text Search
• Find all the cars described as having
leather seats
Aggregation
• Calculate the average value of Paul’s
car collection
Map Reduce
• What is the ownership pattern of colors
by geography over time? (is purple
trending up in China?)
{
first_name: ‘Paul’,
surname: ‘Miller’,
city: ‘London’,
location:
[45.123,47.232],
cars: [
{ model: ‘Bentley’,
year: 1973,
value: 100000, … },
{ model: ‘Rolls Royce’,
year: 1965,
value: 330000, … }
}
}
33. 33
Big Data warning: data may be dirty
db.collection.find( { "firstname" : "Henrik" } )
db.pubs.find( { "addr:city" : { $exists : false } } ).count()
2291
db.pubs.find( { "addr:city" : { $exists : true } } ).count()
701
34. 34
Sharding is a first class citizen
db.collection.find( { "firstname" : "Henrik" } )
{ $match : ... }
{ $group : ... }
{ $sort : ... }
DB DB DB
Query Router