MongoDB Schema Design (Kyle Banker 10Gen)

66
http://www.mongodb.org/ MongoDB SchemaDesign MongoNYC(#mongonyc) May21,2010 KyleBanker(@hwaet) 10gen Tuesday, May 25, 2010

Transcript of MongoDB Schema Design (Kyle Banker 10Gen)

Page 1: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 2: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 3: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 4: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 5: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 6: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 7: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 8: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 9: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 10: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 11: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 12: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 13: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 14: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 15: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 16: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 17: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 18: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 19: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 20: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 21: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 22: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 23: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 24: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 25: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 26: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 27: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 28: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 29: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 30: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 31: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 32: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 33: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 34: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 35: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 36: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 37: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 38: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 39: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 40: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 41: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 42: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 43: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 44: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 45: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 46: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 47: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 48: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 49: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 50: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 51: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 52: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 53: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 54: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 55: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 56: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 57: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 58: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 59: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 60: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 61: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 62: MongoDB Schema Design (Kyle Banker 10Gen)

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

[email protected]

Tuesday, May 25, 2010

Page 63: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 64: MongoDB Schema Design (Kyle Banker 10Gen)

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.....

Page 65: MongoDB Schema Design (Kyle Banker 10Gen)

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

Page 66: MongoDB Schema Design (Kyle Banker 10Gen)

8/4/2019 MongoDB Schema Design (Kyle Banker 10Gen)

http://slidepdf.com/reader/full/mongodb-schema-design-kyle-banker-10gen 66/66

ThankYou