0%

Book Description

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

Table of Contents

  1. Preface
    1. Who This Book Is For
    2. Conventions Used in This Book
    3. Using Code Examples
    4. Safari® Books Online
    5. How to Contact Us
  2. 1. Application Design Tips
    1. Tip #1: Duplicate data for speed, reference data for integrity
      1. Example: a shopping cart order
      2. Decision factors
    2. Tip #2: Normalize if you need to future-proof data
    3. Tip #3: Try to fetch data in a single query
      1. Example: a blog
      2. Example: an image board
    4. Tip #4: Embed dependent fields
    5. Tip #5: Embed “point-in-time” data
    6. Tip #6: Do not embed fields that have unbound growth
    7. Tip #7: Pre-populate anything you can
    8. Tip #8: Preallocate space, whenever possible
    9. Tip #9: Store embedded information in arrays for anonymous access
    10. Tip #10: Design documents to be self-sufficient
    11. Tip #11: Prefer $-operators to JavaScript
      1. Behind the scenes
      2. Getting better performance
    12. Tip #12: Compute aggregations as you go
    13. Tip #13: Write code to handle data integrity issues
  3. 2. Implementation Tips
    1. Tip #14: Use the correct types
    2. Tip #15: Override _id when you have your own simple, unique id
    3. Tip #16: Avoid using a document for _id
    4. Tip #17: Do not use database references
    5. Tip #18: Don’t use GridFS for small binary data
    6. Tip #19: Handle “seamless” failover
    7. Tip #20: Handle replica set failure and failover
  4. 3. Optimization Tips
    1. Tip #21: Minimize disk access
      1. Fuzzy Math
    2. Tip #22: Use indexes to do more with less memory
    3. Tip #23: Don’t always use an index
      1. Write speed
    4. Tip #24: Create indexes that cover your queries
    5. Tip #25: Use compound indexes to make multiple queries fast
    6. Tip #26: Create hierarchical documents for faster scans
    7. Tip #27: AND-queries should match as little as possible as fast as possible
    8. Tip #28: OR-queries should match as much as possible as soon as possible
  5. 4. Data Safety and Consistency
    1. Tip #29: Write to the journal for single server, replicas for multiserver
    2. Tip #30: Always use replication, journaling, or both
    3. Tip #31: Do not depend on repair to recover data
    4. Tip #32: Understand getlasterror
    5. Tip #33: Always use safe writes in development
    6. Tip #34: Use w with replication
    7. Tip #35: Always use wtimeout with w
    8. Tip #36: Don’t use fsync on every write
    9. Tip #37: Start up normally after a crash
    10. Tip #38: Take instant-in-time backups of durable servers
  6. 5. Administration Tips
    1. Tip #39: Manually clean up your chunks collections
    2. Tip #40: Compact databases with repair
    3. Tip #41: Don’t change the number of votes for members of a replica set
    4. Tip #42: Replica sets can be reconfigured without a master up
    5. Tip #43: --shardsvr and --configsvr aren’t required
    6. Tip #44: Only use --notablescan in development
    7. Tip #45: Learn some JavaScript
    8. Tip #46: Manage all of your servers and databases from one shell
    9. Tip #47: Get “help” for any function
    10. Tip #48: Create startup files
    11. Tip #49: Add your own functions
      1. Loading JavaScript from files
    12. Tip #50: Use a single connection to read your own writes
  7. About the Author
  8. Copyright
3.145.163.58