Objectives
This intensive hands-on training course aims at making students proficient in developing with MongoDB using Java.
The course is supplemented by hands-on labs that help attendees reinforce their theoretical knowledge of the learned material and make them confident in applying the acquired knowledge in practice.
Topics
- Overview of "NoSQL" landscape
- MongoDB developer value proposition
- MongoDB architecture
- MongoDB installation and configuration
- Essential system administration
- Developing solutions in Java
Audience
Technical leads and application developers
Prerequisites
Participants should be familiar with Java programming and using Eclipse development environment
Duration
2 Days
Outline for Development with MongoDB Training
Chapter 1. Introduction to MongoDB
- MongoDB
- MongoDB Features
- MongoDB on the Web
- Positioning of MongoDB
- MongoDB Applications
- MongoDB Data Model
- MongoDB Limitations
- MongoDB Use Cases
- MongoDB Query Language (QL)
- The CRUD Operations
- The
- find
- Method
- The
- findOne
- Method
- A MongoDB Query Language (QL) Example
- Inserts
- MongoDB vs Apache CouchDB
- Summary
Chapter 2. MongoDB Data Model
- The BSON Data Format
- Database Terminology
- MongoDB Data Model
- The _id Primary Key Field Considerations
- Indexes
- (Traditional) Data Modeling in RDBMS
- Data Modeling in MongoDB
- An Example of a Data Model in MongoDB
- MongoDB Data Modeling
- A Sample JSON Document Matching the Schema
- To Normalize or Denormalize?
- MongoDB Limitations
- Data Lifecycle Management
- Data Lifecycle Management: TTL
- Data Lifecycle Management: Capped Collections
- Summary
Chapter 3. MongoDB Architecture
- MongoDB Architecture
- Blending the Best of Both Worlds
- What Makes MongoDB Fast?
- Pluggable Storage Engines
- Data Sharding
- Sharding in MongoDB
- Data Replication
- A Sample Sharded Cluster Diagram
- GridFS
- Getting a File from GridFS
- MongoDB Security
- Authentication
- Data and Network Encryption
- Summary
Chapter 4. MongoDB Administration
- The Admin Shell
- Getting Help
- Admin Commands
- Starting MongoDB
- Running MongoDB JavaScript Scripts
- Shell Helper to JavaScript Equivalent Map
- A MongoDB Script Example
- Connecting to MongoDB
- User Authentication
- Authentication Options
- Import / Export Operations
- MongoDB Extended JSON and Strict Mode
- Examples of Extended JSON Encoding
- Examples of Data Import / Export
- The Robo3T Tool
- Robo3T Connections
- Connection Manager
- Viewing Databases, Collections and Documents
- Edit Capabilities
- Admin Shell
- Summary
Chapter 5. Working with Data in MongoDB
- Reading Data in MongoDB
- The Query Interface
- Query Syntax is Driver-Specific
- Projections
- Query and Projection Operators
- MongoDB Query to SQL Select Comparison
- Cursors
- Cursor Expiration
- Writing Data in MongoDB
- An Insert Operation Example
- The Update Operation
- Update Operation Options
- An Update Operation Example
- A Remove Operation Example
- Limiting Return Data
- Data Sorting
- Aggregating Data
- Aggregation Stages
- Accumulators
- An Example of an Aggregation Pipe-line
- Map-Reduce
- Summary
Chapter 6. Indexes in MongoDB
- Indexes in MongoDB
- Creating an Index
- Listing Existing Indexes
- The Sort Order
- Using the Explain() Method
- Main Index Types
- The _id Field
- Single and Compound Indexes
- Multikey Indexes
- Other Index Types
- Index Properties
- Examples of Creating Indexes with Index Properties
- Summary
Chapter 7. Accessing MongoDB from Node.js
- Getting Started
- The Connection URL
- Obtaining a Collection
- Inserting Documents
- Updating a Document
- Querying for Documents
- Deleting a Document
- Connection Pooling
- Summary
Chapter 8. MongoDB Java Client
- Accessing MongoDB from a Java Client
- The MongoDB Java Driver
- Using the Synchronous Driver in a Java Application
- Connecting to MongoDB
- Connecting to Mongo - Legacy API
- Connecting to Mongo - Updated API (since 3.7)
- Connection Options and the MongoClientURI
- Using MongoClientURI
- Connecting to a Replica Set
- Connecting to a Sharded Cluster
- Connection Configuration
- Connecting and Accessing a Collection
- Create a Collection
- Insert a Document
- Update
- Update Operators
- Read (Find)
- Read (Find) Multiple Documents
- Delete
- BSON Library
- Impedance Mismatch
- Morphia Object Mapper
- Setup
- Connecting
- Mapping
- Simple Mapping
- Saving Data
- Queries
- Summary
Chapter 9. Securing MongoDB
- Security Overview
- Your Mileage May Vary
- Security is Your Responsibility
- First Things First
- MongoDB Security
- A MongoDB Security Checklist
- Enable Access Control and Enforce Authentication
- Configure Role-Based Access Control
- Enable Authorization
- Create an Admin User
- Create a Database User
- Protecting Data in Transit
- Protecting Data at Rest
- Limit Network Exposure
- Audit System Activity
- Run MongoDB with a Dedicated User
- Run MongoDB with Secure Configuration Options
- Compliance
- Summary
Chapter 10. MapReduce in MongoDB
- The Client – Server Processing Pattern
- Distributed Computing Challenges
- MapReduce Defined
- Google's MapReduce
- MapReduce Phases
- The Map Phase
- The Reduce Phase
- MapReduce Word Count Job
- MapReduce Shared-Nothing Architecture
- Similarity with SQL Aggregation Operations
- Problems Suitable for Solving with MapReduce
- Typical MapReduce Jobs
- Fault-tolerance of MapReduce
- Distributed Computing Economics
- MapReduce in MongoDB
- Example - part 1
- Example - part 2
- Example – Part 3
- Example – Part 4
- Example – Part 5
- Example – Part 6
- MapReduce vs Aggregation Pipelines in MongoDB
- Summary
Lab Exercises
Lab 1. Learning the MongoDB Lab Environment
Lab 2. The MongoDB Database Operations
Lab 3. The MongoDB Admin Shell
Lab 4. Import Export Operations in MongoDB
Lab 5. Working with Data in MongoDB
Lab 6. Using MongoDB
Lab 7. CRUD Operations with the MongoDB Java Driver
Lab 8. Aggregation with the MongoDB Java Driver
Lab 9. x509 Authentication in MongoDB
Lab 10. MongoDB Authentication
Lab 11. Project – A RESTful API for MongoDB in NodeJS