Course Outline


Updated - This course outline has been updated to include some of the features that were introduced into MongoDB 3.4

Pre-requisites

  • Participants must have good knowledge of relational databases and database administration
  • Participants must be comfortable in a Linux environment
  • Knowledge of databases and MVC application development is preferred
  • Knowledge of Javascript and JSON is preferred (a basic overview will be given during the program)

Duration

2-4 days (covering a subset of the topics - contact us for more information/customization)

Lab Setup

Hardware Configuration

Participants must have access to a system with the following hardware configuration:

  • 2GB of free RAM, 20GB of free disk space and full network connectivity

Software configuration

  • Ubuntu 16.04 Desktop Edition (sudo/root access required)
  • Mongodb can be either pre-installed or we can do it during the training (if participants need to know how to do the installation)

Course Outline for MongoDB

Overview - SQL/NoSQL
  • Datastore design considerations
  • Relational v/s NoSQL stores
  • Entities, Relationships and Database modeling
  • When to use Relational/NoSQL
  • Relational Storage Structures
  • Categories of NoSQL stores
  • Examples of NoSQL stores
  • NoSQL Storage Structures
Data Formats
  • What are Data Formats
  • Difference between Data Formats and Data Structures
  • Serializing and de-serializing data
  • Javascript Fundamentals
  • The JSON Data Format
  • BSON Data Format
  • Advantages of BSON
Introduction to MongoDB
  • Key Features of MongoDB
  • Installing MongoDB
  • Starting and Stopping the server
  • Important filesystem locations
  • Using the shell
  • Integrating with other languages
MongoDB Concepts
  • Servers
  • Connections
  • Databases
  • Collections
  • Documents
  • Fields
  • Indexes
MongoDB CRUD
  • A look at a few usecases
  • Insert (C)
  • Simple Query Examples (R)
  • Update (U)
  • Remove (D)
Indexing
  • Capped Collections
  • Setting up Profiling
  • Indexing concepts
  • Types of Indexes
  • Indexes covering queries
Querying MongoDB
  • Query Expression Objects
  • Query Options
  • Cursors
  • Mongo Query Language
  • Dot Notation
  • Full Text Search
  • Cursors
  • Adding Custom Javascript
Advanced querying
  • Joins
  • Server-side v/s Client-side querying
  • Retrieving a subset of fields
  • Conditional operators
  • Aggregation
  • Grouping
  • Projections
Replication
  • Why Replication?
  • Difference between replication and backup
  • Replication Setups
  • Master/Slave Replication
  • Replica sets
  • Setting up an Arbiter
  • Failover
  • Using edda for replication analysis
  • Oplogs
  • Heartbeats
  • Removing replica set members
  • Overriding the default sync target
  • Write concerns
Views
  • Creating views
  • View behavior
  • Restrictions on views
  • Modifying views
  • Dropping views
Authentication
  • Adding admin user
  • Adding database users
  • Starting server with auth enabled
  • Using authentication
  • Replica sets and authentication
  • Role management
pymongo
  • Installing pymongo
  • CRUD examples via pymongo
  • ReplicaSetClient and failover example
Sharding
  • Idea of Sharding
  • How is sharding different from replication?
  • Shard servers
  • Config servers
  • mongos
  • Sharding with Replication
  • Manually adding splits
  • Choosing good shard keys
  • Write concern
  • Enabling/Disabling balancing
Backup/Dumps
  • The data directory
  • fsync and lock
  • mongodump
  • mongorestore
  • bsondump
  • mongoimport
  • mongoexport
Monitoring
  • The admin UI
  • Enabling REST
  • Getting data via HTTP REST interface
  • Monitoring related commands
  • Getting server status
  • Getting db stats
  • Getting collection stats
  • mongostat
  • mongotop
  • mongosniff
  • MongoDB Management Service
  • Process Logging
  • Profiling
A Few More Things
  • Production Checklist
  • GridFS
  • Map/Reduce

The classroom training will be provided in Bangalore (Bengaluru), Chennai, Hyderabad or Mumbai and will be conducted in the client's premises. All the necessary hardware/software infrastructure must be provided by the client.