SlideShare a Scribd company logo
#MDBW17
Using Aggregation for Analytics
JUMPSTART SESSION
#MDBW17
Senior Solutions Architect, MongoDB
RUBÉN TERCEÑO
@rubenTerceno
#MDBW17
AGENDA
• My Problem (And Maybe Yours).
• In the Search for a Solution.
• MongoDB Aggregation Framework.
• Let’s Crunch Some Numbers!
MY PROBLEM
(AND MAYBE YOURS)
#MDBW17
ONCE UPON A TIME…
#MDBW17
THAT MANAGER
• The CRM system is the mean
source of revenue information.
• Up to date information is critical
for our business owners.
• Grouped data is much more
valuable while taking decisions.
• Graphs are a powerful mean to
present grouped information.
IN THE SEARCH
FOR A SOLUTION
#MDBW17
STEP 1: ANALYTICS ON THE OPERATIONAL
DB
• Running Analytics on your operational database.
#MDBW17
STEP 1: ANALYTICS ON THE OPERATIONAL
DB
#MDBW17
STEP 1: ANALYTICS ON THE OPERATIONAL
DB
• Running Analytics on your operational database.
‒ Analytical workload affects operational users
o Lots of table scans and heavy counts and groups.
#MDBW17
STEP 2: ETL AND OLAP
• ETLing your data into an analytical dedicated database.
#MDBW17
STEP 2: ETL AND OLAP
#MDBW17
STEP 2: ETL AND OLAP
• ETLing your data into an analytical dedicated database.
‒ Longer time to react to business requests.
o Every change affects four systems.
‒ Lack of accuracy on real time reports.
o Data synchronization was happening overnight, so today’s report is on yesterday’s data.
#MDBW17
STEP 3: DEDICATED NICHE PRODUCTS
• Real-Time data replication (CDC), embedded BI capabilities,
dedicated hardware.
#MDBW17
STEP 3: DEDICATED NICHE PRODUCTS
• Real-Time data replication (CDC), embedded BI capabilities,
dedicated hardware.
‒ New skills required in them team.
o Hardware, CDC, Middleware, Java, UI.
‒ The solution reliability was low.
o Too many moving parts.
o Monitoring and debugging was complex.
‒ Cost was very high.
o More expensive than the CRM itself!
#MDBW17
SO… WHAT DO WE NEED?
• Analytical capabilities.
• Simple Architecture.
• Workload isolation.
• Real time data.
• High Availability.
• Cost aligned with provided value.
AGGREGATION
FRAMEWORK
#MDBW17
MONGODB AGGREGATION FRAMEWORK
• A Series of Document Transformations.
‒ Executed in stages.
o Original input is a collection.
o Output of one stage sent as input of next.
o Output as a cursor or a collection.
• Rich Library of Functions.
‒ Filter, manipulate, group, join and summarize data.
• Optimized for performance.
‒ Full index support.
‒ Operations executed in sequential order, performing stage optimization, if possible.
#MDBW17
EXAMPLE
#MDBW17
ARCHITECTURE – REPLICASET
mongod
27017
mongod
27017
mongod
27017
Replica Set
mongod
27017
Primary
mongod
27017
Secondary
mongod
27017
Secondary
#MDBW17
ARCHITECTURE – DATA REPLICATION
mongod
27017
mongod
27017
mongod
27017
Replica Set
mongod
27017
Secondary
Oplog
replication
mongod
27017
Primary
mongod
27017
Secondary
#MDBW17
ARCHITECTURE – FAILOVER
mongod
27017
Replica Set
mongod
27017
Secondary
Oplog
replication
Heartbeat
mongod
27017
Primary
mongod
27017
Secondary
#MDBW17
ARCHITECTURE – ANALYTICAL WORKLOAD
mongod
27017
Replica Set
mongod
27017
Secondary
Oplog
replication
Heartbeat
mongod
27017
Primary
mongod
27017
Secondary
#MDBW17
ARCHITECTURE – SECONDARY READS
mongod
27017
mongod
27017
mongod
27017
Replica Set
mongod
27017
Secondary
Oplog
replication
Heartbeat
mongod
27017
Primary
mongod
27017
Secondary
LET’S CRUNCH
SOME NUMBERS
#MDBW17
LIVE AGGREGATION FRAMEWORK DEMO
• Fingers crossed!!
#MDBW17
PROBLEM DESCRIPTION
• Database containing the biggest ships out there and, in a different
collection, the containers (not docker, shipping containers).
• Information of the cargo is at container level, but we need it at ship
level where information like destination sits.
• We want to know the cargo of each ship to be able to find things
like all ships currently in the North Atlantic, arriving in the US with
more than 100000 TM of Iron.
#MDBW17
BUILDING THE AGGREGATION STEP BY
STEP
• We’ll create one variable for every step of the aggregation
framework, so we can easily build and test our pipe.
var myMatch = {some JSON};
var myGroup = {other JSON};
var mySort = {more JSON};
db.ships.aggregate([myMatch, myGroup, mySort])
#MDBW17
ALL SHIPS WITHIN THE NORTH ATLANTIC
• Our first stage is a match. It allow us to filter the vessels. Let’s
find all ships in the North Atlantic going to US ports.
var match = {$match :
{location: {
$geoWithin: { $geometry : atlantic}},
"route.destination.Country": "United States"}}
#MDBW17
FINDING THE CONTAINERS OF EACH SHIP
• The containers are in a different collection. In order to find the
containers of each ship let’s join both collection together. The
lookup operator will allow us to do this.
var lookup = {$lookup :
{from: "containers",
as: "cargo",
localField: "Name",
foreignField: "shipName"}}
#MDBW17
MANIPULATING THE ARRAY
• That huge array is not going to be usable, let’s transform it into
something easier to handle. The unwind function will help us.
var unwind = {$unwind: "$cargo”}
#MDBW17
GROUPING BY SHIP AND CARGO TYPE
• This stage will group the individual documents by ship and cargo
type, count and add up the TM for each ship and cargo type.
var group = {$group :
{_id: {ship: "$Name",
cargo : "$cargo.cargo",
route: "$route",
location: "$location"},
sum: {$sum: "$cargo.Tons"},
count : {$sum: 1}}}
#MDBW17
MANIPULATING THE FIELD NAMES
• It’s possible to change the shape of our documents at any moment
thanks to project stage. Let’s put the cargo info in a sub document.
var project = {$project: {
_id : {ship: "$_id.ship", route: "$_id.route",
location: "$_id.location"},
cargo : { type : "$_id.cargo",
tons: "$sum",
count: "$count"}}}
#MDBW17
GROUPING BY SHIP
• And now let’s group again only by ship. The different cargos of each
ship will be pushed into a newly created array of documents.
var group2 = {$group : {
_id: "$_id",
cargo: {$push: "$cargo"}}}
#MDBW17
FINAL POLISHING
• Finally, let’s reorder our fields again with another project stage
var project2 = {$project: {_id: 0,
ship: "$_id.ship”,
route: "$_id.route",
location: "$_id.location”,
cargo: 1}}
#MDBW17
SAVING THE RESULTS
• We can store the results to a new collection using the out stage.
var out = {$out: "result"}
#MDBW17
SHOW ME THE VOLUME!!
• Will it perform with a much larger volume? Let’s try with 5000 ships
and 21 million containers.
• Thanks to our step by step approach, we only need to build a new
lookup step.
var lookup2 = {"$lookup" : {
"from" : "containers2",
"as" : "cargo",
"localField" : "Name",
"foreignField" : "shipName”}}
#MDBW17
COMMON PIPELINE OPERATORS
• $match
‒ Filter documents
• $project
‒ Reshape documents
• $group
‒ Summarize documents
• $lookup
‒ Join two collections together
• $unwind
‒ Expand an array
• $out
‒ Create new collections
• $sort
‒ Order documents
• $limit/$skip
‒ Paginate documents
• $facet
‒ Executes multiple expressions
• $sample
‒ samples random data
• $bucket
‒ Creates groups by range
• $redact
‒ Restrict documents
#MDBW17
SO… WHAT DO WE NEED?
• Analytical capabilities.
• Simple Architecture.
• Workload isolation.
• Real time data.
• High Availability.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.
• Workload isolation.
• Real time data.
• High Availability.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.  No extra products, no data transfer.
• Workload isolation.
• Real time data.
• High Availability.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.  No extra products, no data transfer.
• Workload isolation.  Secondary reads.
• Real time data.
• High Availability.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.  No extra products, no data transfer.
• Workload isolation.  Secondary reads.
• Real time data.  Replication lag typically under 1 sec.
• High Availability.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.  No extra products, no data transfer.
• Workload isolation.  Secondary reads.
• Real time data.  Replication lag typically under 1 sec.
• High Availability.  Native MongoDB replication and failover.
• Cost aligned with provided value.
#MDBW17
SO… WHAT DO WE HAVE?
• Analytical capabilities.  Native, rich and performing.
• Simple Architecture.  No extra products, no data transfer.
• Workload isolation.  Secondary reads.
• Real time data.  Replication lag typically under 1 sec.
• High Availability.  Native MongoDB replication and failover.
• Cost aligned with provided value.  No extra servers or licenses.
AGGREGATION
FRAMEWORK
ANALYTICAL
SUPERPOWERS
QUESTIONS?
SAVE
THE
DATE
POWERFUL ANALYSIS
WITH THE
AGGREGATION PIPELINE
SPEAKER: ASYA
KAMSKY
DOING JOINS IN
MONGODB: BEST
PRACTICES FOR USING
$LOOKUP
SPEAKER: AUSTIN
ZELLNER
Using Aggregation for Analytics

More Related Content

What's hot

Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
MongoDB
 
Practical Design Patterns for Building Applications Resilient to Infrastructu...
Practical Design Patterns for Building Applications Resilient to Infrastructu...Practical Design Patterns for Building Applications Resilient to Infrastructu...
Practical Design Patterns for Building Applications Resilient to Infrastructu...
MongoDB
 
Sizing MongoDB Clusters
Sizing MongoDB Clusters Sizing MongoDB Clusters
Sizing MongoDB Clusters
MongoDB
 
Securing Your Enterprise Web Apps with MongoDB Enterprise
Securing Your Enterprise Web Apps with MongoDB Enterprise Securing Your Enterprise Web Apps with MongoDB Enterprise
Securing Your Enterprise Web Apps with MongoDB Enterprise
MongoDB
 
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
MongoDB
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation Performance
MongoDB
 
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
MongoDB
 
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
MongoDB
 
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
Rafał Leszko
 
It's a Dangerous World
It's a Dangerous World It's a Dangerous World
It's a Dangerous World
MongoDB
 
Webinar: Choosing the Right Shard Key for High Performance and Scale
Webinar: Choosing the Right Shard Key for High Performance and ScaleWebinar: Choosing the Right Shard Key for High Performance and Scale
Webinar: Choosing the Right Shard Key for High Performance and Scale
MongoDB
 
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
MongoDB
 
Advanced Schema Design Patterns
Advanced Schema Design Patterns Advanced Schema Design Patterns
Advanced Schema Design Patterns
MongoDB
 
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
 
RedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and ElasticsearchRedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and Elasticsearch
Redis Labs
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
MongoDB
 
Background Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbitBackground Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbit
Redis Labs
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsSteven Francia
 
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
 

What's hot (20)

Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
Practical Design Patterns for Building Applications Resilient to Infrastructu...
Practical Design Patterns for Building Applications Resilient to Infrastructu...Practical Design Patterns for Building Applications Resilient to Infrastructu...
Practical Design Patterns for Building Applications Resilient to Infrastructu...
 
Sizing MongoDB Clusters
Sizing MongoDB Clusters Sizing MongoDB Clusters
Sizing MongoDB Clusters
 
Securing Your Enterprise Web Apps with MongoDB Enterprise
Securing Your Enterprise Web Apps with MongoDB Enterprise Securing Your Enterprise Web Apps with MongoDB Enterprise
Securing Your Enterprise Web Apps with MongoDB Enterprise
 
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
MongoDB World 2019: Finding the Right MongoDB Atlas Cluster Size: Does This I...
 
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
MongoDB .local Paris 2020: Adéo @MongoDB : MongoDB Atlas & Leroy Merlin : et ...
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation Performance
 
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
MongoDB World 2016: From the Polls to the Trolls: Seeing What the World Think...
 
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
MongoDB .local Bengaluru 2019: The Journey of Migration from Oracle to MongoD...
 
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
 
It's a Dangerous World
It's a Dangerous World It's a Dangerous World
It's a Dangerous World
 
Webinar: Choosing the Right Shard Key for High Performance and Scale
Webinar: Choosing the Right Shard Key for High Performance and ScaleWebinar: Choosing the Right Shard Key for High Performance and Scale
Webinar: Choosing the Right Shard Key for High Performance and Scale
 
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
MongoDB World 2019: Raiders of the Anti-patterns: A Journey Towards Fixing Sc...
 
Advanced Schema Design Patterns
Advanced Schema Design Patterns Advanced Schema Design Patterns
Advanced Schema Design Patterns
 
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
 
RedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and ElasticsearchRedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and Elasticsearch
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
 
Background Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbitBackground Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbit
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS Applications
 
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...
 

Similar to Using Aggregation for Analytics

Doing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookupDoing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookup
MongoDB
 
Empowering the AWS DynamoDB™ application developer with Alternator
Empowering the AWS DynamoDB™ application developer with AlternatorEmpowering the AWS DynamoDB™ application developer with Alternator
Empowering the AWS DynamoDB™ application developer with Alternator
ScyllaDB
 
Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)
Chris Richardson
 
Scaling and Transaction Futures
Scaling and Transaction FuturesScaling and Transaction Futures
Scaling and Transaction Futures
MongoDB
 
Worldwide Local Latency With ScyllaDB
Worldwide Local Latency With ScyllaDB Worldwide Local Latency With ScyllaDB
Worldwide Local Latency With ScyllaDB
ScyllaDB
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
Antonio Pintus
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
christkv
 
Sizing Your MongoDB Cluster
Sizing Your MongoDB ClusterSizing Your MongoDB Cluster
Sizing Your MongoDB Cluster
MongoDB
 
Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)
Sid Anand
 
Building a Microservices-based ERP System
Building a Microservices-based ERP SystemBuilding a Microservices-based ERP System
Building a Microservices-based ERP System
MongoDB
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
Kristi Lewandowski
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
SingleStore
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
Kristi Lewandowski
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbMongoDB APAC
 
Data Processing and Aggregation with MongoDB
Data Processing and Aggregation with MongoDB Data Processing and Aggregation with MongoDB
Data Processing and Aggregation with MongoDB MongoDB
 
Learn from HomeAway Hadoop Development and Operations Best Practices
Learn from HomeAway Hadoop Development and Operations Best PracticesLearn from HomeAway Hadoop Development and Operations Best Practices
Learn from HomeAway Hadoop Development and Operations Best Practices
Driven Inc.
 
Big data nyu
Big data nyuBig data nyu
Big data nyu
Edward Capriolo
 
SQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveSQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The Move
IBM Cloud Data Services
 
A Free New World: Atlas Free Tier and How It Was Born
A Free New World: Atlas Free Tier and How It Was Born A Free New World: Atlas Free Tier and How It Was Born
A Free New World: Atlas Free Tier and How It Was Born
MongoDB
 

Similar to Using Aggregation for Analytics (20)

Doing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookupDoing Joins in MongoDB: Best Practices for Using $lookup
Doing Joins in MongoDB: Best Practices for Using $lookup
 
Wmware NoSQL
Wmware NoSQLWmware NoSQL
Wmware NoSQL
 
Empowering the AWS DynamoDB™ application developer with Alternator
Empowering the AWS DynamoDB™ application developer with AlternatorEmpowering the AWS DynamoDB™ application developer with Alternator
Empowering the AWS DynamoDB™ application developer with Alternator
 
Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)
 
Scaling and Transaction Futures
Scaling and Transaction FuturesScaling and Transaction Futures
Scaling and Transaction Futures
 
Worldwide Local Latency With ScyllaDB
Worldwide Local Latency With ScyllaDB Worldwide Local Latency With ScyllaDB
Worldwide Local Latency With ScyllaDB
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
 
Sizing Your MongoDB Cluster
Sizing Your MongoDB ClusterSizing Your MongoDB Cluster
Sizing Your MongoDB Cluster
 
Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)
 
Building a Microservices-based ERP System
Building a Microservices-based ERP SystemBuilding a Microservices-based ERP System
Building a Microservices-based ERP System
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
 
Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017Curriculum Associates Strata NYC 2017
Curriculum Associates Strata NYC 2017
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
 
Data Processing and Aggregation with MongoDB
Data Processing and Aggregation with MongoDB Data Processing and Aggregation with MongoDB
Data Processing and Aggregation with MongoDB
 
Learn from HomeAway Hadoop Development and Operations Best Practices
Learn from HomeAway Hadoop Development and Operations Best PracticesLearn from HomeAway Hadoop Development and Operations Best Practices
Learn from HomeAway Hadoop Development and Operations Best Practices
 
Big data nyu
Big data nyuBig data nyu
Big data nyu
 
SQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveSQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The Move
 
A Free New World: Atlas Free Tier and How It Was Born
A Free New World: Atlas Free Tier and How It Was Born A Free New World: Atlas Free Tier and How It Was Born
A Free New World: Atlas Free Tier and How It Was Born
 

More from MongoDB

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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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...
MongoDB
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB
 
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB
 

More from MongoDB (20)

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: 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...
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
 
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
MongoDB .local Paris 2020: Tout savoir sur le moteur de recherche Full Text S...
 

Recently uploaded

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 

Recently uploaded (20)

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

Using Aggregation for Analytics

  • 1. #MDBW17 Using Aggregation for Analytics JUMPSTART SESSION
  • 2. #MDBW17 Senior Solutions Architect, MongoDB RUBÉN TERCEÑO @rubenTerceno
  • 3. #MDBW17 AGENDA • My Problem (And Maybe Yours). • In the Search for a Solution. • MongoDB Aggregation Framework. • Let’s Crunch Some Numbers!
  • 6. #MDBW17 THAT MANAGER • The CRM system is the mean source of revenue information. • Up to date information is critical for our business owners. • Grouped data is much more valuable while taking decisions. • Graphs are a powerful mean to present grouped information.
  • 7. IN THE SEARCH FOR A SOLUTION
  • 8. #MDBW17 STEP 1: ANALYTICS ON THE OPERATIONAL DB • Running Analytics on your operational database.
  • 9. #MDBW17 STEP 1: ANALYTICS ON THE OPERATIONAL DB
  • 10. #MDBW17 STEP 1: ANALYTICS ON THE OPERATIONAL DB • Running Analytics on your operational database. ‒ Analytical workload affects operational users o Lots of table scans and heavy counts and groups.
  • 11. #MDBW17 STEP 2: ETL AND OLAP • ETLing your data into an analytical dedicated database.
  • 13. #MDBW17 STEP 2: ETL AND OLAP • ETLing your data into an analytical dedicated database. ‒ Longer time to react to business requests. o Every change affects four systems. ‒ Lack of accuracy on real time reports. o Data synchronization was happening overnight, so today’s report is on yesterday’s data.
  • 14. #MDBW17 STEP 3: DEDICATED NICHE PRODUCTS • Real-Time data replication (CDC), embedded BI capabilities, dedicated hardware.
  • 15. #MDBW17 STEP 3: DEDICATED NICHE PRODUCTS • Real-Time data replication (CDC), embedded BI capabilities, dedicated hardware. ‒ New skills required in them team. o Hardware, CDC, Middleware, Java, UI. ‒ The solution reliability was low. o Too many moving parts. o Monitoring and debugging was complex. ‒ Cost was very high. o More expensive than the CRM itself!
  • 16. #MDBW17 SO… WHAT DO WE NEED? • Analytical capabilities. • Simple Architecture. • Workload isolation. • Real time data. • High Availability. • Cost aligned with provided value.
  • 18. #MDBW17 MONGODB AGGREGATION FRAMEWORK • A Series of Document Transformations. ‒ Executed in stages. o Original input is a collection. o Output of one stage sent as input of next. o Output as a cursor or a collection. • Rich Library of Functions. ‒ Filter, manipulate, group, join and summarize data. • Optimized for performance. ‒ Full index support. ‒ Operations executed in sequential order, performing stage optimization, if possible.
  • 20. #MDBW17 ARCHITECTURE – REPLICASET mongod 27017 mongod 27017 mongod 27017 Replica Set mongod 27017 Primary mongod 27017 Secondary mongod 27017 Secondary
  • 21. #MDBW17 ARCHITECTURE – DATA REPLICATION mongod 27017 mongod 27017 mongod 27017 Replica Set mongod 27017 Secondary Oplog replication mongod 27017 Primary mongod 27017 Secondary
  • 22. #MDBW17 ARCHITECTURE – FAILOVER mongod 27017 Replica Set mongod 27017 Secondary Oplog replication Heartbeat mongod 27017 Primary mongod 27017 Secondary
  • 23. #MDBW17 ARCHITECTURE – ANALYTICAL WORKLOAD mongod 27017 Replica Set mongod 27017 Secondary Oplog replication Heartbeat mongod 27017 Primary mongod 27017 Secondary
  • 24. #MDBW17 ARCHITECTURE – SECONDARY READS mongod 27017 mongod 27017 mongod 27017 Replica Set mongod 27017 Secondary Oplog replication Heartbeat mongod 27017 Primary mongod 27017 Secondary
  • 26. #MDBW17 LIVE AGGREGATION FRAMEWORK DEMO • Fingers crossed!!
  • 27. #MDBW17 PROBLEM DESCRIPTION • Database containing the biggest ships out there and, in a different collection, the containers (not docker, shipping containers). • Information of the cargo is at container level, but we need it at ship level where information like destination sits. • We want to know the cargo of each ship to be able to find things like all ships currently in the North Atlantic, arriving in the US with more than 100000 TM of Iron.
  • 28. #MDBW17 BUILDING THE AGGREGATION STEP BY STEP • We’ll create one variable for every step of the aggregation framework, so we can easily build and test our pipe. var myMatch = {some JSON}; var myGroup = {other JSON}; var mySort = {more JSON}; db.ships.aggregate([myMatch, myGroup, mySort])
  • 29. #MDBW17 ALL SHIPS WITHIN THE NORTH ATLANTIC • Our first stage is a match. It allow us to filter the vessels. Let’s find all ships in the North Atlantic going to US ports. var match = {$match : {location: { $geoWithin: { $geometry : atlantic}}, "route.destination.Country": "United States"}}
  • 30. #MDBW17 FINDING THE CONTAINERS OF EACH SHIP • The containers are in a different collection. In order to find the containers of each ship let’s join both collection together. The lookup operator will allow us to do this. var lookup = {$lookup : {from: "containers", as: "cargo", localField: "Name", foreignField: "shipName"}}
  • 31. #MDBW17 MANIPULATING THE ARRAY • That huge array is not going to be usable, let’s transform it into something easier to handle. The unwind function will help us. var unwind = {$unwind: "$cargo”}
  • 32. #MDBW17 GROUPING BY SHIP AND CARGO TYPE • This stage will group the individual documents by ship and cargo type, count and add up the TM for each ship and cargo type. var group = {$group : {_id: {ship: "$Name", cargo : "$cargo.cargo", route: "$route", location: "$location"}, sum: {$sum: "$cargo.Tons"}, count : {$sum: 1}}}
  • 33. #MDBW17 MANIPULATING THE FIELD NAMES • It’s possible to change the shape of our documents at any moment thanks to project stage. Let’s put the cargo info in a sub document. var project = {$project: { _id : {ship: "$_id.ship", route: "$_id.route", location: "$_id.location"}, cargo : { type : "$_id.cargo", tons: "$sum", count: "$count"}}}
  • 34. #MDBW17 GROUPING BY SHIP • And now let’s group again only by ship. The different cargos of each ship will be pushed into a newly created array of documents. var group2 = {$group : { _id: "$_id", cargo: {$push: "$cargo"}}}
  • 35. #MDBW17 FINAL POLISHING • Finally, let’s reorder our fields again with another project stage var project2 = {$project: {_id: 0, ship: "$_id.ship”, route: "$_id.route", location: "$_id.location”, cargo: 1}}
  • 36. #MDBW17 SAVING THE RESULTS • We can store the results to a new collection using the out stage. var out = {$out: "result"}
  • 37. #MDBW17 SHOW ME THE VOLUME!! • Will it perform with a much larger volume? Let’s try with 5000 ships and 21 million containers. • Thanks to our step by step approach, we only need to build a new lookup step. var lookup2 = {"$lookup" : { "from" : "containers2", "as" : "cargo", "localField" : "Name", "foreignField" : "shipName”}}
  • 38. #MDBW17 COMMON PIPELINE OPERATORS • $match ‒ Filter documents • $project ‒ Reshape documents • $group ‒ Summarize documents • $lookup ‒ Join two collections together • $unwind ‒ Expand an array • $out ‒ Create new collections • $sort ‒ Order documents • $limit/$skip ‒ Paginate documents • $facet ‒ Executes multiple expressions • $sample ‒ samples random data • $bucket ‒ Creates groups by range • $redact ‒ Restrict documents
  • 39. #MDBW17 SO… WHAT DO WE NEED? • Analytical capabilities. • Simple Architecture. • Workload isolation. • Real time data. • High Availability. • Cost aligned with provided value.
  • 40. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture. • Workload isolation. • Real time data. • High Availability. • Cost aligned with provided value.
  • 41. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture.  No extra products, no data transfer. • Workload isolation. • Real time data. • High Availability. • Cost aligned with provided value.
  • 42. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture.  No extra products, no data transfer. • Workload isolation.  Secondary reads. • Real time data. • High Availability. • Cost aligned with provided value.
  • 43. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture.  No extra products, no data transfer. • Workload isolation.  Secondary reads. • Real time data.  Replication lag typically under 1 sec. • High Availability. • Cost aligned with provided value.
  • 44. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture.  No extra products, no data transfer. • Workload isolation.  Secondary reads. • Real time data.  Replication lag typically under 1 sec. • High Availability.  Native MongoDB replication and failover. • Cost aligned with provided value.
  • 45. #MDBW17 SO… WHAT DO WE HAVE? • Analytical capabilities.  Native, rich and performing. • Simple Architecture.  No extra products, no data transfer. • Workload isolation.  Secondary reads. • Real time data.  Replication lag typically under 1 sec. • High Availability.  Native MongoDB replication and failover. • Cost aligned with provided value.  No extra servers or licenses.
  • 49. SAVE THE DATE POWERFUL ANALYSIS WITH THE AGGREGATION PIPELINE SPEAKER: ASYA KAMSKY DOING JOINS IN MONGODB: BEST PRACTICES FOR USING $LOOKUP SPEAKER: AUSTIN ZELLNER

Editor's Notes

  1. 2’ max