View
1.592
Download
0
Category
Preview:
DESCRIPTION
My talk at MongoBoston on bringing MongoDB into your organization. Covers what it is, why you use it, how you get your feet wet, and how you dive in.
Citation preview
Introducing MongoDB into your
organization
From Punchbowl.com to YOURyan Angilly
@angilly
Tuesday, September 21, 2010
• “Bringing MongoDB into your organization” ?
• MongoDB
• What?
• Why?
• Get your feet wet
• Dive in
Tuesday, September 21, 2010
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
• Raised $2.5M+ -- Angels, Intel Capital, Contour Ventures
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
• Raised $2.5M+ -- Angels, Intel Capital, Contour Ventures
• Deals w/ Oriental Trading, others....
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
• Raised $2.5M+ -- Angels, Intel Capital, Contour Ventures
• Deals w/ Oriental Trading, others....
• Just rebranded from MyPunchbowl.com
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
• Raised $2.5M+ -- Angels, Intel Capital, Contour Ventures
• Deals w/ Oriental Trading, others....
• Just rebranded from MyPunchbowl.com
• Just announced 1M users
Punchbowl.com
Tuesday, September 21, 2010
• Online invitation & party planning
• Think e-Vite, but better everywhere
• More tools for planning your party, not just the online invites
• Been around since 2007
• Raised $2.5M+ -- Angels, Intel Capital, Contour Ventures
• Deals w/ Oriental Trading, others....
• Just rebranded from MyPunchbowl.com
• Just announced 1M users
• Recently previewed Digital Invitation Studio, the 3rd generation of our invite design software
Punchbowl.com
Tuesday, September 21, 2010
You.
Tuesday, September 21, 2010
You.
• Who here has used MongoDB?
Tuesday, September 21, 2010
You.
• Who here has used MongoDB?
• Why are you here?
Tuesday, September 21, 2010
A database
What is MongoDB?
Tuesday, September 21, 2010
Schema-less
What is MongoDB?
Tuesday, September 21, 2010
• Document based{ name: 'Ryan', email: 'ryan@angilly.com', likes: ['mongodb', 'skiing', 'twitter', 'Boulder chicks'], dislikes: ['humidity', 'Sarah Palin', 'bigotry', 'The Yankees'], current_outfit: { pants: 'blue shorts', shirt: false, shoes: 'flip-flops', undies: 'wouldn\'t you like to know' }}
What is MongoDB?
Tuesday, September 21, 2010
What is MongoDB?• NoSQL
Tuesday, September 21, 2010
What is MongoDB?• NoSQL
SELECT * FROM `events` WHERE (`events`.`event_key` = ‘c76c876c675c8976cc`) AND (events.deleted_at IS NULL) LIMIT 1
SELECT `designs`.* FROM `designs` WHERE (`designs`.event_id = 206039) AND (designs.deleted_at IS NULL)
SELECT `design_assets`.* FROM `design_assets` WHERE (`design_assets`.`element_id` = 1096 and `design_assets`.`element_type` = 'Design') AND
( (`design_assets`.`type` = 'DesignImage' ))
SELECT * FROM `save_events` WHERE (`save_events`.event_id = 206039) AND (save_events.deleted_at IS NULL) LIMIT 1
SELECT * FROM `event_questions` WHERE (`event_questions`.event_id = 206039) LIMIT 1
SELECT * FROM `classifications` WHERE (`classifications`.`id` = 8) ORDER BY classifications.position ASC
SELECT * FROM `memberships` WHERE (`memberships`.user_id = 57) LIMIT 1
SELECT * FROM `papers` WHERE (`papers`.`id` = 28) AND ( (`papers`.`type` = 'DIYPaper' ) )
SELECT * FROM `design_assets` WHERE (`design_assets`.element_id = 28 AND `design_assets`.element_type = 'Paper')
SELECT * FROM `design_assets` WHERE (`design_assets`.`id` = 435) AND ( (`design_assets`.`type` = 'DesignPhoto' ) )
SELECT * FROM `ribbons` WHERE (`ribbons`.`id` = 4) AND ( (`ribbons`.`type` = 'DIYRibbon' ) )
SELECT * FROM `design_assets` WHERE (`design_assets`.element_id = 4 AND `design_assets`.element_type = 'Ribbon')
Tuesday, September 21, 2010
What is MongoDB?• NoSQL
SELECT * FROM `events` WHERE (`events`.`event_key` = ‘c76c876c675c8976cc`) AND (events.deleted_at IS NULL) LIMIT 1
SELECT `designs`.* FROM `designs` WHERE (`designs`.event_id = 206039) AND (designs.deleted_at IS NULL)
SELECT `design_assets`.* FROM `design_assets` WHERE (`design_assets`.`element_id` = 1096 and `design_assets`.`element_type` = 'Design') AND
( (`design_assets`.`type` = 'DesignImage' ))
SELECT * FROM `save_events` WHERE (`save_events`.event_id = 206039) AND (save_events.deleted_at IS NULL) LIMIT 1
SELECT * FROM `event_questions` WHERE (`event_questions`.event_id = 206039) LIMIT 1
SELECT * FROM `classifications` WHERE (`classifications`.`id` = 8) ORDER BY classifications.position ASC
SELECT * FROM `memberships` WHERE (`memberships`.user_id = 57) LIMIT 1
SELECT * FROM `papers` WHERE (`papers`.`id` = 28) AND ( (`papers`.`type` = 'DIYPaper' ) )
SELECT * FROM `design_assets` WHERE (`design_assets`.element_id = 28 AND `design_assets`.element_type = 'Paper')
SELECT * FROM `design_assets` WHERE (`design_assets`.`id` = 435) AND ( (`design_assets`.`type` = 'DesignPhoto' ) )
SELECT * FROM `ribbons` WHERE (`ribbons`.`id` = 4) AND ( (`ribbons`.`type` = 'DIYRibbon' ) )
SELECT * FROM `design_assets` WHERE (`design_assets`.element_id = 4 AND `design_assets`.element_type = 'Ribbon')
vs.
db.events.findOne({event_key: ‘c76c876c675c8976cc’})
Tuesday, September 21, 2010
What is MongoDB?
Tuesday, September 21, 2010
What is MongoDB?
• Different (downsides)
Tuesday, September 21, 2010
What is MongoDB?
• Different (downsides)
• Async writes
Tuesday, September 21, 2010
What is MongoDB?
• Different (downsides)
• Async writes
• No transactions
Tuesday, September 21, 2010
What is MongoDB?
• Different (downsides)
• Async writes
• No transactions
• Cannot get you dates
Tuesday, September 21, 2010
Why use it?
• Simple query syntax
• Write hashes, not SQL.
Tuesday, September 21, 2010
Why use it?
• Sharding
Tuesday, September 21, 2010
Why use it?
• GridFS
Tuesday, September 21, 2010
Get your feet wet.Tuesday, September 21, 2010
Pick something low risk
• Logging
• Statistics
• Data mining
Tuesday, September 21, 2010
Punchbowl Vendor Portal
Tuesday, September 21, 2010
Punchbowl Vendor Portal
• http://www.punchbowl.com/vendors
• Track searches
• Track impressions
• Use data to entice vendors to purchase listings
Tuesday, September 21, 2010
DiveIn.
Tuesday, September 21, 2010
Go all out
• Don’t just use MongoDB “relationally”
• Embrace embedded documents
• Rethink your data schema
Tuesday, September 21, 2010
Digital Invitation Studio
Tuesday, September 21, 2010
Digital Invitation Studio
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Package
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Package
Liner
Design
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Package
Liner
PaperDesign
Tuesday, September 21, 2010
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Package
Liner
Paper
Greeting
Design
Tuesday, September 21, 2010
Design
Digital Invitation Studio
Tags
Photos
Envelope
Postage
Package
Liner
Paper
Greeting
Tuesday, September 21, 2010
Digital Invitation Studio
Tuesday, September 21, 2010
Digital Invitation Studio• Completely rethought how we create
designs
Tuesday, September 21, 2010
Digital Invitation Studio• Completely rethought how we create
designs
• Brand new UI
Tuesday, September 21, 2010
Digital Invitation Studio• Completely rethought how we create
designs
• Brand new UI
• Uses MongoDB for everything design-related
Tuesday, September 21, 2010
Digital Invitation Studio• Completely rethought how we create
designs
• Brand new UI
• Uses MongoDB for everything design-related
• We didn’t touch our invite/event system, because we didn’t need to
Tuesday, September 21, 2010
Digital Invitation Studio• Completely rethought how we create
designs
• Brand new UI
• Uses MongoDB for everything design-related
• We didn’t touch our invite/event system, because we didn’t need to
• http://www.punchbowl.com/digital-invitations
Tuesday, September 21, 2010
Where’s my stuff?!
Tuesday, September 21, 2010
Open Source is not scary.
Tuesday, September 21, 2010
Open Source is not scary.
Libraries you are used to using may not be available.
Don’t be afraid.
Needed Paperclip
Didn’t have it
Created Roachclip
Tuesday, September 21, 2010
Open Source is not scary.
Libraries you are used to using may not be available.
Don’t be afraid.
Needed Paperclip
Didn’t have it
Created Roachclip
Tuesday, September 21, 2010
Open Source is not scary.
75 lines of code.
Libraries you are used to using may not be available.
Don’t be afraid.
Needed Paperclip
Didn’t have it
Created Roachclip
Tuesday, September 21, 2010
Open Source is not scary.
75 lines of code.
104 lines of test
Libraries you are used to using may not be available.
Don’t be afraid.
Needed Paperclip
Didn’t have it
Created Roachclip
Tuesday, September 21, 2010
Questions?
Tuesday, September 21, 2010
Links
• www.punchbowl.com
• www.punchbowl.com/digital-invitations
• www.punchbowl.com/vendors
• www.mongodb.org
• @angilly
Tuesday, September 21, 2010
Credits
• Images
• http://www.flickr.com/photos/felipeskroski/2566713455/sizes/l/in/photostream/
• http://www.flickr.com/photos/zesmerelda/3500706849/
• http://www.flickr.com/photos/galactic/2963937719/sizes/l/in/photostream/
• http://www.flickr.com/photos/oberazzi/318947873/sizes/l/in/photostream/
Tuesday, September 21, 2010
Recommended