SlideShare a Scribd company logo
Active-Active Application
Architectures
Become a MongoDB Multi-Data Center Master
Jay Runkel
Master Solutions Architect, MongoDB
jay.runkel@mongodb.com
@jayrunkel
Today’s Challenge
Organizations Want Active Active
Replica Sets Appear to be a
Mismatch?
Can MongoDB used for Active Active
Applications?
Hmmm….
What are all the requirements?
Active Active Requirements
Performance/Latency – read and write locally. Millisecond performance.
Consistency – reads see results of previous writes, readers in various regions
get same results, no conflict resolution
Availability – operation continues through loss of nodes, networks, data
centers, etc.
Durability – data replicated among nodes. Data is not lost when failures occur
Requirement 1: Latency
Read ReadWrite Write
Active DR solution many not meet latency requirements
10ms
2 ms
45 ms
35 ms 75 ms
105 ms
85 ms
Active Active provides consistent low latency
10ms
2 ms
10 ms
4 ms 2ms
10 ms
4 ms
2ms
Requirement 2: Consistency
Write {x:1} Write {x:2}
{x:0} {x:0} {x:0} {x:0}
Requirement 2: Consistency
Write {x:1} Write {x:2}
{x:0} {x:1} {x:0} {x:2}
Reads return the results of previous writes?
{x:0}
Requirement 2: Consistency
Write {x:1} Write {x:2}
{x:0} {x:1} {x:0} {x:2}
Reads in different regions return the same results?
{x:1} {x:2}
Requirement 2: Consistency
Write {x:1} Write {x:2}
{x:1} {x:1} {x:2} {x:2}
No conflict resolution?
{x:1} {x:2}
Requirement 2: Consistency
Write {x:1} Write {x:2}
{x:1} {x:1} {x:1} {x:1}
No Data Loss?
{x:1} {x:2}
Requirement 3: Availability
Resilience from loss of a node
Requirement 3: Availability
Resilience from loss of a region
Requirement 3: Availability
Resilience from loss of network
Requirement 4: Durability
Write {x:1}
{x:0} {x:1} {x:0} {x:0}
Writes survive loss of nodes, data center, network?
“You can't always get what you want
But if you try sometimes you might find
You get what you need”
- Rolling Stones
Trade Offs
Performance
0 ms 1 sec
Durability
1 node 2 nodes 3 nodes n nodes
Consistency
eventual causal linearizable
Read
Availability primary
(with
secondary
reads)~100%
Write
Availability primary ~100%retryable
strong readConcern: majority
Agenda For Remainder of This Talk?
1. MongoDB Architecture Review
a. MongoDB Replica Sets
b. Trading Off:
• Consistency
• Availability
• Durability
• Performance
2. Three Multi-Data Center Deployment Patterns
MongoDB Architecture
Tuning MongoDB to meet Active Active
Requirements
Active Active Requirements MongoDB Capability
Performance Zone Sharding
Availability Secondary Reads
Retryable Writes
Consistency Read Preference
Read Concern
Durability Write Concern
Replica Sets
Replica Set – 2 to 50 copies
Self-healing shard
Data Center Aware
Addresses availability considerations:
High Availability
Disaster Recovery
Maintenance
Workload Isolation: operational & analytics
Sharding: Scaling MongoDB
Tuning Read and Write Availability
Read Preference
Retryable Writes
Node 1
(Primary)
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Read
Read Preference: Primary
Default
All reads from Primary
Node 1
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Read Preference: Primary
{x: 100}
Node 1
(Primary)
Read
Can’t read, if no primary
Node 1
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Read Preference: PrimaryPreferred
{x: 100}
Node 1
(Primary)
Read
Read from secondary, if no primary
100% read availability
SecondaryPreferred also
Read Read
Node 1
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Write Availability → Retryable Writes
{x: 100}
Node 1
(Primary)
Write
Can’t write, if no primary
Retryable writes - retries failed
writes
Tuning Consistency
Primary vs. Secondary Reads
Read Concern
Node 1
(Primary)
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Read
Primary Reads → Strong Consistency
Reads return all previous writes
Node 1
(Primary)
Node 2
(Secondary)
Node 3
(Secondary)
Application
Driver
Secondary Reads → Eventually Consistent
Read Read
Reads may reflect a past state of
the data
Challenge #1 - Reading Rolled Back Data
Node 1
Node 2 Node 3
Application
Driver
{x: 101}
{x: 100}
{x : 100}{x: 100}
write
{x: 101}
Application
Driver
{x: 101}
Node 1
(Primary)
Challenge #1 - Reading Rolled Back Data
Node 2 Node 3
Application
Driver
{x: 101}
{x : 100}{x: 100}
Application
Driver
{x: 101}
{x: 100}
{x: 100}
Node 1
Node 2 Node 3
Application
Driver
{x: 101}
{x: 101}
{x : 100}{x: 100}
write
Application
Driver
{x: 100}
ReadConcern: Majority
Challenge #2 - Secondary Reads Don’t
Reflect My Writes
Node 1
Node 2 Node 3
Application
Driver
{x: 101}
{x: 100}
{x : 100}{x: 100}
write
{x: 101}
{x : 100}
read
Causal Consistency
Node 1
Node 2 Node 3
Application
Driver
{x: 101}
{x: 100}
{x : 100}{x: 100}
write
{x: 101}
read
{x: 101}
Tuning Durability
Write Concern
Node 1
Node 2 Node 3
Application
Driver
Replica Set Write Durability
{x: 100}
{x: 100}
{x : 100}{x: 100}
writeack
Node 1
Node 2 Node 3
Application
Driver
Replica Set Write Durability
{x: 100}
{x: 100}
write
Node 1
(Primary)
Node 1
Node 2 Node 3
Application
Driver
Replica Set Write Durability
{x: 100}
{x: 100}
write
Node 1
(Primary)
Node 1
(Primary)
Node 2
(Primary)
Node 3
(Secondary)
Application
Driver
Write Durability
{x : 100}
Node 1
(Primary)
{x : 100}
Write Durability is Configured via Write Concern
• Intelligent write receipt/confirmation
– Specifieds the the number of nodes that must have written the write to
disk
– Default number is 1
• NOT a distributed transaction
db.test.insert({x:100},{writeConcern:{w:2}})
Node 1
Node 2 Node 3
Application
Driver
Write Concern Majority
{x: 100}
{x: 100}
{x : 100}{x: 100}
writeack
db.test.insert({x:100},
{writeConcern:{w:”majority”}})
MongoDB Retryable Writes
Write failure handling moved from the app to the database for transient network errors or
primary elections
– Driver automatically retries failed write
– With a unique transaction identifier, server enforces exactly-once
processing semantics
• Properties
– Supports idempotent & non-idempotent operations, and errors caused
by time-outs
• Delivers always-on, global availability of write operations
– Overcomes the complexity imposed by multi-master, eventually
consistent systems
Zone Sharding
Configuring MongoDB
Performance
0 ms 1 sec
Durability
1 node 2 nodes 3 nodes n nodes
Consistency
eventual causal linearizable
Read
Availability primary
(with
secondary
reads)~100%
Write
Availability primary ~100%retryable
strong readConcern: majority
Performance Optimized
Performance
0 ms 1 sec
Durability
1 node 2 nodes 3 nodes n nodes
Consistency
eventual causal linearizable
Read
Availability primary
(with
secondary
reads)~100%
Write
Availability primary ~100%retryable
strong readConcern: majority
Durability and Consistency Optimized
Performance
0 ms 1 sec
Durability
1 node 2 nodes 3 nodes n nodes
Consistency
eventual causal linearizable
Read
Availability primary
(with
secondary
reads)~100%
Write
Availability primary ~100%retryable
strong readConcern: majority
MongoDB Multi-Data
Center Deployments
Writes: Multi-Data Center
3 Alternatives:
Two-phase commit across data centers
• Consistent
• Slow
Multi master
• Each data item can be written to any data center
• Inconsistent - Conflict resolution and data loss
• Fast
Sharded Database
• Multiple masters; each document/partition has a single
master
• Multiple masters can be deployed in various data centers
• Consistent
• Fast
Writes: Multi-Data Center
3 Alternatives:
Two-phase commit across data centers
• Consistent
• Slow
Multi master
• Each data item can be written to any data center
• Inconsistent - Conflict resolution and data loss
• Fast
Sharded Database
• Multiple masters; each document/partition has a single
master
• Multiple masters can be deployed in various data centers
• Consistent
• Fast
MongoDB Multi Data Center Architecture
Options
Active DR
Partitioned (Sharded) Database
“Multi-master”
Option 1: Active DR
Active DR
Multi Region
Multi Region
Tune ReadPreference, ReadConcern, WriteConcern, Causal Consistency
Option 2: Sharded Database
Routing Requests To Nearest Region
Request Router
Sharded Database (zone sharding)
Writes
•Each data center owns a partition of
the data
•External routing process routes
requests to the data center owning
the request’s data
•Application writes to local primary
•Occasional cross data writes may
occur if routing process isn’t perfect
Reads
•Read from local primary for
consistency
•Global data access using “nearest"
read preference. Eventually
consistent.
Zone Sharding
Request Router
Zone Sharding
Request Router
Zone Sharding
Request Router
Zone Sharding
Request Router
Location-Aware Data Distribution
Shard Key: {regionCode} {userId}
Zone Start End
West West, MinKey West, MaxKey
East East, MinKey East, MaxKey
∞…
East Zone
… … ∞ ∞… … ∞
West Zone
{
_id : ObjectID(“abc…”),
regionCode: “West”,
userId: 12345,
…
}
Read Global/Write Local
Option 3: Multi-Master Database
How to implement Multi-Master
1. Insert only
• Updates → Inserts
• Aggregate on read
2. Always write to local primary
3. All reads are scatter gather
Updates
db.carts.find({shopCartId: 1234})
db.carts.update(
{shopCartId: 1234},
{$push: {items: “socks12”}})
{
shopCartId: 1234,
items: [“shoe32”,
“coat43”]
}
ShoppingCart Collection
Insert only
db.carts.aggregate(
[{$match: {shopCartId: 1234,
op: “add”}},
{$group: {_id: “$shopCardId”,
items: {$push:
“$items”}}}]
db.carts.insert(
{shopCartId: 1234,
op: “add”,
items: “socks12”}
)
{
shopCartId: 1234,
op: “add”,
items: “shoe32”
}
{
shopCartId: 1234,
op: “add”,
items: “coat32”
}
CartOperations Collection
Multi-Master Writes (inserts)
Request Router
App Server assigned data center field
Mult-master zone sharding configuration
Shard Key: {dc} {shopCartId}
Zone Start End
Virginia Virginia, MinKey Virginia, MaxKey
Oregon Oregon, MinKey Oregon, MaxKey
∞…
Virginia Zone
… … ∞ ∞… … ∞
Oregon Zone
{
shopCartId: 1234,
dc: “Virginia”,
op: “add”,
items: “shoe32”
}
Insert only
db.carts.aggregate(
[{$match: {shopCartId: 1234,
op: “add”}},
{$group: {_id: “$shopCartId”,
items: {$push : “$items”}}}]
db.carts.insert(
{shopCartId: 1234,
dc: “Oregon”,
op: “add”,
items : “socks12”}
)
{
shopCartId: 1234,
dc: “Oregon”,
op: “add”,
items: “shoe32”
}
{
shopCartId: 1234,
dc: “Virginia”
op: “add”,
items: “coat32”
}
CartOperations Collection
Multi-Master Reads (scatter gather)
Multi-Data Center Approach Summary
•
•
•
Tune to application requirements
Performance
0 ms 1 sec
Durability
1 node 2 nodes 3 nodes n nodes
Consistency
eventual causal linearizable
Read
Availability primary
(with
secondary
reads)~100%
Write
Availability primary ~100%retryable
strong readConcern: majority
MongoDB World 2018: Active-Active Application Architectures: Become a MongoDB Multi-Data Center Master

More Related Content

What's hot

AWR Sample Report
AWR Sample ReportAWR Sample Report
AWR Sample Report
Devendra Singh
 
Apache Hudi: The Path Forward
Apache Hudi: The Path ForwardApache Hudi: The Path Forward
Apache Hudi: The Path Forward
Alluxio, Inc.
 
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
Chester Chen
 
Druid deep dive
Druid deep diveDruid deep dive
Druid deep dive
Kashif Khan
 
Google Cloud and Data Pipeline Patterns
Google Cloud and Data Pipeline PatternsGoogle Cloud and Data Pipeline Patterns
Google Cloud and Data Pipeline Patterns
Lynn Langit
 
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Gwen (Chen) Shapira
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 
Ozone- Object store for Apache Hadoop
Ozone- Object store for Apache HadoopOzone- Object store for Apache Hadoop
Ozone- Object store for Apache Hadoop
Hortonworks
 
Ibm integrated analytics system
Ibm integrated analytics systemIbm integrated analytics system
Ibm integrated analytics system
ModusOptimum
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
Flink Forward
 
Google Cloud Dataflow
Google Cloud DataflowGoogle Cloud Dataflow
Google Cloud Dataflow
Alex Van Boxel
 
Introduction to Apache Beam
Introduction to Apache BeamIntroduction to Apache Beam
Introduction to Apache Beam
Knoldus Inc.
 
Deep Dive on Amazon Aurora
Deep Dive on Amazon AuroraDeep Dive on Amazon Aurora
Deep Dive on Amazon Aurora
Amazon Web Services
 
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
HostedbyConfluent
 
Deadlock in Distributed Systems
Deadlock in Distributed SystemsDeadlock in Distributed Systems
Deadlock in Distributed Systems
Pritom Saha Akash
 
Monitoring Microservices
Monitoring MicroservicesMonitoring Microservices
Monitoring Microservices
Weaveworks
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
DataStax Academy
 
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in ContainerlandFlink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward
 
SQL Monitoring in Oracle Database 12c
SQL Monitoring in Oracle Database 12cSQL Monitoring in Oracle Database 12c
SQL Monitoring in Oracle Database 12c
Tanel Poder
 

What's hot (20)

AWR Sample Report
AWR Sample ReportAWR Sample Report
AWR Sample Report
 
Apache Hudi: The Path Forward
Apache Hudi: The Path ForwardApache Hudi: The Path Forward
Apache Hudi: The Path Forward
 
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
SF Big Analytics 20190612: Building highly efficient data lakes using Apache ...
 
Druid deep dive
Druid deep diveDruid deep dive
Druid deep dive
 
Google Cloud and Data Pipeline Patterns
Google Cloud and Data Pipeline PatternsGoogle Cloud and Data Pipeline Patterns
Google Cloud and Data Pipeline Patterns
 
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 
Ozone- Object store for Apache Hadoop
Ozone- Object store for Apache HadoopOzone- Object store for Apache Hadoop
Ozone- Object store for Apache Hadoop
 
Ibm integrated analytics system
Ibm integrated analytics systemIbm integrated analytics system
Ibm integrated analytics system
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
Google Cloud Dataflow
Google Cloud DataflowGoogle Cloud Dataflow
Google Cloud Dataflow
 
Introduction to Apache Beam
Introduction to Apache BeamIntroduction to Apache Beam
Introduction to Apache Beam
 
Deep Dive on Amazon Aurora
Deep Dive on Amazon AuroraDeep Dive on Amazon Aurora
Deep Dive on Amazon Aurora
 
Analyzing awr report
Analyzing awr reportAnalyzing awr report
Analyzing awr report
 
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
Druid + Kafka: transform your data-in-motion to analytics-in-motion | Gian Me...
 
Deadlock in Distributed Systems
Deadlock in Distributed SystemsDeadlock in Distributed Systems
Deadlock in Distributed Systems
 
Monitoring Microservices
Monitoring MicroservicesMonitoring Microservices
Monitoring Microservices
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in ContainerlandFlink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
 
SQL Monitoring in Oracle Database 12c
SQL Monitoring in Oracle Database 12cSQL Monitoring in Oracle Database 12c
SQL Monitoring in Oracle Database 12c
 

Similar to MongoDB World 2018: Active-Active Application Architectures: Become a MongoDB Multi-Data Center Master

Scaling with MongoDB
Scaling with MongoDBScaling with MongoDB
Scaling with MongoDB
MongoDB
 
MongoDB Knowledge Shareing
MongoDB Knowledge ShareingMongoDB Knowledge Shareing
MongoDB Knowledge ShareingPhilip Zhong
 
Webinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica SetWebinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica Set
MongoDB
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking VN
 
Handling Data in Mega Scale Web Systems
Handling Data in Mega Scale Web SystemsHandling Data in Mega Scale Web Systems
Handling Data in Mega Scale Web SystemsVineet Gupta
 
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
Amazon Web Services
 
MYSQL
MYSQLMYSQL
MYSQL
gilashikwa
 
Talon systems - Distributed multi master replication strategy
Talon systems - Distributed multi master replication strategyTalon systems - Distributed multi master replication strategy
Talon systems - Distributed multi master replication strategy
Saptarshi Chatterjee
 
Back to Basics: Build Something Big With MongoDB
Back to Basics: Build Something Big With MongoDB Back to Basics: Build Something Big With MongoDB
Back to Basics: Build Something Big With MongoDB MongoDB
 
Software architecture for data applications
Software architecture for data applicationsSoftware architecture for data applications
Software architecture for data applications
Ding Li
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysql
Marco Tusa
 
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
MongoDB
 
ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?
Jagadish Venkatraman
 
Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.MongoDB
 
Availability and scalability in mongo
Availability and scalability in mongoAvailability and scalability in mongo
Availability and scalability in mongoMd. Khairul Anam
 
Zookeeper big sonata
Zookeeper  big sonataZookeeper  big sonata
Zookeeper big sonataAnh Le
 
MongoDB for Time Series Data: Sharding
MongoDB for Time Series Data: ShardingMongoDB for Time Series Data: Sharding
MongoDB for Time Series Data: Sharding
MongoDB
 
Cassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
Cassandra Community Webinar: From Mongo to Cassandra, Architectural LessonsCassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
Cassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
DataStax
 
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBayStoring eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
MongoDB
 
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB present...
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB  present...MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB  present...
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB present...
MongoDB
 

Similar to MongoDB World 2018: Active-Active Application Architectures: Become a MongoDB Multi-Data Center Master (20)

Scaling with MongoDB
Scaling with MongoDBScaling with MongoDB
Scaling with MongoDB
 
MongoDB Knowledge Shareing
MongoDB Knowledge ShareingMongoDB Knowledge Shareing
MongoDB Knowledge Shareing
 
Webinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica SetWebinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica Set
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Handling Data in Mega Scale Web Systems
Handling Data in Mega Scale Web SystemsHandling Data in Mega Scale Web Systems
Handling Data in Mega Scale Web Systems
 
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
AWS re:Invent 2016: Cross-Region Replication with Amazon DynamoDB Streams (DA...
 
MYSQL
MYSQLMYSQL
MYSQL
 
Talon systems - Distributed multi master replication strategy
Talon systems - Distributed multi master replication strategyTalon systems - Distributed multi master replication strategy
Talon systems - Distributed multi master replication strategy
 
Back to Basics: Build Something Big With MongoDB
Back to Basics: Build Something Big With MongoDB Back to Basics: Build Something Big With MongoDB
Back to Basics: Build Something Big With MongoDB
 
Software architecture for data applications
Software architecture for data applicationsSoftware architecture for data applications
Software architecture for data applications
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysql
 
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
Webinar: Serie Operazioni per la vostra applicazione - Sessione 6 - Installar...
 
ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?
 
Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.Back tobasicswebinar part6-rev.
Back tobasicswebinar part6-rev.
 
Availability and scalability in mongo
Availability and scalability in mongoAvailability and scalability in mongo
Availability and scalability in mongo
 
Zookeeper big sonata
Zookeeper  big sonataZookeeper  big sonata
Zookeeper big sonata
 
MongoDB for Time Series Data: Sharding
MongoDB for Time Series Data: ShardingMongoDB for Time Series Data: Sharding
MongoDB for Time Series Data: Sharding
 
Cassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
Cassandra Community Webinar: From Mongo to Cassandra, Architectural LessonsCassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
Cassandra Community Webinar: From Mongo to Cassandra, Architectural Lessons
 
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBayStoring eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
Storing eBay's Media Metadata on MongoDB, by Yuri Finkelstein, Architect, eBay
 
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB present...
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB  present...MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB  present...
MongoDB San Francisco 2013: Storing eBay's Media Metadata on MongoDB present...
 

More from 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
 
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: 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
 
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
 

More from 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...
 

Recently uploaded

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
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
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
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
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
 
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
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
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
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 

Recently uploaded (20)

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
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
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
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
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 -...
 
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
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
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
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 

MongoDB World 2018: Active-Active Application Architectures: Become a MongoDB Multi-Data Center Master

  • 1. Active-Active Application Architectures Become a MongoDB Multi-Data Center Master
  • 2. Jay Runkel Master Solutions Architect, MongoDB jay.runkel@mongodb.com @jayrunkel
  • 5. Replica Sets Appear to be a Mismatch?
  • 6. Can MongoDB used for Active Active Applications? Hmmm…. What are all the requirements?
  • 7. Active Active Requirements Performance/Latency – read and write locally. Millisecond performance. Consistency – reads see results of previous writes, readers in various regions get same results, no conflict resolution Availability – operation continues through loss of nodes, networks, data centers, etc. Durability – data replicated among nodes. Data is not lost when failures occur
  • 8. Requirement 1: Latency Read ReadWrite Write
  • 9. Active DR solution many not meet latency requirements 10ms 2 ms 45 ms 35 ms 75 ms 105 ms 85 ms
  • 10. Active Active provides consistent low latency 10ms 2 ms 10 ms 4 ms 2ms 10 ms 4 ms 2ms
  • 11. Requirement 2: Consistency Write {x:1} Write {x:2} {x:0} {x:0} {x:0} {x:0}
  • 12. Requirement 2: Consistency Write {x:1} Write {x:2} {x:0} {x:1} {x:0} {x:2} Reads return the results of previous writes? {x:0}
  • 13. Requirement 2: Consistency Write {x:1} Write {x:2} {x:0} {x:1} {x:0} {x:2} Reads in different regions return the same results? {x:1} {x:2}
  • 14. Requirement 2: Consistency Write {x:1} Write {x:2} {x:1} {x:1} {x:2} {x:2} No conflict resolution? {x:1} {x:2}
  • 15. Requirement 2: Consistency Write {x:1} Write {x:2} {x:1} {x:1} {x:1} {x:1} No Data Loss? {x:1} {x:2}
  • 17. Requirement 3: Availability Resilience from loss of a region
  • 19. Requirement 4: Durability Write {x:1} {x:0} {x:1} {x:0} {x:0} Writes survive loss of nodes, data center, network?
  • 20. “You can't always get what you want But if you try sometimes you might find You get what you need” - Rolling Stones
  • 21. Trade Offs Performance 0 ms 1 sec Durability 1 node 2 nodes 3 nodes n nodes Consistency eventual causal linearizable Read Availability primary (with secondary reads)~100% Write Availability primary ~100%retryable strong readConcern: majority
  • 22. Agenda For Remainder of This Talk? 1. MongoDB Architecture Review a. MongoDB Replica Sets b. Trading Off: • Consistency • Availability • Durability • Performance 2. Three Multi-Data Center Deployment Patterns
  • 24. Tuning MongoDB to meet Active Active Requirements Active Active Requirements MongoDB Capability Performance Zone Sharding Availability Secondary Reads Retryable Writes Consistency Read Preference Read Concern Durability Write Concern
  • 25. Replica Sets Replica Set – 2 to 50 copies Self-healing shard Data Center Aware Addresses availability considerations: High Availability Disaster Recovery Maintenance Workload Isolation: operational & analytics
  • 27. Tuning Read and Write Availability Read Preference Retryable Writes
  • 28. Node 1 (Primary) Node 2 (Secondary) Node 3 (Secondary) Application Driver Read Read Preference: Primary Default All reads from Primary
  • 29. Node 1 Node 2 (Secondary) Node 3 (Secondary) Application Driver Read Preference: Primary {x: 100} Node 1 (Primary) Read Can’t read, if no primary
  • 30. Node 1 Node 2 (Secondary) Node 3 (Secondary) Application Driver Read Preference: PrimaryPreferred {x: 100} Node 1 (Primary) Read Read from secondary, if no primary 100% read availability SecondaryPreferred also Read Read
  • 31. Node 1 Node 2 (Secondary) Node 3 (Secondary) Application Driver Write Availability → Retryable Writes {x: 100} Node 1 (Primary) Write Can’t write, if no primary Retryable writes - retries failed writes
  • 32. Tuning Consistency Primary vs. Secondary Reads Read Concern
  • 33. Node 1 (Primary) Node 2 (Secondary) Node 3 (Secondary) Application Driver Read Primary Reads → Strong Consistency Reads return all previous writes
  • 34. Node 1 (Primary) Node 2 (Secondary) Node 3 (Secondary) Application Driver Secondary Reads → Eventually Consistent Read Read Reads may reflect a past state of the data
  • 35. Challenge #1 - Reading Rolled Back Data Node 1 Node 2 Node 3 Application Driver {x: 101} {x: 100} {x : 100}{x: 100} write {x: 101} Application Driver {x: 101} Node 1 (Primary)
  • 36. Challenge #1 - Reading Rolled Back Data Node 2 Node 3 Application Driver {x: 101} {x : 100}{x: 100} Application Driver {x: 101} {x: 100} {x: 100}
  • 37. Node 1 Node 2 Node 3 Application Driver {x: 101} {x: 101} {x : 100}{x: 100} write Application Driver {x: 100} ReadConcern: Majority
  • 38. Challenge #2 - Secondary Reads Don’t Reflect My Writes Node 1 Node 2 Node 3 Application Driver {x: 101} {x: 100} {x : 100}{x: 100} write {x: 101} {x : 100} read
  • 39. Causal Consistency Node 1 Node 2 Node 3 Application Driver {x: 101} {x: 100} {x : 100}{x: 100} write {x: 101} read {x: 101}
  • 41. Node 1 Node 2 Node 3 Application Driver Replica Set Write Durability {x: 100} {x: 100} {x : 100}{x: 100} writeack
  • 42. Node 1 Node 2 Node 3 Application Driver Replica Set Write Durability {x: 100} {x: 100} write Node 1 (Primary)
  • 43. Node 1 Node 2 Node 3 Application Driver Replica Set Write Durability {x: 100} {x: 100} write Node 1 (Primary)
  • 44. Node 1 (Primary) Node 2 (Primary) Node 3 (Secondary) Application Driver Write Durability {x : 100} Node 1 (Primary) {x : 100}
  • 45. Write Durability is Configured via Write Concern • Intelligent write receipt/confirmation – Specifieds the the number of nodes that must have written the write to disk – Default number is 1 • NOT a distributed transaction db.test.insert({x:100},{writeConcern:{w:2}})
  • 46. Node 1 Node 2 Node 3 Application Driver Write Concern Majority {x: 100} {x: 100} {x : 100}{x: 100} writeack db.test.insert({x:100}, {writeConcern:{w:”majority”}})
  • 47. MongoDB Retryable Writes Write failure handling moved from the app to the database for transient network errors or primary elections – Driver automatically retries failed write – With a unique transaction identifier, server enforces exactly-once processing semantics • Properties – Supports idempotent & non-idempotent operations, and errors caused by time-outs • Delivers always-on, global availability of write operations – Overcomes the complexity imposed by multi-master, eventually consistent systems
  • 49. Configuring MongoDB Performance 0 ms 1 sec Durability 1 node 2 nodes 3 nodes n nodes Consistency eventual causal linearizable Read Availability primary (with secondary reads)~100% Write Availability primary ~100%retryable strong readConcern: majority
  • 50. Performance Optimized Performance 0 ms 1 sec Durability 1 node 2 nodes 3 nodes n nodes Consistency eventual causal linearizable Read Availability primary (with secondary reads)~100% Write Availability primary ~100%retryable strong readConcern: majority
  • 51. Durability and Consistency Optimized Performance 0 ms 1 sec Durability 1 node 2 nodes 3 nodes n nodes Consistency eventual causal linearizable Read Availability primary (with secondary reads)~100% Write Availability primary ~100%retryable strong readConcern: majority
  • 53. Writes: Multi-Data Center 3 Alternatives: Two-phase commit across data centers • Consistent • Slow Multi master • Each data item can be written to any data center • Inconsistent - Conflict resolution and data loss • Fast Sharded Database • Multiple masters; each document/partition has a single master • Multiple masters can be deployed in various data centers • Consistent • Fast
  • 54. Writes: Multi-Data Center 3 Alternatives: Two-phase commit across data centers • Consistent • Slow Multi master • Each data item can be written to any data center • Inconsistent - Conflict resolution and data loss • Fast Sharded Database • Multiple masters; each document/partition has a single master • Multiple masters can be deployed in various data centers • Consistent • Fast
  • 55. MongoDB Multi Data Center Architecture Options Active DR Partitioned (Sharded) Database “Multi-master”
  • 59. Multi Region Tune ReadPreference, ReadConcern, WriteConcern, Causal Consistency
  • 60. Option 2: Sharded Database
  • 61. Routing Requests To Nearest Region Request Router
  • 62. Sharded Database (zone sharding) Writes •Each data center owns a partition of the data •External routing process routes requests to the data center owning the request’s data •Application writes to local primary •Occasional cross data writes may occur if routing process isn’t perfect Reads •Read from local primary for consistency •Global data access using “nearest" read preference. Eventually consistent.
  • 67. Location-Aware Data Distribution Shard Key: {regionCode} {userId} Zone Start End West West, MinKey West, MaxKey East East, MinKey East, MaxKey ∞… East Zone … … ∞ ∞… … ∞ West Zone { _id : ObjectID(“abc…”), regionCode: “West”, userId: 12345, … }
  • 70. How to implement Multi-Master 1. Insert only • Updates → Inserts • Aggregate on read 2. Always write to local primary 3. All reads are scatter gather
  • 71. Updates db.carts.find({shopCartId: 1234}) db.carts.update( {shopCartId: 1234}, {$push: {items: “socks12”}}) { shopCartId: 1234, items: [“shoe32”, “coat43”] } ShoppingCart Collection
  • 72. Insert only db.carts.aggregate( [{$match: {shopCartId: 1234, op: “add”}}, {$group: {_id: “$shopCardId”, items: {$push: “$items”}}}] db.carts.insert( {shopCartId: 1234, op: “add”, items: “socks12”} ) { shopCartId: 1234, op: “add”, items: “shoe32” } { shopCartId: 1234, op: “add”, items: “coat32” } CartOperations Collection
  • 73. Multi-Master Writes (inserts) Request Router App Server assigned data center field
  • 74. Mult-master zone sharding configuration Shard Key: {dc} {shopCartId} Zone Start End Virginia Virginia, MinKey Virginia, MaxKey Oregon Oregon, MinKey Oregon, MaxKey ∞… Virginia Zone … … ∞ ∞… … ∞ Oregon Zone { shopCartId: 1234, dc: “Virginia”, op: “add”, items: “shoe32” }
  • 75. Insert only db.carts.aggregate( [{$match: {shopCartId: 1234, op: “add”}}, {$group: {_id: “$shopCartId”, items: {$push : “$items”}}}] db.carts.insert( {shopCartId: 1234, dc: “Oregon”, op: “add”, items : “socks12”} ) { shopCartId: 1234, dc: “Oregon”, op: “add”, items: “shoe32” } { shopCartId: 1234, dc: “Virginia” op: “add”, items: “coat32” } CartOperations Collection
  • 77. Multi-Data Center Approach Summary • • •
  • 78. Tune to application requirements Performance 0 ms 1 sec Durability 1 node 2 nodes 3 nodes n nodes Consistency eventual causal linearizable Read Availability primary (with secondary reads)~100% Write Availability primary ~100%retryable strong readConcern: majority