Essentials Training

Goals


Introduction

Mongo Shell / CRUD

Schema Design

Indexing

Replication

Sharding

Analytics

Monitoring

Backup and Recovery

Additional Topics







Introduction













What is
MongoDB?

MongoDB is...




NoSQL

Document-Oriented Database

Multi-platform

and Open-source






Why was 
MongoDB built?

Big Data

Cloud Computing

Key Features




Flexibility
High Perfomance
High Availability
Scalable
Power
Easy to use


"Momentum"






Hands On



  • Download 
  • Install
  • Connect
  • Shutdown
  • Mongo shell
  • Import data





Mongo Shell
CRUD





You Know JavaScript?




for (i=0; i < 5; i++) {    print("hello from the mongo shell");}

???


> use <dbname>
> db.stats() 
> db.stats 
> db. // press TAB

Relational Databases


Document Oriented


Terminology



Database == Database

Table == Collection

Row = Document

Column == Attribute

JSON


   "name" : "Michel",   "registered" : true,   languages : [ "c#", "python", "ruby" ],
"address" : {  "city" : "Londrina", "state" : "PR" "country" : "Brasil" }, created_on : new Date()}

BSON




Hands On



  • Insert
  • Query 
  • Projection
  • Cursor
  • Update
  • Remove 






Schema Design












"Store your data the way your application wants to see it"

Keep in mind



16mb per document
One to One?
One to Many?
Many to Many?

Hands On



  • Ecommerce Design






Indexing











MongoDB 

is very FAST

But...

Index Types



_id Index

Secondary Index

Compound Index

Multikey Index

Geospatial Index

Hands On



  • explain()
  • Create index
    • sparse
    • unique
    • dropDups
    • background
    • '2d'






Replication







High Availability



Redundancy
Failover
Read Scalability 















Hands On



  • Create Replica Set Cluster






Sharding







Scalability



No joins

No transactions

Horizontal Scalability



Hands On



  • Create Shard Cluster






Analitycs








Aggregation

Framework


db.products.aggregate([
    {$group:
     {
	 _id: {
	     "maker":"$manufacturer"
	 },
	 max_price:{$max:"$price"}
     }
    }
]) 

Hands On



  • $match
  • $group
  • $project
  • $unwind
  • $avg
  • $sum
  • $sort
  • $limit






Monitoring







MMS

MongoDB Monitoring Services (10gen)


MMS

MongoDB Monitoring Services (10gen)


Benchmark





Hands On



  • mongostat
  • mongotop
  • profilling






Backup and

Recovery




Scenario 1

Single Server / Replica Set


Mongo / Mongo
Copy data manually
mongodump
mongorestore

MongoDB / Other Sources
mongoimport
mongoexport

Scenario 2

Sharding

MongoDB Backup Service (10gen)


Hands On



  • Dump
  • Restore
  • Import data (csv)






Additional Topics

Security




MongoDB SSL
MongoDB Gazzang
Authentication (Basic, Kerberos)
Roles

GridFS




File Storage
Photos, Videos, Documents, etc

case:

Drivers




C#
C++
Java
Ruby
Python
Node.js
Erlang
Pearl

Hands On



  • C# and MongoDB
  • Python and MongoDB

MongoDB Essentials Training

By Michel Banagouro

MongoDB Essentials Training

  • 4,199