8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 1/66
http://www.mongodb.org/
MongoDB
SchemaDesign
MongoNYC(#mongonyc)May21,2010
KyleBanker(@hwaet)10gen
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 2/66
SchemaDesignQuestions
1.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 3/66
What’sthebasicunit
ofdata?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 4/66
What’sthebasicunit
ofdata?
Blobs?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 5/66
What’sthebasicunit
ofdata?
Rows?Blobs?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 6/66
What’sthebasicunit
ofdata?
Rows?Blobs?
Columns?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 7/66
What’sthebasicunit
ofdata?
Rows?Blobs?
Documents?Columns?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 8/66
Whichoperationsare
permitted?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 9/66
Whichoperationsare
permitted?
DynamicQueries
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 10/66
Whichoperationsare
permitted?
DynamicQueriesSecondaryIndexes
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 11/66
Whichoperationsare
permitted?
DynamicQueriesSecondaryIndexes
AtomicUpdates
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 12/66
Whichoperationsare
permitted?
DynamicQueriesSecondaryIndexes
AtomicUpdatesMap-Reduce
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 13/66
Whatareour
applicationaccess
patterns?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 14/66
Whatareour
applicationaccess
patterns?Read/WriteRatio
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 15/66
Whatareour
applicationaccess
patterns?Read/WriteRatio
Typesofupdates
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 16/66
Whatareour
applicationaccess
patterns?Read/WriteRatio
TypesofupdatesRangeofQueries
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 17/66
2.RichDocuments
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 18/66Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 19/66Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 20/66Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 21/66
Butwhatcanyoudowitharichdocument?
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 22/66
Queries
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 23/66
Queries
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 24/66
Queries
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 25/66
AtomicUpdates
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 26/66
AtomicUpdates
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 27/66
Map-Reduce
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 28/66
Morerich-documentgoodness...
Tuesday, May 25, 2010
d k
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 29/66
wordnik.com
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 30/66
Advantages
“Pre-joined”forfastretrieval.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 31/66
Advantages
Holisticrepresentation.
“Pre-joined”forfastretrieval.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 32/66
Advantages
Holisticrepresentation.
“Pre-joined”forfastretrieval.
MongoDBcanactonthese.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 33/66
Tradeoffs
TheNormalization/DenormalizationQuestion
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 34/66
Tradeoffs
Knowyourqueries/updatesinadvance
TheNormalization/DenormalizationQuestion
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 35/66
SimplifiedRelations2.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 36/66
Tags
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 37/66
Tags
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 38/66
Tags
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 39/66
Votes
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 40/66
Addingavote
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 41/66
Addingavote
Findingallvotesforagivenuser
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 42/66
Standard
Relationships
4.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 43/66
post comments
post_iduser_id
tree attrs
post->manycomments
Relationalmodel:
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 44/66
1.EmbeddedDocument
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 45/66
1.EmbeddedDocument
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 46/66
2.EmbeddedandNestedDocument
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 47/66
3.NormalizedCollection
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 48/66
UseCases
1.EmbeddeddocumentFastqueriesDocumentalwaysappearsw/parent.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 49/66
UseCases
1.EmbeddeddocumentFastqueriesDocumentalwaysappearsw/parent.
2.Embedded&nesteddocumentComplexhierarchiesDocumentappearswithparent
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 50/66
UseCases
1.EmbeddeddocumentFastqueriesDocumentalwaysappearsw/parent.
2.Embedded&nesteddocumentComplexhierarchiesDocumentappearswithparent
3.NormalizedMaximumflexibility.
Simplifiedglobalupdates.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 51/66
Tuesday, May 25, 2010
d i
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 52/66
products
categories
join
product_id
category_id
products<->categories
Relationalmodel:
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 53/66
ProductsandCategories
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 54/66
ProductsandCategories
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 55/66
ProductsandCategories(Alternative)
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 56/66
ProductsandCategories(Alternative)
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 57/66
ProductsandCategories(Alternative)
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 58/66
Resources5.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 59/66
Trees
http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 60/66
Trees
http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
Stacks,Queues,Listshttp://www.mongodb.org/display/DOCS/findandmodify+Command
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 61/66
Trees
http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
Stacks,Queues,Listshttp://www.mongodb.org/display/DOCS/findandmodify+Command
Contributehttp://cookbook.mongodb.org
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 62/66
Trees
http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
Stacks,Queues,Listshttp://www.mongodb.org/display/DOCS/findandmodify+Command
Contributehttp://cookbook.mongodb.org
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 63/66
ShamelessPlugs6.
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 64/66
MongoDBTraining|July7-8
http://ideafoundry.info/mongodbTuesday, May 25, 2010
My next talk today.....
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 65/66
http://www.mongodb.org/
MongoDBin
Ruby’sEmbrace
MongoNYC(#mongonyc)May21,2010
KyleBanker(@hwaet)10gen
Tuesday, May 25, 2010
8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)
http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 66/66
ThankYou