Getting started with MongoDB is easy, but once you begin building applications with it, you'll face some complex issues. What are the tradeoffs between normalized and denormalized data? How do you handle replica set failure and failover? This collection of MongoDB tips, tricks, and hacks helps you resolve issues with everything from application design and implementation to data safety and monitoring.
You get specific guidance in five topic areas directly from engineers at 10gen, the company that develops and supports this open source database:
Application Design Tips: What to keep in mind when designing your schema
Implementation Tips: Programming applications against MongoDB
Optimization Tips: Speeding up your applications
Data Safety Tips: Using replication and journaling to keep data safe—without sacrificing too much performance
Administration Tips: How to configure MongoDB and keep it running smoothly
Chapter 1 Application Design Tips
Tip #1: Duplicate data for speed, reference data for integrity
Tip #2: Normalize if you need to future-proof data
Tip #3: Try to fetch data in a single query
Tip #4: Embed dependent fields
Tip #5: Embed “point-in-time” data
Tip #6: Do not embed fields that have unbound growth
Tip #7: Pre-populate anything you can
Tip #8: Preallocate space, whenever possible
Tip #9: Store embedded information in arrays for anonymous access
Tip #10: Design documents to be self-sufficient
Tip #11: Prefer $-operators to JavaScript
Tip #12: Compute aggregations as you go
Tip #13: Write code to handle data integrity issues
Chapter 2 Implementation Tips
Tip #14: Use the correct types
Tip #15: Override _id when you have your own simple, unique id
Tip #16: Avoid using a document for _id
Tip #17: Do not use database references
Tip #18: Don’t use GridFS for small binary data
Tip #19: Handle “seamless” failover
Tip #20: Handle replica set failure and failover
Chapter 3 Optimization Tips
Tip #21: Minimize disk access
Tip #22: Use indexes to do more with less memory
Tip #23: Don’t always use an index
Tip #24: Create indexes that cover your queries
Tip #25: Use compound indexes to make multiple queries fast
Tip #26: Create hierarchical documents for faster scans
Tip #27: AND-queries should match as little as possible as fast as possible
Tip #28: OR-queries should match as much as possible as soon as possible
Chapter 4 Data Safety and Consistency
Tip #29: Write to the journal for single server, replicas for multiserver
Tip #30: Always use replication, journaling, or both
Tip #31: Do not depend on repair to recover data
Tip #32: Understand getlasterror
Tip #33: Always use safe writes in development
Tip #34: Use w with replication
Tip #35: Always use wtimeout with w
Tip #36: Don’t use fsync on every write
Tip #37: Start up normally after a crash
Tip #38: Take instant-in-time backups of durable servers
Chapter 5 Administration Tips
Tip #39: Manually clean up your chunks collections
Tip #40: Compact databases with repair
Tip #41: Don’t change the number of votes for members of a replica set
Tip #42: Replica sets can be reconfigured without a master up
Tip #43: --shardsvr and --configsvr aren’t required
Tip #44: Only use --notablescan in development
Tip #45: Learn some JavaScript
Tip #46: Manage all of your servers and databases from one shell
Tip #47: Get “help” for any function
Tip #48: Create startup files
Tip #49: Add your own functions
Tip #50: Use a single connection to read your own writes
Kristina Chodorow, a software engineer at 10gen, is a core contributor to the MongoDB project and has worked on the database server, PHP driver, Perl driver, and many other areas. She’s given talks at conferences around the world, including OSCON, LinuxCon, FOSDEM, and Latinoware.
Comments about O'Reilly Media 50 Tips and Tricks for MongoDB Developers:
I've been learning the world of MongoDB for a little while now, building up my understanding of how it works, and Trade-offs to be considered when entering into the world of noSQL. With the query support and other interesting properties Mongo has been the system I've been diving deep into, and getting some real experience with. As an ex Oracle DBA, working through the strengths and weaknesses of Document based databases has been interesting. The book 50 Tips and Tricks for MongoDB Developers, provides some good food for thought relating to the tradeoffs when working with document stores in general and MongoDB in particular. The end of the book also delves into advanced configuration and production topics such as replication and restoring from backups. I'll admit that I let these topics was over me without fully grokking them.
The book is a pretty quick and easy read, and leads you through how to model and work with documents in MongoDB. I'd recommend it to people who understand the basics of MongoDB and want to dive deeper.
[this book was reviewed as a part of the O'Reilly Blogger Review Program]