Storing data about users is central to most applications. Whether you run a social network, an identity management system, or an online game, your users are the core of your business. In this webinar, we will discuss MongoDB’s capability to accommodate your evolving user data model and sustain the transaction load associated with accessing and updating user data.
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
Webinar: User Data Management with MongoDB
1. User Data Management
with
Please stand by...
We’ll begin shortly.
Audio: 1-877-668-4493
Kevin Hanson
Solutions Architect, 10gen Access code: 666 500 606
kevin@10gen.com Q&A to follow the webinar
twitter: @hungarianhc
Recording Available 24 Hours After Event
Other issues? E-mail webinars@10gen.com
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
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
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
21. 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)
23. 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!
24. Adding More User Data
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
25. Adding More User Data
Click! Click!
User Opened Account
Date: 05/26/2012
Click!
Status: Success
Account Modified
Click! Date: 06/22/2012 Click!
Action: Added Spouse
User Call Log
Date: 07/24/2012
Type: Complaint
28. Clicks
click = {
user: “kevinhanson”,
ts: 9/20/2010 10:12:00,
link: “http://some-link-here.com/wherever”
}
Now we can audit user activity...
db.clicks.find({user:”kevinhanson”}).sort({ts:-1})
Show me all of Kevin’s clicks sorted by timestamp.
31. 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
32. More info at http://www.mongodb.org/
conferences,
appearances,
and
meetups
http://www.10gen.com/events
Questions?
kevin@10gen.com
@hungarianhc
Facebook
|
Twitter
|
LinkedIn
http://bit.ly/mongo>
@mongodb http://linkd.in/joinmongo