New to MongoDB? This talk will introduce the philosophy and features of MongoDB. We’ll discuss the benefits of the document-based data model that MongoDB offers by walking through how one can build a simple app. We’ll cover inserting, updating, and querying the database of books. This session will jumpstart your knowledge of MongoDB development, providing you with context for the rest of the day's content.
3. MongoDB is a ___________
database
• Document
• Open source
• High performance
• Horizontally scalable
• Full featured
4. Document Database
• 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
5. Open Source
• MongoDB is an open source project
• On GitHub
• Licensed under the AGPL
• Started & sponsored by MongoDB Inc (formerly
10gen)
• Commercial licenses available
• Contributions welcome
6. High Performance
• Written in C++
• Extensive use of memory-mapped files
i.e. read-through write-through memory caching.
• Runs nearly everywhere
• Data serialized as BSON (fast parsing)
• Full support for primary & secondary indexes
• Document model = agile development
8. Full Featured
• Flexible schema
• Rich ad-hoc queries
• Real time aggregation
• Strongly consistent
• Geospatial features
• Built-in automatic failover
• Horizontally scalable reads/writes
• Support for most programming languages
15. First step in any application is
Determine basic requirements
16. Basic Monitoring Requirements
• Data generated at per-second intervals
• Metrics to capture (ex. CPU, memory, IO)
• Document structure for fast writes and easy reads
17. In a relational base app
We would start by doing schema
design
18. Relational Schema Options
CPU Metrics
Memory Metrics
IO Metrics
Events
• Timestamp
• CPU metrics
• Memory metrics
• IO metrics
Or
19. In a MongoDB based app
We start with a generic model
and let the documents evolve
20. MongoDB Document Modeling
Events
Timestamp (min)
CPU []
• Second
• Metric
Memory []
• Second
• Metric
IO []
• Second
• Metric
30. Finding an Hour of Events
> db.events.find({
ts: {
$gte: ISODate(“2014-09-16T09:00:00”),
$lt: ISODate(“2014-09-16T10:00:00”)
}
}).sort({ts:1})
Find using a range and sort results
ascending
31. How do you roll up the data?
Hour Avg Cpu
0 50
1 65
2 75
3 40
4 45
5 60
6 25
… …
23 30
33. How do you scale this workload
• Replica Sets
– Add data redundancy
– Automatic failover
– Tunable durability, consistency
• Sharding
– Scale reads and writes
– Support dynamic data growth
– Automatically partitions workload
– Horizontally scalable
39. MongoDB Drivers
• Official Support for 12 languages
• Community drivers for tons more
• Drivers connect to MongoDB servers
• Drivers translate BSON into native types
• Shell is not a driver, but works like one in some ways
• Installed using typical means (npm, pecl, gem, pip)