building your first app: an introduction to mongodb · 2019-05-07 · building your first app: an...

38
Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect [email protected] , twitter: @h_ingo

Upload: others

Post on 10-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Building Your First App: An

Introduction to MongoDB

Henrik Ingo, Solution Architect

[email protected], twitter: @h_ingo

Page 2: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

What is MongoDB?

Page 3: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

3

• Not for .PDF & .DOC files

• A document is essentially an associative array

• Document == JSON object

• Document == PHP Array

• Document == Python Dict

• Document == Ruby Hash

• etc

Document Database

Page 4: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Database Landscape

Page 5: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Schema Design

Page 6: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

RDBMS MongoDB

Table, View Collection

Row Document

Index Index

Join Embedded Document

Foreign Key Reference

Partition Shard

Terminology

Page 7: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Typical (relational) ERD

Page 8: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

MongoDB ERD

Page 9: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set Lifestyle

Page 10: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Creation

Page 11: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Initialize

Page 12: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Failure

Page 13: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Failover

Page 14: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Recovery

Page 15: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Replica Set – Recovered

Page 16: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Sharding

Page 17: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Cluster Request Routing: Targeted Query

Page 18: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Routable request received

Page 19: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Request routed to appropriate shard

Page 20: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Shard returns results

Page 21: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Mongos returns results to client

Page 22: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Cluster Request Routing: Non-Targeted Query

Page 23: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Non-Targeted Request Received

Page 24: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Request sent to all shards

Page 25: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Shards return results to mongos

Page 26: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Mongos returns results to client

Page 27: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Cluster Request Routing: Non-Targeted Query with Sort

Page 28: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Non-Targeted request with sort received

Page 29: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Request sent to all shards

Page 30: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Query and sort performed locally

Page 31: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Shards return results to mongos

Page 32: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Mongos merges sorted results

Page 33: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Mongos returns results to client

Page 34: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

Excercises

Page 35: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

35

MongoDB University

Page 36: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

36

Open Data app

tilastokeskus.fi/org/lainsaadanto/avoin_data_en.html

Node.js

Page 37: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,

37

• Design a simple game with multiple players

• Characters can have different features. You want

to add more features in the future. 3rd parties can

develop their own features.

• Characters can own items (clothes, weapons,

vehicles...). Again, each item has different

features.

• Weapons map to a simple rock-paper-scissors

logic for picking winner.

Game

Page 38: Building Your First App: An Introduction to MongoDB · 2019-05-07 · Building Your First App: An Introduction to MongoDB Henrik Ingo, Solution Architect henrik.ingo@mongodb.com,