Your SlideShare is downloading. ×
0
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
MongoDB @ SourceForge
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MongoDB @ SourceForge

3,688

Published on

The MongoDB use case at SourceForge

The MongoDB use case at SourceForge

Published in: Technology
1 Comment
10 Likes
Statistics
Notes
  • very nice show
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
3,688
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
106
Comments
1
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MongoDB @SourceForge Mark Ramm
  • 2. We had a problem
  • 3. six weeks
  • 4. the other sourceforge
  • 5. over 90% of traffic
  • 6. Design goals• Improve Usability (more data, more dynamic pages)• Improve Performance• Improve Reliability
  • 7. Big Green Button
  • 8. scalable robust flexible simple consistant a good mix available DSL well CAP SQL knownpartitiontolerant ACID Tools Matter Knowscalable Your mongodb NoSQL Tools Screws and Nails focused simple siding base fast deck eventual flexible consistency basically soft available state
  • 9. ACIDhttp://www.flickr.com/photos/di4b0liko/2292648884/
  • 10. Why I NEED Relational I T S H• I have to have ACID because... L • It’s financial data (need consistency) L • My data is relational U B
  • 11. But...
  • 12. robust scalable simpleflexible DSL a good mix well known SQL ACID Tools Matter
  • 13. NoSQL
  • 14. consistantavailable CAP Toolspartition Mattertolerant NoSQL scalable focused simple fast Topic flexible
  • 15. CAPhttp://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
  • 16. http://www.flickr.com/photos/beigephotos/900974545/
  • 17. blah, blah,blah, blah, blah
  • 18. typology of NoSQL• key/value store• distributed key/value stores• column oriented stores• map-reduce store/system• document oriented store• graph oriented stores
  • 19. Enough theory
  • 20. We had documents{ source: sf.net, shortname: azureus, related: [ shortname: foo, description:bar, screenshots:[...], project_url: http://asdf, name; Azureus,] sf_id: 5383, sf_piwik_siteid: 2, name: Azureus, doap: http://sourceforge.net/api/project/name/azureus/doap, created: datetime.datetime(2003, 6, 24, 0, 0), homepage: http://azureus.sourceforge.net, project_url: http://sourceforge.net/projects/combined-for-all-data, resources: { news: [{feed: http://sourceforge.net/api/news/index/..., name: News, url: http://sourceforge.net/news/?group_id=84122}], forums: [{feed: http://sourceforge.net/api/post/index/.../rss, name: Help, url: http://sourceforge.net/forum/forum.php..., item_count: 1,}, {feed: http://sourceforge.net/api/post/index.../rss, name: Discussion, url: http://sourceforge.net/forum/forum.php/..., item_count: 28216,}],
  • 21. we did get some “lucky breaks”•consistency not critical•scale reads, not writes
  • 22. We wantedreplication
  • 23. directory directory directory Mongo Slave Mongo Slave Mongo Slave fetcher sf.gobble Mongo Master fetcher feed apissf.net freshmeat.net hosted apps etc
  • 24. We didn’t have a lot of time
  • 25. MongoDB has a query languageselect * from document where x=3and y="foo"db.things.find( { x : 3, y : "foo" } );
  • 26. partial updates• $inc { $inc : { field : value } }• $set• $unset• $push• $pushAll• $addToSet• $pop• $pull• $pullAll
  • 27. Conditional Updatesdb.people.update( { name:"Joe" },{ $inc: { x:1, y:1 } }, true
  • 28. { source: sf.net, shortname: azureus, related: [ shortname: foo, description:bar, screenshots:[...], project_url: http://asdf, name; Azureus,] sf_id: 5383, sf_piwik_siteid: 2, name: Azureus, doap: http://sourceforge.net/api/project/name/azureus/doap, created: datetime.datetime(2003, 6, 24, 0, 0), homepage: http://azureus.sourceforge.net, project_url: http://sourceforge.net/projects/combined-for-all-data, resources: { news: [{feed: http://sourceforge.net/api/news/index/..., name: News, url: http://sourceforge.net/news/?group_id=84122}], forums: [{feed: http://sourceforge.net/api/post/index/.../rss, name: Help, url: http://sourceforge.net/forum/forum.php..., item_count: 1,}, {feed: http://sourceforge.net/api/post/index.../rss, name: Discussion, url: http://sourceforge.net/forum/forum.php/..., item_count: 28216,}], "url": "http://freshmeat.net/
  • 29. }, ],},screenshot_page: http://sourceforge.net/project/screenshots.php?group_id=93438,screenshots: [{url: http://sourceforge.net/dbimage.php?id=208967, thumb: http://sourceforge.net/dbimage.php?id=208966, "name" : "Table structure view"}, {url: http://sourceforge.net/dbimage.php?id=99723, thumb: http://sourceforge.net/dbimage.php?id=99722}],# ID,shortname,description only present for SF projects.categories: {Development Status: [{description: 4 - Beta, id: 10, name: 4 - Beta, shortname: beta}], Intended Audience: [{description: Developers, id: 3, name: Developers, shortname: developers}, {description: End Users/Desktop, id: 2, name: End Users/Desktop, shortname: endusers}, {description: System Administrators, id: 4, name: System Administrators, shortname: sysadmins}], License: [{description: Apache License V2.0, id: 401, name: Apache License V2.0, shortname: apache2}, {description: GNU Library or Lesser General Public License (LGPL), id: 16, name: GNU Library or Lesser General Public License (LGPL), shortname: lgpl}], Operating System: [{description: All POSIX (Linux/BSD/UNIX-like OSes), id: 200, name: All POSIX (Linux/BSD/UNIX-like OSes), shortname: posix}, {description: OS Independent (Written in an interpreted language), id: 235, name: OS Independent (Written in an interpreted language), shortname: independent}], Programming Language: [{description: Python, id: 178, name: Python, shortname: python}], Topic: [{description: Filters,
  • 30. ToolsMatter Know Your mongodb Tools Screws and Nails siding deck
  • 31. AKALearning by doing
  • 32. AKA Horror stories
  • 33. ToolsMatter Know Your mongodb Tools Screws and Nails siding deck
  • 34. merciless.sourceforge.net
  • 35. •F i g u r e o u t w h a t YOUR app needs•D o n ’ t o b s e s s a b o u t SCALE you’ll never achieve•U s e t h e r i g h t t o o l f o r the job
  • 36. Lessons learned• a tool is only right when you know how to use it• DomainModel style setup is critical if you use more than one persistance type
  • 37. Mongo Lessons learned• you will have to repeat yourself• autosharding (still) not ready• local mongo on the web server is *really* fast• be carefull if the index does not fit in memory

×