SlideShare a Scribd company logo
Real Time Ecommerce Analytics at Gilt GroupeMichael Bryzek, CTO & FounderMichael Nutt, Senior EngineerMongo SF - April 30, 2010We’re hiring: michael@gilt.comwww.gilt.com/invite/michael
What is Gilt Groupe?The world’s best brands at up to 70% offSales start every day at noonSimple, luxurious online experienceRelentless focus on the customer. . . A fast growing young company
Real time ecommerce analytics with MongoDB at Gilt Groupe (Michael Bryzek & Michael Nutt)
What does noon look like in Tech?
What does noon look like?
MongoDB at Gilt GroupeReal time analytics is a sweet spot for MongoDBTwo production examples we’ll share today at Gilt Groupe:Selecting product to sell based on real time dataHummingbird: Real time visualization of site traffic
Using MongoDB for Real Time AnalyticsGoal: Improve conversion of our gifts section (www.gilt.com/gifts) by ensuring good products are being promoted at the right timeChallenge: High traffic makes it hard to collect and analyze data in a scalable and fast wayApproach:Capture data in real time in MongoDBAnalyze w/ Map ReduceUpdate txn systemsRepeat
Step 1: Data CaptureJava server speaks JSON/HTTP, writes to MongoDB
Each page view receive a list of every item on the page and its position via AJAX
Purchase data sent by background job post purchaseStep 1: Data CaptureStoring Data in Java_db = new Mongo().getDB("gifts");_listing_visits = _db.getCollection("listing_visits");--------------------------------------------------BasicDBObject record = new BasicDBObject();record.put("gift_product_look_guid", de.giftProductLookGuid);record.put("product_look_guid", de.productLookGuid);record.put("sale_id", info.saleId);record.put("user_guid", info.userGuid);record.put("subsite_id", info.subsiteId);record.put("created_at", info.createdAt);record.put("position", position);_listing_visits.save(record);
Step 2: MapCalculate a score for each item based on page views, conversion, inventory, and merchandising inputm = 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}});}
Step 2: ReduceReduce is a passthroughr = 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" } );
Step 3: Update Transactional SystemsMongo + server run on ec2
Send “scores” collection back to our primary data center, storing latest scores in our primary relational database
Gift items are always sorted by score – transactional system only needed an “order by score desc” clauseQuestions before we move on to Hummingbird?
Tracking Pixels/tracking.gif?events=&prop1=women&server=www.gilt.com&products=&pageName=sales%3A+women&channel=sale&prop4=sale+category+page&u=https%3A%2F%2Fblue-sea-697d.quartiers047.workers.dev%3A443%2Fhttp%2Fwww.gilt.com%2Fsale%2Fwomen&guid=418237ca-2bc6-932e-84c2-d4f02d9fd5bf&gen=f&uid=25423567&cb=443460396
OmnitureGILTDataWarehouseUsers
Omniture24 hourslater...GILTDataWarehouseUsers
Node.jsAsynchronous, evented web frameworkhttp://nodejs.org
var mongo = require(’lib/mongodb’);var db = new mongo.Db('hummingbird', new mongo.Server('localhost', 27017, {}), {});db.createCollection('visits', function(err, collection) {  db.collection('visits', function(err, collection) {    collection.insert(env);  });});
DEMO

More Related Content

Similar to Real time ecommerce analytics with MongoDB at Gilt Groupe (Michael Bryzek & Michael Nutt) (20)

PPT
Webinar: Expanding Retail Frontiers with MongoDB
MongoDB
 
PDF
Expanding Retail Frontiers with MongoDB
Norberto Leite
 
PDF
Mongodb at-gilt-groupe-seattle-2012-09-14-final
MongoDB
 
PDF
MongoDB at Gilt Groupe
MongoDB
 
PPTX
Prepare for Peak Holiday Season with MongoDB
MongoDB
 
PPTX
Calculating ROI with Innovative eCommerce Platforms
MongoDB
 
PPTX
The Where and When of NoSQL Platforms
LogicworksNY
 
KEY
Optimize drupal using mongo db
Vladimir Ilic
 
PPTX
Retail referencearchitecture productcatalog
MongoDB
 
PPTX
Mobility: It's Time to Be Available for HER
MongoDB
 
PDF
MongoDB in the Big Data Landscape
MongoDB
 
PPTX
Nosql Now 2012: MongoDB Use Cases
MongoDB
 
PPTX
Big Data Analytics 1: Driving Personalized Experiences Using Customer Profiles
MongoDB
 
PPTX
Tim Marston.
PatrickCrompton
 
PPTX
Webinar: Realizing Omni-Channel Retailing with MongoDB - One Step at a Time
MongoDB
 
PPTX
mongoDB: Driving a data revolution
MongoDB
 
PDF
Enabling Telco to Build and Run Modern Applications
Tugdual Grall
 
PPTX
Unify Your Selling Channels in One Product Catalog Service
MongoDB
 
PPTX
Tim marston
PatrickCrompton
 
PPTX
3 Ways Modern Databases Drive Revenue
MongoDB
 
Webinar: Expanding Retail Frontiers with MongoDB
MongoDB
 
Expanding Retail Frontiers with MongoDB
Norberto Leite
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
MongoDB
 
MongoDB at Gilt Groupe
MongoDB
 
Prepare for Peak Holiday Season with MongoDB
MongoDB
 
Calculating ROI with Innovative eCommerce Platforms
MongoDB
 
The Where and When of NoSQL Platforms
LogicworksNY
 
Optimize drupal using mongo db
Vladimir Ilic
 
Retail referencearchitecture productcatalog
MongoDB
 
Mobility: It's Time to Be Available for HER
MongoDB
 
MongoDB in the Big Data Landscape
MongoDB
 
Nosql Now 2012: MongoDB Use Cases
MongoDB
 
Big Data Analytics 1: Driving Personalized Experiences Using Customer Profiles
MongoDB
 
Tim Marston.
PatrickCrompton
 
Webinar: Realizing Omni-Channel Retailing with MongoDB - One Step at a Time
MongoDB
 
mongoDB: Driving a data revolution
MongoDB
 
Enabling Telco to Build and Run Modern Applications
Tugdual Grall
 
Unify Your Selling Channels in One Product Catalog Service
MongoDB
 
Tim marston
PatrickCrompton
 
3 Ways Modern Databases Drive Revenue
MongoDB
 

More from MongoSF (20)

PPTX
Webinar: Typische MongoDB Anwendungsfälle (Common MongoDB Use Cases) 
MongoSF
 
PPTX
Schema design with MongoDB (Dwight Merriman)
MongoSF
 
KEY
C# Development (Sam Corder)
MongoSF
 
KEY
Flexible Event Tracking (Paul Gebheim)
MongoSF
 
KEY
Administration (Eliot Horowitz)
MongoSF
 
PDF
Ruby Development and MongoMapper (John Nunemaker)
MongoSF
 
PDF
MongoHQ (Jason McCay & Ben Wyrosdick)
MongoSF
 
KEY
Administration
MongoSF
 
KEY
Sharding with MongoDB (Eliot Horowitz)
MongoSF
 
KEY
Practical Ruby Projects (Alex Sharp)
MongoSF
 
PDF
Implementing MongoDB at Shutterfly (Kenny Gorman)
MongoSF
 
PDF
Debugging Ruby (Aman Gupta)
MongoSF
 
PPTX
Indexing and Query Optimizer (Aaron Staple)
MongoSF
 
PPTX
MongoDB Replication (Dwight Merriman)
MongoSF
 
PDF
Zero to Mongo in 60 Hours
MongoSF
 
KEY
Building a Mongo DSL in Scala at Hot Potato (Lincoln Hochberg)
MongoSF
 
KEY
PHP Development with MongoDB (Fitz Agard)
MongoSF
 
PPT
Java Development with MongoDB (James Williams)
MongoSF
 
PPTX
From MySQL to MongoDB at Wordnik (Tony Tam)
MongoSF
 
PDF
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
Webinar: Typische MongoDB Anwendungsfälle (Common MongoDB Use Cases) 
MongoSF
 
Schema design with MongoDB (Dwight Merriman)
MongoSF
 
C# Development (Sam Corder)
MongoSF
 
Flexible Event Tracking (Paul Gebheim)
MongoSF
 
Administration (Eliot Horowitz)
MongoSF
 
Ruby Development and MongoMapper (John Nunemaker)
MongoSF
 
MongoHQ (Jason McCay & Ben Wyrosdick)
MongoSF
 
Administration
MongoSF
 
Sharding with MongoDB (Eliot Horowitz)
MongoSF
 
Practical Ruby Projects (Alex Sharp)
MongoSF
 
Implementing MongoDB at Shutterfly (Kenny Gorman)
MongoSF
 
Debugging Ruby (Aman Gupta)
MongoSF
 
Indexing and Query Optimizer (Aaron Staple)
MongoSF
 
MongoDB Replication (Dwight Merriman)
MongoSF
 
Zero to Mongo in 60 Hours
MongoSF
 
Building a Mongo DSL in Scala at Hot Potato (Lincoln Hochberg)
MongoSF
 
PHP Development with MongoDB (Fitz Agard)
MongoSF
 
Java Development with MongoDB (James Williams)
MongoSF
 
From MySQL to MongoDB at Wordnik (Tony Tam)
MongoSF
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
Ad

Recently uploaded (20)

PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Ad

Real time ecommerce analytics with MongoDB at Gilt Groupe (Michael Bryzek & Michael Nutt)

  • 1. Real Time Ecommerce Analytics at Gilt GroupeMichael Bryzek, CTO & FounderMichael Nutt, Senior EngineerMongo SF - April 30, 2010We’re hiring: [email protected]/invite/michael
  • 2. What is Gilt Groupe?The world’s best brands at up to 70% offSales start every day at noonSimple, luxurious online experienceRelentless focus on the customer. . . A fast growing young company
  • 4. What does noon look like in Tech?
  • 5. What does noon look like?
  • 6. MongoDB at Gilt GroupeReal time analytics is a sweet spot for MongoDBTwo production examples we’ll share today at Gilt Groupe:Selecting product to sell based on real time dataHummingbird: Real time visualization of site traffic
  • 7. Using MongoDB for Real Time AnalyticsGoal: Improve conversion of our gifts section (www.gilt.com/gifts) by ensuring good products are being promoted at the right timeChallenge: High traffic makes it hard to collect and analyze data in a scalable and fast wayApproach:Capture data in real time in MongoDBAnalyze w/ Map ReduceUpdate txn systemsRepeat
  • 8. Step 1: Data CaptureJava server speaks JSON/HTTP, writes to MongoDB
  • 9. Each page view receive a list of every item on the page and its position via AJAX
  • 10. Purchase data sent by background job post purchaseStep 1: Data CaptureStoring Data in Java_db = new Mongo().getDB("gifts");_listing_visits = _db.getCollection("listing_visits");--------------------------------------------------BasicDBObject record = new BasicDBObject();record.put("gift_product_look_guid", de.giftProductLookGuid);record.put("product_look_guid", de.productLookGuid);record.put("sale_id", info.saleId);record.put("user_guid", info.userGuid);record.put("subsite_id", info.subsiteId);record.put("created_at", info.createdAt);record.put("position", position);_listing_visits.save(record);
  • 11. Step 2: MapCalculate a score for each item based on page views, conversion, inventory, and merchandising inputm = 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: ReduceReduce is a passthroughr = 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. Step 3: Update Transactional SystemsMongo + server run on ec2
  • 14. Send “scores” collection back to our primary data center, storing latest scores in our primary relational database
  • 15. Gift items are always sorted by score – transactional system only needed an “order by score desc” clauseQuestions before we move on to Hummingbird?
  • 19. Node.jsAsynchronous, evented web frameworkhttp://nodejs.org
  • 20. var mongo = require(’lib/mongodb’);var db = new mongo.Db('hummingbird', new mongo.Server('localhost', 27017, {}), {});db.createCollection('visits', function(err, collection) { db.collection('visits', function(err, collection) { collection.insert(env); });});
  • 21. DEMO