61
Introducing MongoDB into your organization From Punchbowl.com to YOU Ryan Angilly @angilly Tuesday, September 21, 2010

Bringing MongoDB into your organization

Embed Size (px)

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

Page 1: Bringing MongoDB into your organization

Introducing MongoDB into your

organization

From Punchbowl.com to YOURyan Angilly

@angilly

Tuesday, September 21, 2010

Page 2: Bringing MongoDB into your organization

• “Bringing MongoDB into your organization” ?

• MongoDB

• What?

• Why?

• Get your feet wet

• Dive in

Tuesday, September 21, 2010

Page 3: Bringing MongoDB into your organization

Punchbowl.com

Tuesday, September 21, 2010

Page 4: Bringing MongoDB into your organization

• Online invitation & party planning

Punchbowl.com

Tuesday, September 21, 2010

Page 5: Bringing MongoDB into your organization

• Online invitation & party planning

• Think e-Vite, but better everywhere

Punchbowl.com

Tuesday, September 21, 2010

Page 6: Bringing MongoDB into your organization

• 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

Page 7: Bringing MongoDB into your organization

• 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

Page 8: Bringing MongoDB into your organization

• 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

Page 9: Bringing MongoDB into your organization

• 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

Page 10: Bringing MongoDB into your organization

• 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

Page 11: Bringing MongoDB into your organization

• 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

Page 12: Bringing MongoDB into your organization

• 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

Page 13: Bringing MongoDB into your organization

You.

Tuesday, September 21, 2010

Page 14: Bringing MongoDB into your organization

You.

• Who here has used MongoDB?

Tuesday, September 21, 2010

Page 15: Bringing MongoDB into your organization

You.

• Who here has used MongoDB?

• Why are you here?

Tuesday, September 21, 2010

Page 16: Bringing MongoDB into your organization

A database

What is MongoDB?

Tuesday, September 21, 2010

Page 17: Bringing MongoDB into your organization

Schema-less

What is MongoDB?

Tuesday, September 21, 2010

Page 18: Bringing MongoDB into your organization

• Document based{ name: 'Ryan', email: '[email protected]', 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

Page 19: Bringing MongoDB into your organization

What is MongoDB?• NoSQL

Tuesday, September 21, 2010

Page 20: Bringing MongoDB into your organization

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

Page 21: Bringing MongoDB into your organization

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

Page 22: Bringing MongoDB into your organization

What is MongoDB?

Tuesday, September 21, 2010

Page 23: Bringing MongoDB into your organization

What is MongoDB?

• Different (downsides)

Tuesday, September 21, 2010

Page 24: Bringing MongoDB into your organization

What is MongoDB?

• Different (downsides)

• Async writes

Tuesday, September 21, 2010

Page 25: Bringing MongoDB into your organization

What is MongoDB?

• Different (downsides)

• Async writes

• No transactions

Tuesday, September 21, 2010

Page 26: Bringing MongoDB into your organization

What is MongoDB?

• Different (downsides)

• Async writes

• No transactions

• Cannot get you dates

Tuesday, September 21, 2010

Page 27: Bringing MongoDB into your organization

Why use it?

• Simple query syntax

• Write hashes, not SQL.

Tuesday, September 21, 2010

Page 28: Bringing MongoDB into your organization

Why use it?

• Sharding

Tuesday, September 21, 2010

Page 29: Bringing MongoDB into your organization

Why use it?

• GridFS

Tuesday, September 21, 2010

Page 30: Bringing MongoDB into your organization

Get your feet wet.Tuesday, September 21, 2010

Page 31: Bringing MongoDB into your organization

Pick something low risk

• Logging

• Statistics

• Data mining

Tuesday, September 21, 2010

Page 32: Bringing MongoDB into your organization

Punchbowl Vendor Portal

Tuesday, September 21, 2010

Page 33: Bringing MongoDB into your organization

Punchbowl Vendor Portal

• http://www.punchbowl.com/vendors

• Track searches

• Track impressions

• Use data to entice vendors to purchase listings

Tuesday, September 21, 2010

Page 34: Bringing MongoDB into your organization

DiveIn.

Tuesday, September 21, 2010

Page 35: Bringing MongoDB into your organization

Go all out

• Don’t just use MongoDB “relationally”

• Embrace embedded documents

• Rethink your data schema

Tuesday, September 21, 2010

Page 36: Bringing MongoDB into your organization

Digital Invitation Studio

Tuesday, September 21, 2010

Page 37: Bringing MongoDB into your organization

Digital Invitation Studio

Design

Tuesday, September 21, 2010

Page 38: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Design

Tuesday, September 21, 2010

Page 39: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos Design

Tuesday, September 21, 2010

Page 40: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Design

Tuesday, September 21, 2010

Page 41: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Design

Tuesday, September 21, 2010

Page 42: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Package

Design

Tuesday, September 21, 2010

Page 43: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Package

Liner

Design

Tuesday, September 21, 2010

Page 44: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Package

Liner

PaperDesign

Tuesday, September 21, 2010

Page 45: Bringing MongoDB into your organization

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Package

Liner

Paper

Greeting

Design

Tuesday, September 21, 2010

Page 46: Bringing MongoDB into your organization

Design

Digital Invitation Studio

Tags

Photos

Envelope

Postage

Package

Liner

Paper

Greeting

Tuesday, September 21, 2010

Page 47: Bringing MongoDB into your organization

Digital Invitation Studio

Tuesday, September 21, 2010

Page 48: Bringing MongoDB into your organization

Digital Invitation Studio• Completely rethought how we create

designs

Tuesday, September 21, 2010

Page 49: Bringing MongoDB into your organization

Digital Invitation Studio• Completely rethought how we create

designs

• Brand new UI

Tuesday, September 21, 2010

Page 50: Bringing MongoDB into your organization

Digital Invitation Studio• Completely rethought how we create

designs

• Brand new UI

• Uses MongoDB for everything design-related

Tuesday, September 21, 2010

Page 51: Bringing MongoDB into your organization

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

Page 52: Bringing MongoDB into your organization

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

Page 53: Bringing MongoDB into your organization

Where’s my stuff?!

Tuesday, September 21, 2010

Page 54: Bringing MongoDB into your organization

Open Source is not scary.

Tuesday, September 21, 2010

Page 55: Bringing MongoDB into your organization

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

Page 56: Bringing MongoDB into your organization

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

Page 57: Bringing MongoDB into your organization

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

Page 58: Bringing MongoDB into your organization

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

Page 59: Bringing MongoDB into your organization

Questions?

Tuesday, September 21, 2010