SlideShare a Scribd company logo
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.
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. Applies
coupon code at
checkout.
Saves money,
gets items =
happy
customer!                                                                              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
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
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
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
Requirements Contd.

      Ok to have only Linux support ( We
       have some windows servers in the
       company, but we didn't need to
       support multiple OS(for DB clients).




                         Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute.   6
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
    
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
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
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
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
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
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
Internal CMS

   First version Django and MongoDB. Didn't 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
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
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
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
Things we learnt the hard way

    Didn't 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 it's an aspect of
     importing data into Mongo.



                             Coupons.com Incorporated Confidential and Proprietary Information - Please Do Not Copy or Distribute.   18
Things we learnt the hard way
contd…
     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
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

More Related Content

PPT
PHP Code And Search Engine Optimation
PDF
Keeping Things Lean & Mean: Crawl Optimisation - Search Marketing Summit AU
PDF
Business Success with Core Web Vitals
PDF
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
PDF
Joomla: How It Impacts Your SEO - The Good, The Bad and The Ugly
PPTX
Scope of deals and coupon sites
PPTX
A study on the potential of digital coupons
PPTX
Ebuisness
PHP Code And Search Engine Optimation
Keeping Things Lean & Mean: Crawl Optimisation - Search Marketing Summit AU
Business Success with Core Web Vitals
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Joomla: How It Impacts Your SEO - The Good, The Bad and The Ugly
Scope of deals and coupon sites
A study on the potential of digital coupons
Ebuisness

Similar to Mongo DB at Coupons Inc. (20)

PDF
Duplicate Code Detection (DCD) presentation
PPTX
Avoiding the Slog of Real-time Data Distribution
PPTX
Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016
PDF
Salvatore Incandela "Loyalty cashback - Scaling with MongoDB"
PDF
Abusing bleeding edge web standards for appsec glory
PPT
Enabling a hardware accelerated deep learning data science experience for Apa...
PDF
CIS14: Authentication: Who are You? You are What You Eat
PDF
CIS14: Authentication: Who are You? You are What You Eat
PDF
Java and the GPU - Everything You Need To Know
PDF
How Not to Be Conned by Your Drupal Vendor!
PPTX
Ian cohen tech in law project
PDF
Maximize Your Magento Site for Dramatic Traffic Sites
PDF
NoSQL into E-Commerce: lessons learned
PDF
2019 StartIT - Boosting your performance with Blackfire
PDF
Using GPUs to Achieve Massive Parallelism in Java 8
PDF
"You don't need a bigger boat": serverless MLOps for reasonable companies
PDF
ASANT Media - Site Starter
PPTX
Getting to timely insights - how to make it happen?
PPTX
E-COMMERCE WITH RESPECT TO CAMERA & IT’S.pptx
PPTX
The convergence of reporting and interactive BI on Hadoop
Duplicate Code Detection (DCD) presentation
Avoiding the Slog of Real-time Data Distribution
Jimmie Lindstrom, Braintree_ePayment Workshop @ Open Commerce Conference 2016
Salvatore Incandela "Loyalty cashback - Scaling with MongoDB"
Abusing bleeding edge web standards for appsec glory
Enabling a hardware accelerated deep learning data science experience for Apa...
CIS14: Authentication: Who are You? You are What You Eat
CIS14: Authentication: Who are You? You are What You Eat
Java and the GPU - Everything You Need To Know
How Not to Be Conned by Your Drupal Vendor!
Ian cohen tech in law project
Maximize Your Magento Site for Dramatic Traffic Sites
NoSQL into E-Commerce: lessons learned
2019 StartIT - Boosting your performance with Blackfire
Using GPUs to Achieve Massive Parallelism in Java 8
"You don't need a bigger boat": serverless MLOps for reasonable companies
ASANT Media - Site Starter
Getting to timely insights - how to make it happen?
E-COMMERCE WITH RESPECT TO CAMERA & IT’S.pptx
The convergence of reporting and interactive BI on Hadoop
Ad

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Electronic commerce courselecture one. Pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Empathic Computing: Creating Shared Understanding
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
A Presentation on Artificial Intelligence
PPTX
Big Data Technologies - Introduction.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Cloud computing and distributed systems.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Electronic commerce courselecture one. Pdf
Programs and apps: productivity, graphics, security and other tools
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Empathic Computing: Creating Shared Understanding
20250228 LYD VKU AI Blended-Learning.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
A Presentation on Artificial Intelligence
Big Data Technologies - Introduction.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Cloud computing and distributed systems.
Mobile App Security Testing_ A Comprehensive Guide.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Diabetes mellitus diagnosis method based random forest with bat algorithm
Review of recent advances in non-invasive hemoglobin estimation
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?

Mongo DB at Coupons Inc.

  • 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. Applies coupon code at checkout. Saves money, gets items = happy customer! 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 didn't 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. Didn't 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  Didn't 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 it's 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 way contd…  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

Editor's Notes

  • #2: 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.