The document discusses modeling and querying user data in MongoDB. It begins with an overview of MongoDB and common types of user data like account information, activity streams, and social networks. Examples are provided for modeling insurance company user data and user check-ins as collections in MongoDB. The presentation also covers extending the data model to track additional user actions and social connections.
Tata AIG General Insurance Company - Insurer Innovation Award 2024
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
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
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
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
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