SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
User Data Management
with
Please stand by...
We’ll begin shortly.
Q&A to follow the webinar
Recording Available 24 Hours After Event
Other issues? E-mail webinars@10gen.com
Osmar Olivo
Consulting Engineer, 10gen
Oz@10gen.com
Friday, July 12, 13
Agenda
// High Level Overview
> MongoDB
> User Data
// Modeling & Querying User Data
> Insurance Company User Data
> User Check-Ins
// Extending the Data Model for Future Use-Cases
> Tracking User Activity
> Social Media
Friday, July 12, 13
MongoDB
• Scalable, High-Performance, Open Source, Document-
Oriented Database
– JSON (well... BSON) Storage Model
– Indexes and Full Query Language
– Easy for Developers to Pick Up
– Easy for Administrators to Scale
• More Features at http://www.mongodb.org/
• Overview Video: http://www.10gen.com/what-is-mongodb
Friday, July 12, 13
User Data
• Account Information
– Name, Address, etc
– Account Status
– Notes
• Activity Streams
– Posts, Tweets, Likes, Check-Ins
– Recording User Actions
• Social Networks
– Friends, Connections
– Groups, Tags
Friday, July 12, 13
Insurance Company Data
Account Information
– Name, Address, etc
– Account Status
– Notes
A Data Modeling
Exercise
Friday, July 12, 13
Insurance Company
Friday, July 12, 13
Insurance Company
Friday, July 12, 13
Insurance Company
User Opened
Date: 05/26/2012
Status: Success
Account Modified
Date: 06/22/2012
Action: Added
User Call Log
Date: 07/24/2012
Type: Complaint
Friday, July 12, 13
2 Types of Data
User Opened
Date: 05/26/2012
Status: Success
Account Modified
Date: 06/22/2012
Action: Added
User Call Log
Date: 07/24/2012
Type: Complaint
Friday, July 12, 13
Rule of Thumb: Categories of Data
Map Well to MongoDB Collections
Policies Activities
Friday, July 12, 13
Policies
policy = {
	

 name:“John Smith”
	

 employer:“10gen”,
	

 address:“555 Fictional Ave”,
	

 e-mail:“me@john.smith.com”,
	

 spouse:“Yes”,
	

 dependents:“No”,
	

 dates: [
{start: 5/26/2013 10:12:00},
end: 5/26/2023 10:12:00}],
	

 others:“No”
}
Friday, July 12, 13
Activities
activity = {
	

 user-id: “JohnSmith421”
	

 type:“account-opening”,
	

 status:“Success”,
	

 dates: 5/26/2012 10:12:00,
	

 related-doc:“/customer/
JohnSmith421/open.pdf”
}
User Opened Account
Date: 05/26/2012
Status: Success
Account Modified
Date: 06/22/2012
Action: Added Spouse
User Call Log
Date: 07/24/2012
Type: Complaint
Friday, July 12, 13
User Check-Ins
Activity Streams
– Posts, Tweets, Check-Ins
– Recording User Actions
Friday, July 12, 13
Places
Q: Current location
A: Places near
location
User Generated
Content
Places
Friday, July 12, 13
Inserting a Place
var p = { name:“10gen HQ”,
address:“229 W 43rd St”,
city:“NewYork”,
zip:“10036”,
tags: [“mongoDB”,“business”],
latlong: [40.0, 72.0],
tips: [{user:“John Smith”, time:“3/15/2013”,tip:
“Make sure to stop by for office hours!”}]}
> db.posts.save(p)
Friday, July 12, 13
Updating Tips
db.places.update({name:"10gen HQ"},
	

 {$push :{tips:
	

 	

 	

 {user:"John", time:3/15/2012,
	

 	

 	

 tip:"stop by for office hours on
	

 	

 	

 Wednesdays from 4-6"}}}}
Friday, July 12, 13
Querying Our Places
• Creating Indexes
★ db.places.ensureIndex({tags:1})
★ db.places.ensureIndex({name:1})
★ db.places.ensureIndex({latlong:”2d”})
• Finding Places
★ db.places.find({latlong:{$near:[40,70]}})
• Regular Expressions
★ db.places.find({name: /^typeaheadstring/)
• Using Tags
★ db.places.find({tags: “business”})
Friday, July 12, 13
User Check-Ins
Record User Check-Ins
Check-Ins
Users
Stats
Users
Stats
Friday, July 12, 13
Users
user1 = {
	

 name:“John Smith”
	

 e-mail:“me@John.Smith.com”,
	

 check-ins: [4b97e62bf1d8c7152c9ccb74,
5a20e62bf1d8c736ab]
}
checkins [] = ObjectId reference to Check-Ins
Collection
Friday, July 12, 13
Check-Ins
user1 = {
	

 place: “10gen HQ”,
	

 ts: 9/20/2010 10:12:00,
	

 userId: <object id of user>
}
Every Check-In is Two Operations
• Insert a Check-In Object (check-ins collection)
• Update ($push) user object with check-in ID
(users collection)
Friday, July 12, 13
Simple Stats
db.checkins.find({place:“10gen HQ”)
db.checkins.find({place:“10gen HQ”})
	

 	

 	

 	

 .sort({ts:-1}).limit(10)
db.checkins.find({place:“10gen HQ”, 	

	

 	

 	

 	

 ts: {$gt: midnight}}).count()
Friday, July 12, 13
Stats w/ MapReduce
mapFunc = function() {emit(this.place, 1);}
reduceFunc = function(key, values) {return
Array.sum(values);}
res = db.checkins.mapReduce(mapFunc,reduceFunc,
	

 {query: {timestamp: {$gt:nowminus3hrs}}})
res = [{_id:”10gen HQ”, value: 17}, ….., ….]
... or try using the new aggregation framework!
Friday, July 12, 13
Account Modified
Date: 06/22/2012
Action: Added
Adding More User Data
User Opened
Date: 05/26/2012
Status: Success
User Call Log
Date: 07/24/2012
Type: Complaint
Friday, July 12, 13
Account Modified
Date: 06/22/2012
Action: Added
Adding More User Data
Click!
Click! Click!
User Opened
Date: 05/26/2012
Status: Success
Click!
User Call Log
Date: 07/24/2012
Type: Complaint
Click!
Friday, July 12, 13
Tracking Clicks
Policies Activities
Friday, July 12, 13
Each Click Creates a New Doc
Policies Activities Clicks
Friday, July 12, 13
Clicks
click = {
	

 user: “JohnSmith”,
	

 ts: 9/20/2010 10:12:00,
	

 link:“http://some-link-here.com/wherever”
}
Now we can audit user activity...
db.clicks.find({user:”JohnSmith”}).sort({ts:-1})
Show me all of John’s clicks sorted by timestamp.
Friday, July 12, 13
Extending the Schema
user1 = {
	

 name:“John Smith”
	

 e-mail:“me@John.Smith.com”,
	

 check-ins: [4b97e62bf1d8c7152c9ccb74,
5a20e62bf1d8c736ab]
}
Friday, July 12, 13
Extending the Schema
user1 = {
	

 name:“John Smith”
	

 e-mail:“me@John.Smith.com”,
	

 check-ins: [4b97e62bf1d8c7152c9ccb74,
5a20e62bf1d8c736ab],
	

 friends: [7b47j62bk1d3c5621c1icv90,
1h11p62bf1d8c716za]
}
Friday, July 12, 13
Takeaways
// User Data Fits Well in MongoDB
> Flexible Data Model
> Stay Agile; Make Changes
> Many Customers in Production
// Application Patterns Drive Data Design
> Optimize Data Model For Queries
> Primary Use Cases Drive Design
// Adding Features Can Be Easy
> Create New Data Structures
> Extend Existing
Friday, July 12, 13
@mongodb
conferences,	
  appearances,	
  and	
  meetups
http://www.10gen.com/events
http://bit.ly/mongo>	
  
Facebook	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  Twitter	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  LinkedIn
http://linkd.in/joinmongo
More info at http://www.mongodb.org/
Questions?
Oz@10gen.com
Friday, July 12, 13

Weitere ähnliche Inhalte

Andere mochten auch (6)

MongoDB 2.4 Security Features
MongoDB 2.4 Security FeaturesMongoDB 2.4 Security Features
MongoDB 2.4 Security Features
 
Replication and Replica Sets
Replication and Replica SetsReplication and Replica Sets
Replication and Replica Sets
 
Launching Services in Amazon Web Services
Launching Services in Amazon Web ServicesLaunching Services in Amazon Web Services
Launching Services in Amazon Web Services
 
Regular Expressions and You
Regular Expressions and YouRegular Expressions and You
Regular Expressions and You
 
Security Features in MongoDB 2.4
Security Features in MongoDB 2.4Security Features in MongoDB 2.4
Security Features in MongoDB 2.4
 
MongoDB : Scaling, Security & Performance
MongoDB : Scaling, Security & PerformanceMongoDB : Scaling, Security & Performance
MongoDB : Scaling, Security & Performance
 

Ähnlich wie Webinar: User Data Management with MongoDB

How to Win Friends and Influence People (with Hadoop)
How to Win Friends and Influence People (with Hadoop)How to Win Friends and Influence People (with Hadoop)
How to Win Friends and Influence People (with Hadoop)
Sam Shah
 
Single View of the Customer
Single View of the Customer Single View of the Customer
Single View of the Customer
MongoDB
 
Duet enterprise executive overview
Duet enterprise executive overviewDuet enterprise executive overview
Duet enterprise executive overview
Yi Guoyong
 
Web analytics, a CARL IT On Air presentation
Web analytics, a CARL IT On Air presentationWeb analytics, a CARL IT On Air presentation
Web analytics, a CARL IT On Air presentation
Ian Chan
 
Creating a Single View Part 1: Overview and Data Analysis
Creating a Single View Part 1: Overview and Data AnalysisCreating a Single View Part 1: Overview and Data Analysis
Creating a Single View Part 1: Overview and Data Analysis
MongoDB
 
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
Wes Preston
 

Ähnlich wie Webinar: User Data Management with MongoDB (20)

Webinar: User Data Management with MongoDB
Webinar: User Data Management with MongoDBWebinar: User Data Management with MongoDB
Webinar: User Data Management with MongoDB
 
Creating a Single View: Overview and Analysis
Creating a Single View: Overview and AnalysisCreating a Single View: Overview and Analysis
Creating a Single View: Overview and Analysis
 
How to Win Friends and Influence People (with Hadoop)
How to Win Friends and Influence People (with Hadoop)How to Win Friends and Influence People (with Hadoop)
How to Win Friends and Influence People (with Hadoop)
 
Single View of the Customer
Single View of the Customer Single View of the Customer
Single View of the Customer
 
End-to-End Identity Management
End-to-End Identity ManagementEnd-to-End Identity Management
End-to-End Identity Management
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
How Retail Banks Use MongoDB
How Retail Banks Use MongoDBHow Retail Banks Use MongoDB
How Retail Banks Use MongoDB
 
BSides Lisbon 2017: David Sopas's 'GTFO Mr. User'
BSides Lisbon 2017: David Sopas's 'GTFO Mr. User'BSides Lisbon 2017: David Sopas's 'GTFO Mr. User'
BSides Lisbon 2017: David Sopas's 'GTFO Mr. User'
 
Duet enterprise executive overview
Duet enterprise executive overviewDuet enterprise executive overview
Duet enterprise executive overview
 
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestrationCamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
 
Web analytics, a CARL IT On Air presentation
Web analytics, a CARL IT On Air presentationWeb analytics, a CARL IT On Air presentation
Web analytics, a CARL IT On Air presentation
 
How can a data layer help my seo
How can a data layer help my seoHow can a data layer help my seo
How can a data layer help my seo
 
Creating a Single View Part 1: Overview and Data Analysis
Creating a Single View Part 1: Overview and Data AnalysisCreating a Single View Part 1: Overview and Data Analysis
Creating a Single View Part 1: Overview and Data Analysis
 
Socialize your SAP ERP and Collaborate with him!
Socialize your SAP ERP and Collaborate with him! Socialize your SAP ERP and Collaborate with him!
Socialize your SAP ERP and Collaborate with him!
 
Nyss Open legislation
Nyss Open legislationNyss Open legislation
Nyss Open legislation
 
AD306 - Turbocharge Your Enterprise Social Network With Analytics
AD306 - Turbocharge Your Enterprise Social Network With AnalyticsAD306 - Turbocharge Your Enterprise Social Network With Analytics
AD306 - Turbocharge Your Enterprise Social Network With Analytics
 
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
2013 SharePoint Fest DC - Build a SharePoint Intake/Request List
 
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
 
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
SOASTA mPulse: Delivering the Real in Real User Measurement (RUM)
 

Mehr von MongoDB

Mehr von MongoDB (20)

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

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Webinar: User Data Management with MongoDB

  • 1. User Data Management with Please stand by... We’ll begin shortly. Q&A to follow the webinar Recording Available 24 Hours After Event Other issues? E-mail webinars@10gen.com Osmar Olivo Consulting Engineer, 10gen Oz@10gen.com Friday, July 12, 13
  • 2. Agenda // High Level Overview > MongoDB > User Data // Modeling & Querying User Data > Insurance Company User Data > User Check-Ins // Extending the Data Model for Future Use-Cases > Tracking User Activity > Social Media Friday, July 12, 13
  • 3. MongoDB • Scalable, High-Performance, Open Source, Document- Oriented Database – JSON (well... BSON) Storage Model – Indexes and Full Query Language – Easy for Developers to Pick Up – Easy for Administrators to Scale • More Features at http://www.mongodb.org/ • Overview Video: http://www.10gen.com/what-is-mongodb Friday, July 12, 13
  • 4. User Data • Account Information – Name, Address, etc – Account Status – Notes • Activity Streams – Posts, Tweets, Likes, Check-Ins – Recording User Actions • Social Networks – Friends, Connections – Groups, Tags Friday, July 12, 13
  • 5. Insurance Company Data Account Information – Name, Address, etc – Account Status – Notes A Data Modeling Exercise Friday, July 12, 13
  • 8. Insurance Company User Opened Date: 05/26/2012 Status: Success Account Modified Date: 06/22/2012 Action: Added User Call Log Date: 07/24/2012 Type: Complaint Friday, July 12, 13
  • 9. 2 Types of Data User Opened Date: 05/26/2012 Status: Success Account Modified Date: 06/22/2012 Action: Added User Call Log Date: 07/24/2012 Type: Complaint Friday, July 12, 13
  • 10. Rule of Thumb: Categories of Data Map Well to MongoDB Collections Policies Activities Friday, July 12, 13
  • 11. Policies policy = { name:“John Smith” employer:“10gen”, address:“555 Fictional Ave”, e-mail:“me@john.smith.com”, spouse:“Yes”, dependents:“No”, dates: [ {start: 5/26/2013 10:12:00}, end: 5/26/2023 10:12:00}], others:“No” } Friday, July 12, 13
  • 12. Activities activity = { user-id: “JohnSmith421” type:“account-opening”, status:“Success”, dates: 5/26/2012 10:12:00, related-doc:“/customer/ JohnSmith421/open.pdf” } User Opened Account Date: 05/26/2012 Status: Success Account Modified Date: 06/22/2012 Action: Added Spouse User Call Log Date: 07/24/2012 Type: Complaint Friday, July 12, 13
  • 13. User Check-Ins Activity Streams – Posts, Tweets, Check-Ins – Recording User Actions Friday, July 12, 13
  • 14. Places Q: Current location A: Places near location User Generated Content Places Friday, July 12, 13
  • 15. Inserting a Place var p = { name:“10gen HQ”, address:“229 W 43rd St”, city:“NewYork”, zip:“10036”, tags: [“mongoDB”,“business”], latlong: [40.0, 72.0], tips: [{user:“John Smith”, time:“3/15/2013”,tip: “Make sure to stop by for office hours!”}]} > db.posts.save(p) Friday, July 12, 13
  • 16. Updating Tips db.places.update({name:"10gen HQ"}, {$push :{tips: {user:"John", time:3/15/2012, tip:"stop by for office hours on Wednesdays from 4-6"}}}} Friday, July 12, 13
  • 17. Querying Our Places • Creating Indexes ★ db.places.ensureIndex({tags:1}) ★ db.places.ensureIndex({name:1}) ★ db.places.ensureIndex({latlong:”2d”}) • Finding Places ★ db.places.find({latlong:{$near:[40,70]}}) • Regular Expressions ★ db.places.find({name: /^typeaheadstring/) • Using Tags ★ db.places.find({tags: “business”}) Friday, July 12, 13
  • 18. User Check-Ins Record User Check-Ins Check-Ins Users Stats Users Stats Friday, July 12, 13
  • 19. Users user1 = { name:“John Smith” e-mail:“me@John.Smith.com”, check-ins: [4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab] } checkins [] = ObjectId reference to Check-Ins Collection Friday, July 12, 13
  • 20. Check-Ins user1 = { place: “10gen HQ”, ts: 9/20/2010 10:12:00, userId: <object id of user> } Every Check-In is Two Operations • Insert a Check-In Object (check-ins collection) • Update ($push) user object with check-in ID (users collection) Friday, July 12, 13
  • 21. Simple Stats db.checkins.find({place:“10gen HQ”) db.checkins.find({place:“10gen HQ”}) .sort({ts:-1}).limit(10) db.checkins.find({place:“10gen HQ”, ts: {$gt: midnight}}).count() Friday, July 12, 13
  • 22. Stats w/ MapReduce mapFunc = function() {emit(this.place, 1);} reduceFunc = function(key, values) {return Array.sum(values);} res = db.checkins.mapReduce(mapFunc,reduceFunc, {query: {timestamp: {$gt:nowminus3hrs}}}) res = [{_id:”10gen HQ”, value: 17}, ….., ….] ... or try using the new aggregation framework! Friday, July 12, 13
  • 23. Account Modified Date: 06/22/2012 Action: Added Adding More User Data User Opened Date: 05/26/2012 Status: Success User Call Log Date: 07/24/2012 Type: Complaint Friday, July 12, 13
  • 24. Account Modified Date: 06/22/2012 Action: Added Adding More User Data Click! Click! Click! User Opened Date: 05/26/2012 Status: Success Click! User Call Log Date: 07/24/2012 Type: Complaint Click! Friday, July 12, 13
  • 26. Each Click Creates a New Doc Policies Activities Clicks Friday, July 12, 13
  • 27. Clicks click = { user: “JohnSmith”, ts: 9/20/2010 10:12:00, link:“http://some-link-here.com/wherever” } Now we can audit user activity... db.clicks.find({user:”JohnSmith”}).sort({ts:-1}) Show me all of John’s clicks sorted by timestamp. Friday, July 12, 13
  • 28. Extending the Schema user1 = { name:“John Smith” e-mail:“me@John.Smith.com”, check-ins: [4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab] } Friday, July 12, 13
  • 29. Extending the Schema user1 = { name:“John Smith” e-mail:“me@John.Smith.com”, check-ins: [4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab], friends: [7b47j62bk1d3c5621c1icv90, 1h11p62bf1d8c716za] } Friday, July 12, 13
  • 30. Takeaways // User Data Fits Well in MongoDB > Flexible Data Model > Stay Agile; Make Changes > Many Customers in Production // Application Patterns Drive Data Design > Optimize Data Model For Queries > Primary Use Cases Drive Design // Adding Features Can Be Easy > Create New Data Structures > Extend Existing Friday, July 12, 13
  • 31. @mongodb conferences,  appearances,  and  meetups http://www.10gen.com/events http://bit.ly/mongo>   Facebook                    |                  Twitter                  |                  LinkedIn http://linkd.in/joinmongo More info at http://www.mongodb.org/ Questions? Oz@10gen.com Friday, July 12, 13