• Like

Mongo DB at Coupons Inc.

  • 983 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
983
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
14
Comments
0
Likes
0

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
  • Introduction: The way people shop has changed through the integration of technology into our daily lives. Who hasn’t price compared on the web to find the store that gives them the best deal or used their smartphone while in-store to help make a purchase decision? This has fundamentally changed how we need to reach, engage and motivate consumers through our marketing activities. This paradigm shift in how consumers shop is an opportunity for marketers to re-think how, when and where you spend your promotional and advertising dollars.

Transcript

  • 1. MongoDB at Coupons Inc. http://www.coupons.com/coupon-codes/http://www.coupons.com/passbook (for iPhone) Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute.
  • 2. How do coupon codes work? 1. User searches “Kmart coupons” in Google/Coupons Inc. 2. Sees a Coupons.com link on search results page.5. Appliescoupon code atcheckout.Saves money,gets items =happycustomer! 3. Finds coupon code for $5 for $50. 4. Clicks to get code and is redirected to Kmart. Affiliate “cookie” is dropped. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 2
  • 3. Why we looked for new DB?  Needed to build a data driven website for Coupon Codes in a short amount of time.  Want one DB to reasonably handle multiple use cases.  Want to quickly iterate.  Only thing we knew about our schema is that it’s going to change pretty quickly. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 3
  • 4. Main requirements  Easy to change our model. Low operational overhead. Developer can do the changes herself.  Wanted a DB to avoid multiple caching layers as this got us into trouble earlier.  Initially data size is not going to be large, but if we do things right its expected to grow quickly. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 4
  • 5. Requirements Contd.  Main use cases did not require join, and did not need multi row transactions.  Need to support Java, Python, Perl and PHP – because we want to develop things quickly.  Should be easy to set up across multiple data centers soon after launch.  Should work in EC2. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 5
  • 6. Requirements Contd.  Ok to have only Linux support ( We have some windows servers in the company, but we didnt need to support multiple OS(for DB clients). Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 6
  • 7. DBs considered  SQLServer behind cache [Gemfire/Varnish/memcache/apc]  Used heavily in company. Existing expertise with SQL Server.  Operational overhead(schema changes)  MySQL  Familiarity with the DB in the Coupon Codes team.  Could not easily change our model. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 7 
  • 8. DB Considered Contd.  MongoDB  Easy to model, make changes to “schema”.  Sharding would let us scale in future. Easy to go from non sharded to sharded mode. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 8
  • 9. 1st Use Case  Main datastore for all Coupon/Merchant related data.  Writes by internal processes, periodic reads for indexing into Solr.  Down time does not impact availability of live site.  Important consideration when deploying a new technology. (If MongoDB fails, it does not affect the live site.) Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 9
  • 10. Sample Coupon { "category_id" : NumberLong(117), "category_name" : "Books, News & Magazines", "code" : "", "coupon_id" : "53_2", "created_by" : 5, "exclusive_offer" : 1, "passbook_offer" : 1, "tags" : [passbook, black friday ] "merchant" : { "name" : "Abebooks", "id" : NumberLong(678), "image_url_small" : "http://cdn.cpnscdn.com/.../aff/in/small/abebooks_88x31_1.gif", "image_url_large":"http://cdn.cpnscdn.com/.../in/large/abebooks_234x60_0.gif" }, "url" : "/coupon-codes/go/rs?k=53_2" } Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 10
  • 11. Real time analytics for website Writes from frontend servers, reads internally. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 11
  • 12. Serve user preferences data for live site. • 1st use case where live site depends on MongoDB. • Writes happen from internal processes • Reads from frontend servers. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 12
  • 13. Archiving data  Archiving old data feeds: Useful for periodic analysis.  Internal writes and reads Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 13
  • 14. Internal CMS First version Django and MongoDB. Didnt have good integration. Current version is based on MongoDB, but not Django. Used extensively internally. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 14
  • 15. Passbooks/Printable Images Examples of Blobs. Passbooks are zip files. Need tight control on Printable Coupons Images (These are different than the Grocery Coupons). Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 15
  • 16. Coming up soon  User Generated Content from Mongo  Both real time writes and reads.  Schema : Still evolving! Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 16
  • 17. What pleasantly surprised us Stability Database easy to set up (install packages and some configuration) Good documentation (easy to find stuff you want to do). Multi Data Center replication. MMS (Mongo Monitoring Service) - Really excellent service. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 17
  • 18. Things we learnt the hard way  Didnt have the latest Debian, Ubuntu, PHP, Python client packages on Ubuntu repository.  No great support for Django(packages were not marked stable then). We moved away from Django.  In JavaScript number 42 becomes number 42.0. (Hit us in production). This is a common pitfall/learning item for users but its an aspect of importing data into Mongo. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 18
  • 19. Things we learnt the hard waycontd…  Our application would benefit from joins which MongoDB does not support.  Need a package to install replica sets on same machine. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 19
  • 20. This slide is intentionally left blank to mark the last slide. Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute. 20