1 / 21

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

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.

valmai
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Halloween Special a self Post-mortem – Using MongoDB for VocZie Chris (I’m not a ghost) Woods

  2. What went right (with Mongo) • Application design • Application development and system migration • Application debugging • MongoDB Documentation

  3. WWR: Application Design

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

  5. WWR: MongoDB Structures • Collections • Objects and their identity • The two ways of relating objects • Via pointers (aka _id) • Via embedding

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

  7. WWR: VocZie’s Object linking User Object Feed Object 1 * 0..1 1 1 1 Story Object 1 Comment Object Comment Object 1

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

  9. What went wrong (with Mongo)

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

  11. WWR: The VM from Hell • VMs change over time…

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

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

  14. WWR: The VM from Hell • Have I lost all my data ? • Can I back up now?

  15. WWR: The VM from Hell • The no backup – backup… • Check out /var/lib/mongodb

  16. WWR: Transactions UpdateStoriesFromFeed( url ) if ( url is being updated ) then wait for notification else lock out everyone else from updating url fetch and parse stories from feed’s url for each story returned if ( story doesn’t already exist in DB) add story end if end for remove lock preventing anyone else from updating url end if End function

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

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

  19. Q&A

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

More Related