Rick Copeland
MongoDB Applied
Design Patterns
MongoDB Applied Design Patterns
by Rick Copeland
Copyright © 2013 Richard D. Copeland, Jr. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/
institutional sales department: 800-998-9938 or corporate@oreilly.com.
Editors: Mike Loukides and Meghan Blanchette
Production Editor: Kristen Borg
Copyeditor: Kiel Van Horn
Proofreader: Jasmine Kwityn
Indexer: Jill Edwards
Cover Designer: Karen Montgomery
Interior Designer: David Futato
Illustrator: Kara Ebrahim
March 2013:
First Edition
Revision History for the First Edition:
2013-03-01: First release
See http://oreilly.com/catalog/errata.csp?isbn=9781449340049 for release details.
Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly
Media, Inc. MongoDB Applied Design Patterns, the image of a thirteen-lined ground squirrel, and related
trade dress are trademarks of O’Reilly Media, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trade‐
mark claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher and author assume no
responsibility for errors or omissions, or for damages resulting from the use of the information contained
herein.
ISBN: 978-1-449-34004-9
[LSI]
Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Part I. Design Patterns
1.
To Embed or Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Relational Data Modeling and Normalization 3
What Is a Normal Form, Anyway? 4
So What’s the Problem? 6
Denormalizing for Performance 7
MongoDB: Who Needs Normalization, Anyway? 8
MongoDB Document Format 8
Embedding for Locality 9
Embedding for Atomicity and Isolation 9
Referencing for Flexibility 11
Referencing for Potentially High-Arity Relationships 12
Many-to-Many Relationships 13
Conclusion 14
2.
Polymorphic Schemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Polymorphic Schemas to Support Object-Oriented Programming 17
Polymorphic Schemas Enable Schema Evolution 20
Storage (In-)Efficiency of BSON 21
Polymorphic Schemas Support Semi-Structured Domain Data 22
Conclusion 23
3.
Mimicking Transactional Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
The Relational Approach to Consistency 25
Compound Documents 26
Using Complex Updates 28
iii
- 1
- 2
- 3
- 4
前往页