halloween special a self post-mortem – using mongodb for voczie

Post on 24-Feb-2016

35 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Halloween Special a self Post-mortem – Using MongoDB for VocZie. Chris (I’m not a ghost) Woods. What went right (with Mongo). Application design Application development and system migration Application debugging MongoDB Documentation. WWR: Application Design. - PowerPoint PPT Presentation

TRANSCRIPT

Halloween Special a self Post-mortem – Using MongoDB for VocZie

Chris (I’m not a ghost) Woods

What went right (with Mongo)

• Application design• Application development and system

migration• Application debugging• MongoDB Documentation

WWR: Application Design

WWR: VocZie’s Structures

• Functionality First– What data does the UI need?– What structure would best present that data?

• Resulting Structures– User Object– Feed Object– Story Object– Comment Object

WWR: MongoDB Structures

• Collections• Objects and their identity• The two ways of relating objects– Via pointers (aka _id)– Via embedding

WWR: VocZie’s Object linking

• User Object– Array of pointers to feeds subscribed

• Story Object– Pointer to a feed object– One embedded comment object (if available)

• Comment Object– Pointer to a story object– Pointer to a user object (if available)

WWR: VocZie’s Object linking

User ObjectFeed Object

Comment Object

Story Object

Comment Object

1

1

1

1

0..1

1

*

1

WWR: VocZie’s REST API

Examples:

• /feeds/<feed_id>• /feeds/<feed_id>/stories• /feeds/<feed_id>/story/<story_id>/comments• /feeds/<feed_id>/story/<story_id>

What went wrong (with Mongo)

What went wrong (with Mongo)

• VM is just a VM except when it is Hell…• Oh yeah, and there are no transactions• MongoDB Documentation good…. PHP Driver

Documentation ..?...?

WWR: The VM from Hell

• VMs change over time…

WWR: The VM from Hell

500 – Internal server error.

There is a problem with the resource you are looking for, and it cannot be displayed.

WWR: The VM from Hell

root@1310-1064-2283:~# mongod

mongod --help for help and startup optionsMon Jul 23 14:38:35 [initandlisten] MongoDB starting : pid=26105 port=27017dbpath=/data/db/ 64-bit

** WARNING: You are running in OpenVZ. This is known to be broken!!!

WWR: The VM from Hell

• Have I lost all my data ?• Can I back up now?

WWR: The VM from Hell

• The no backup – backup…• Check out /var/lib/mongodb

WWR: TransactionsUpdateStoriesFromFeed( url )

if ( url is being updated ) then wait for notificationelselock out everyone else from updating urlfetch and parse stories from feed’s urlfor each story returnedif ( story doesn’t already exist in DB)add storyend ifend forremove lock preventing anyone else from updating urlend if

End function

WWR: Implementing a lock manually

• update if current– Aka Compare and Swap – Atomic MongoDB actions allow for manual

creation of locks– http://www.mongodb.org/display/DOCS/Atomic+

Operations#AtomicOperations-TheABANuance

Conclusions

• Good– No SQL DB is great for avoiding the DAL translation

pain– Aid development time– MongoDB Core Documentation is good

• Bad– Small print – VM compatibility– MongoDB Driver Documentation isn’t as good as

the core

Q&A

Who am I ? What am I doing here?

• Twitter: @mcwoods

• Email: woods.mc@gmail.com

• Mind-Flip Blog: www.mind-flip.com/theBlog

• When I think I’m being profound, or funny: www.WithBigHair.com

top related