Today's customers demand applications which integrate intelligently with data from mobile, social media, and cloud sources. A system of engagement meets these expectations by applying data and analytics drawn from an array of master systems. Relational databases are overwhelmed by the enormous variety in data structures, scale and performance required, but in this webinar you'll learn how to use MongoDB to meet the challenge.
A Journey Into the Emotions of Software Developers
Powering Systems of Engagement
1. Building a System of Engagement
with MongoDB
{ Name: ‘Bryan Reinero’,
Title: ‘Developer Advocate’,
Twitter: ‘@blimpyacht’,
Email: ‘bryan@mongdb.com’ }
2. 2
Systems of Engagement
• Real-Time
• Context-Aware
• Encourage
Interaction
• Embedded in
Business Systems
3. 3
Systems of Engagement
• Context rich and User
Relevant Interactions
• Integrates data from many
systems
• Integrates Analytics
4. 4
The Importance of Engagement
• 74% Consumer would respond positively to companies that
understand them
• 57% Would recommend the company
• 29% Would make additional purchases
2013 Experian study
5. 5
• 84% Would walk away from a non-responsive company
• 45% from a company that contacted them when they had asked
not to
• 52% Would leave a company that tries to sell them something
they already said they weren't interested in
The Importance of Engagement
2013 Experian study
6. 6
• 84% Would walk away from a non-responsive company
• 45% from a company that contacted them when they had asked
not to
• 52% Would leave a company that tries to sell them something
they already said they weren't interested in
The Importance of Engagement
How is the application of value to the user?
8. 8
Department of Veterans Affairs
20+ million Veterans in the US today
Doctors need a single view of a patient’s health record.
What happens when a patient has to change their address?
14. 14
Aggregating a Single View
Common Data
Source Metadata
Source Data A
Source Data B
{
_id: <hash>,
address: {
num: 860,
street: “Grove”,
city: “San Francisco”,
state: “CA”,
zip:
}
}
15. 15
Aggregating a Single View
Common Data
Source Metadata
Source Data A
Source Data B
{
sources: [
{
source: “URI”,
updated: ISODate(),
},
…
]
}
16. 16
Aggregating a Single View
Common Data
Source Metadata
Source Data A
Source Data B
Shopping Cart,
Purchase history,
Prescriptions,
Medical History,
33. 33
Defining Service Areas
Data Driven Decisions
• Find users within a given area
• Intersections with multiple service areas
• Fraud detection
• Where are my competitors located
44. 44
Write to Bucket
Parameters
• user
• $push append to end of hotList array
db.user.update(
{"user" : "Democritus"},
{$push: {
hotList: {
$each:
[
{ o: 10, <MESSAGE> },
{ o: 7, <MESSAGE> },
…
],
$sort: { o: -1 },
$slice: 50 }
}}
);
45. 45
Write to Bucket
Parameters
• user
• $push append to end of hotList array
• $each list of message elements
db.user.update(
{"user" : "Democritus"},
{$push: {
hotList: {
$each:
[
{ o: 10, <MESSAGE> },
{ o: 7, <MESSAGE> },
…
],
$sort: { o: -1 },
$slice: 50 }
}}
);
46. 46
Write to Bucket
Parameters
• user
• $push append to end of hotList array
• $each message in array
• $sort the resulting array in descending order
db.user.update(
{"user" : "Democritus"},
{$push: {
hotList: {
$each:
[
{ o: 10, <MESSAGE> },
{ o: 7, <MESSAGE> },
…
],
$sort: { o: -1 },
$slice: 50 }
}}
);
47. 47
Write to Bucket
Parameters
• user
• $push append to end of hotList array
• $each message in array
• $sort the resulting array in descending order
• $slice include only the first 50 elements
db.user.update(
{"user" : "Democritus"},
{$push: {
hotList: {
$each:
[
{ o: 10, <MESSAGE> },
{ o: 7, <MESSAGE> },
…
],
$sort: { o: -1 },
$slice: 50 }
}}
);
53. 53
Capture Data Changes
Systems of Engagement
DataServices
Data Processing
Integration, Analytics, etc.
Systems of Record
Master Data
Raw Data
Integrated Data
…
ETL
Bus
Apache Kafka
record
record
record
54. 54
Many Complexities to Tackle
• Data modeling
• Data Extraction (ETL)
• Change Data Capture (CDC)
• Data Governance
• Data Lineage
• Security
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
So let's add a component that will propagate changes from the system of engagement back to the systems of record
In addition to the previous components we put in place for the single view, we need some sort of message processing component to receive and publish data changes back to the source systems. For this example, we will use Apache Kafka as it is pretty commonly used these days.
We'll show changing the integrated data in the system of engagement database and propagating that back to the systems of record
Graph patterns are also great for recommendation engines