Exploring the Future Potential of AI-Enabled Smartphone Processors
Real time ecommerce analytics with MongoDB at Gilt Groupe (Michael Bryzek & Michael Nutt)
1. Real Time Ecommerce Analytics at Gilt Groupe Michael Bryzek, CTO & Founder Michael Nutt, Senior Engineer Mongo SF - April 30, 2010 We’re hiring: michael@gilt.com www.gilt.com/invite/michael
2. What is Gilt Groupe? The world’s best brands at up to 70% off Sales start every day at noon Simple, luxurious online experience Relentless focus on the customer . . . A fast growing young company
6. MongoDB at Gilt Groupe Real time analytics is a sweet spot for MongoDB Two production examples we’ll share today at Gilt Groupe: Selecting product to sell based on real time data Hummingbird: Real time visualization of site traffic
7. Using MongoDB for Real Time Analytics Goal: Improve conversion of our gifts section (www.gilt.com/gifts) by ensuring good products are being promoted at the right time Challenge: High traffic makes it hard to collect and analyze data in a scalable and fast way Approach: Capture data in real time in MongoDB Analyze w/ Map Reduce Update txn systems Repeat
8.
9. Each page view receive a list of every item on the page and its position via AJAX
10.
11. Step 2: Map Calculate a score for each item based on page views, conversion, inventory, and merchandising input m = function(){ [snip] if ( hourly.visits > 0 && this.quantity_sold > 0 ) { var rate = this.quantity_sold / hourly.visits; points = parseInt(100*rate); v += points; explanation += "Conversion rate of " + points + "% ”; } else if ( hourly.visits == null || hourly.visits == 0 ) { v += 500; explanation += "Product has never been seen (500 points). "; } [snip] emit( { gift_product_look_guid : this._id }, { score : v, explanation : explanation}}); }
12. Step 2: Reduce Reduce is a passthrough r = function( pid , values ){ return values[0]; } Map Reduce run every 15 minutes via CRON – results stored in a collection named “scores” res = db.gift_product_looks.mapReduce( m , r , { out : "scores" } );
13.
14. Send “scores” collection back to our primary data center, storing latest scores in our primary relational database