50 Tips and Tricks for MongoDB Developers

Get the Most Out of Your Database

Kristina Chodorow

Publisher: O'Reilly, 2011, 52 pages

ISBN: 978-1-449-30461-4

Keywords: Databases

Last modified: Feb. 28, 2013, 7:48 p.m.

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 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
  1. Application Design Tips
    • Tip #1: Duplicate data for speed, reference data for integrity
      • Example: a shopping cart order
      • Decision factors
    • Tip #2: Normalize if you need to future-proof data
    • Tip #3: Try to fetch data in a single query
      • Example: a blog
      • Example: an image board
    • Tip #4: Embed dependent data
    • Tip #5: Embed "point-in-time" daya
    • 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
      • Behind the scenes
      • Getting better performance
    • Tip #12: Compute aggregations as you go
    • Tip #13: Write code to handle data integrity issues
  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
  3. Optimization Tips
    • Tip #21: Minimize disk access
      • Fuzzy Math
    • Tip #22: Use indexes to do more with less memory
    • Tip #23: Don't always use an index
      • Write speed
    • 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
  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
  5. Administration Tips
    • Tip #39: Manually clean up your chunks collections
    • Tip #40: Compact database 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
      • Loading JavaScript from files
    • Tip #50: Use a single connection to read your own writes


50 Tips and Tricks for MongoDB Developers

Reviewed by Roland Buresund

OK ***** (5 out of 10)

Last modified: Feb. 28, 2013, 7:49 p.m.

A worthwhile book if you're new to MongoDB (not too new, you need to know the basics first) and wants to address some finer points of it.

Not earth-shattering, but not bad.


There are currently no comments

New Comment


required (not published)