Soumettre la recherche
Mettre en ligne
Building Fault Tolerant Applications.pdf
•
0 j'aime
•
642 vues
MongoDB
Suivre
Building Fault Tolerant Applications - Nathaniel May, Consulting Engineer @ MongoDB
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 191
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Building the Real-Time Performance Panel
Building the Real-Time Performance Panel
MongoDB
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
Once you go cloud you never go down - by Enter - festival ICT 2015
Once you go cloud you never go down - by Enter - festival ICT 2015
festival ICT 2016
Once you go cloud you never go down
Once you go cloud you never go down
DrupalDay
Using Aggregation for analytics
Using Aggregation for analytics
MongoDB
Using Aggregation for Analytics
Using Aggregation for Analytics
MongoDB
Leveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantage
Michelangelo van Dam
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
CODEiD PHP Community
Recommandé
Building the Real-Time Performance Panel
Building the Real-Time Performance Panel
MongoDB
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
Once you go cloud you never go down - by Enter - festival ICT 2015
Once you go cloud you never go down - by Enter - festival ICT 2015
festival ICT 2016
Once you go cloud you never go down
Once you go cloud you never go down
DrupalDay
Using Aggregation for analytics
Using Aggregation for analytics
MongoDB
Using Aggregation for Analytics
Using Aggregation for Analytics
MongoDB
Leveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantage
Michelangelo van Dam
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
CODEiD PHP Community
Be Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & You
James Wickett
Mongodbworkshop I: get started
Mongodbworkshop I: get started
Vivian S. Zhang
MongoDB Workshop
MongoDB Workshop
eagerdeveloper
WordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEED
Jan Löffler
Beyond php it's not (just) about the code
Beyond php it's not (just) about the code
Wim Godden
Managing Cloud Security Design and Implementation in a Ransomware World
Managing Cloud Security Design and Implementation in a Ransomware World
MongoDB
[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote
MongoDB
Common Cluster Configuration Pitfalls
Common Cluster Configuration Pitfalls
MongoDB
Introducing Stitch
Introducing Stitch
MongoDB
Deciphering Explain Output
Deciphering Explain Output
MongoDB
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
Amazon Web Services
"Giving the bad guys no sleep"
"Giving the bad guys no sleep"
Christiaan Beek
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Mike Arnesen
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
Ben Limmer
Introduction to cassandra 2014
Introduction to cassandra 2014
Patrick McFadin
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
Wim Godden
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
HostedbyConfluent
MongoDB on AWS in 5 min
MongoDB on AWS in 5 min
David Turner
2016 Local SEO Ranking Factors
2016 Local SEO Ranking Factors
Daniel Leibson
MongoDB 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
Contenu connexe
Similaire à Building Fault Tolerant Applications.pdf
Be Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & You
James Wickett
Mongodbworkshop I: get started
Mongodbworkshop I: get started
Vivian S. Zhang
MongoDB Workshop
MongoDB Workshop
eagerdeveloper
WordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEED
Jan Löffler
Beyond php it's not (just) about the code
Beyond php it's not (just) about the code
Wim Godden
Managing Cloud Security Design and Implementation in a Ransomware World
Managing Cloud Security Design and Implementation in a Ransomware World
MongoDB
[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote
MongoDB
Common Cluster Configuration Pitfalls
Common Cluster Configuration Pitfalls
MongoDB
Introducing Stitch
Introducing Stitch
MongoDB
Deciphering Explain Output
Deciphering Explain Output
MongoDB
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
Amazon Web Services
"Giving the bad guys no sleep"
"Giving the bad guys no sleep"
Christiaan Beek
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Mike Arnesen
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
Ben Limmer
Introduction to cassandra 2014
Introduction to cassandra 2014
Patrick McFadin
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
Wim Godden
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
HostedbyConfluent
MongoDB on AWS in 5 min
MongoDB on AWS in 5 min
David Turner
2016 Local SEO Ranking Factors
2016 Local SEO Ranking Factors
Daniel Leibson
Similaire à Building Fault Tolerant Applications.pdf
(20)
Be Mean To Your Code: Rugged Development & You
Be Mean To Your Code: Rugged Development & You
Mongodbworkshop I: get started
Mongodbworkshop I: get started
MongoDB Workshop
MongoDB Workshop
WordCamp Cologne - WordPress auf SPEED
WordCamp Cologne - WordPress auf SPEED
Beyond php it's not (just) about the code
Beyond php it's not (just) about the code
Managing Cloud Security Design and Implementation in a Ransomware World
Managing Cloud Security Design and Implementation in a Ransomware World
[MongoDB.local Bengaluru 2018] Keynote
[MongoDB.local Bengaluru 2018] Keynote
Common Cluster Configuration Pitfalls
Common Cluster Configuration Pitfalls
Introducing Stitch
Introducing Stitch
Deciphering Explain Output
Deciphering Explain Output
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
"Giving the bad guys no sleep"
"Giving the bad guys no sleep"
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Structured Data Implementation, MREIDs, and More at SMX Advanced 2018
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
Introduction to cassandra 2014
Introduction to cassandra 2014
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
MongoDB .local London 2019: Managing Diverse User Needs with MongoDB and SQL
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
Change Data Capture Pipelines with Debezium and Kafka Streams (Gunnar Morling...
MongoDB on AWS in 5 min
MongoDB on AWS in 5 min
2016 Local SEO Ranking Factors
2016 Local SEO Ranking Factors
Plus de MongoDB
MongoDB 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
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 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
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 Data
MongoDB
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
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.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
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 Mindset
MongoDB
MongoDB .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
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
MongoDB .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 & 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
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
Plus de MongoDB
(20)
MongoDB 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: 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 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: 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 .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.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: 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 Mindset
MongoDB .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: 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: 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 & 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: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
Building Fault Tolerant Applications.pdf
1.
#MDBW17 Nathaniel May Consulting
Engineer, MongoDB FAULT TOLERANT APPLICATIONS @codenoodle
2.
#MDBW17 EXAMPLES ARE FROM
REAL BUSINESSES
3.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
4.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
5.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
6.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
7.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
8.
#MDBW17 "SERVERS ARE RANDOMLY
CRASHING"
9.
#MDBW17 TOPICS
10.
#MDBW17 TOPICS
11.
#MDBW17 TOPICS
12.
#MDBW17 TOPICS 1
13.
#MDBW17 JACK'S SERVERS
14.
#MDBW17 NORMAL LOAD
15.
#MDBW17 NORMAL LOAD
16.
#MDBW17 NORMAL LOAD
17.
#MDBW17 OVERLOADING SECONDARIES
18.
#MDBW17 OVERLOADING SECONDARIES
19.
#MDBW17 OVERLOADING SECONDARIES
20.
#MDBW17 OVERLOADING SECONDARIES
21.
#MDBW17 OVERLOADING SECONDARIES
22.
#MDBW17 OVERLOADING SECONDARIES
23.
#MDBW17 OVERLOADING SECONDARIES
24.
#MDBW17 OVERLOADING SECONDARIES
25.
#MDBW17 OVERLOADING SECONDARIES
26.
#MDBW17 OVERLOADING SECONDARIES
27.
#MDBW17 OVERLOADING SECONDARIES
28.
#MDBW17 SCALING
29.
#MDBW17 SHARDED CLUSTER
30.
#MDBW17 SHARDED CLUSTER
31.
#MDBW17 SHARDED CLUSTER
32.
#MDBW17 TAKEAWAY
33.
#MDBW17 SLOW QUERIES &
TIMEOUTS
34.
#MDBW17 SOCKET TIMEOUT
35.
#MDBW17 SOCKET TIMEOUT BROKEN SOCKET SOCKET
TIMEOUT result set poorly formed query
36.
#MDBW17 SOCKET TIMEOUT BROKEN SOCKET SOCKET
TIMEOUT result set poorly formed query
37.
#MDBW17 SOCKET TIMEOUT BROKEN SOCKET SOCKET
TIMEOUT result set poorly formed query
38.
#MDBW17 SOCKET TIMEOUT WITH
MAXTIMEMS
39.
#MDBW17 SOCKET TIMEOUT WITHOUT
MAXTIMEMS BROKEN SOCKET SOCKET TIMEOUT result set poorly formed query MAXTIMEMS NO WASTED RESOURCES
40.
#MDBW17 SOCKET TIMEOUT WITHOUT
MAXTIMEMS BROKEN SOCKET SOCKET TIMEOUT result set poorly formed query NO WASTED RESOURCES
41.
#MDBW17 SOCKET TIMEOUT WITHOUT
MAXTIMEMS BROKEN SOCKET SOCKET TIMEOUT result set poorly formed query MAXTIMEMS NO WASTED RESOURCES
42.
#MDBW17 SOCKET TIMEOUT WITHOUT
MAXTIMEMS BROKEN SOCKET SOCKET TIMEOUT result set poorly formed query MAXTIMEMS NO WASTED RESOURCES
43.
#MDBW17 POORLY FORMED QUERIES
44.
#MDBW17 POORLY FORMED QUERIES db.col.find(…).explain("executionStats")
45.
#MDBW17 TAKEAWAY
46.
#MDBW17 SAFELY RETRYABLE OPERATIONS 1
47.
#MDBW17 WHAT KIND OF
FAULTS ARE WE TOLERATING? Primary Failover Network Blip Network Down
48.
#MDBW17 …AND THE DEVELOPER’S
FAULT
49.
#MDBW17 WHAT KIND OF
FAULTS ARE WE TOLERATING? Primary Failover Network Blip Network Down
50.
#MDBW17 WHAT KIND OF
FAULTS ARE WE TOLERATING? Network Error Network Blip Network Down
51.
#MDBW17 WHAT KIND OF
FAULTS ARE WE TOLERATING? Network Error Network Error Network Down
52.
#MDBW17 WHAT KIND OF
FAULTS ARE WE TOLERATING? Network Error Network Error Network Error
53.
#MDBW17 DRIVER BEHAVIOR AFTER
NETWORK ERROR
54.
#MDBW17 DRIVER BEHAVIOR AFTER
NETWORK ERROR NO PRIMARY {operation} {app retry} {auto discovery} {auto discovery} NO PRIMARY NO PRIMARY PRIMARY
55.
#MDBW17 DRIVER BEHAVIOR AFTER
NETWORK ERROR NO PRIMARY {operation} {app retry} {auto discovery} {auto discovery} NO PRIMARY NO PRIMARY PRIMARY
56.
#MDBW17 DRIVER BEHAVIOR AFTER
NETWORK ERROR NO PRIMARY {operation} {app retry} {auto discovery} {auto discovery} NO PRIMARY NO PRIMARY PRIMARY
57.
#MDBW17 DRIVER BEHAVIOR AFTER
NETWORK ERROR NO PRIMARY {operation} {app retry} {auto discovery} {auto discovery} NO PRIMARY NO PRIMARY PRIMARY
58.
#MDBW17 RETRY STRATEGIES
59.
#MDBW17 RETRY STRATEGIES DON'T RETRY
60.
#MDBW17 RETRY STRATEGIES DON'T RETRY RETRY
N TIMES
61.
#MDBW17 RETRY STRATEGIES DON'T RETRY RETRY
N TIMES EXPONENTIAL BACKOFF
62.
#MDBW17 RETRY STRATEGIES DON'T RETRY RETRY
N TIMES EXPONENTIAL BACKOFF RETRY EXACTLY ONCE
63.
#MDBW17 RETRY STRATEGIES DON'T RETRY RETRY
N TIMES EXPONENTIAL BACKOFF RETRY EXACTLY ONCE
64.
#MDBW17 RETRY EXACTLY ONCE Query Insert Remove Update Operations
Primary Failover Network Blip Network Down
65.
#MDBW17 READ PREFERENCE
66.
#MDBW17 READ PREFERENCE PRIMARY PREFERRED
67.
#MDBW17 READ PREFERENCE PRIMARY PREFERRED
68.
#MDBW17 READ PREFERENCE PRIMARY PREFERRED
69.
#MDBW17 READ PREFERENCE PRIMARY PREFERRED
70.
#MDBW17 READ PREFERENCE PRIMARY PREFERRED
71.
#MDBW17 READ PREFERENCE PRIMARY
72.
#MDBW17 READ PREFERENCE PRIMARY
73.
#MDBW17 READ PREFERENCE PRIMARY
74.
#MDBW17 READ PREFERENCE PRIMARY
75.
#MDBW17 READ PREFERENCE PRIMARY
76.
#MDBW17 RETRY EXACTLY ONCE Query Insert Remove Update Operations
Primary Failover Network Blip Network Down
77.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT Insert Remove Update Operations Primary Failover Network Blip Network Down
78.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT Insert Remove Update Operations Primary Failover Network Blip Network Down
79.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert Remove Update Operations Primary Failover Network Blip Network Down
80.
#MDBW17 INSERT {name: "MongoDB"} {name: "MongoDB"}
{_id: ObjectId(), name: "MongoDB"} SOCKET TIMEOUT BLIP SINGLE INSERT
81.
#MDBW17 INSERT {name: "MongoDB"} {name: "MongoDB"}
{_id: ObjectId(), name: "MongoDB"} SOCKET TIMEOUT BLIP SINGLE INSERT
82.
#MDBW17 INSERT {name: "MongoDB"} {name: "MongoDB"}
{_id: ObjectId(), name: "MongoDB"} SOCKET TIMEOUT BLIP SINGLE INSERT
83.
#MDBW17 INSERT {name: "MongoDB"} {name: "MongoDB"}
{_id: ObjectId(), name: "MongoDB"} SOCKET TIMEOUT BLIP SINGLE INSERT
84.
#MDBW17 INSERT
85.
#MDBW17 INSERT BLIP SOCKET TIMEOUT {name: "MongoDB"} {name:
"MongoDB"} {_id: ObjectId(), name: "MongoDB"} {_id: ObjectId(), name: "MongoDB"}
86.
#MDBW17 INSERT BLIP SOCKET TIMEOUT {name: "MongoDB"} {name:
"MongoDB"} {_id: ObjectId(), name: "MongoDB"} {_id: ObjectId(), name: "MongoDB"}
87.
#MDBW17 INSERT BLIP SOCKET TIMEOUT {name: "MongoDB"} {name:
"MongoDB"} {_id: ObjectId(), name: "MongoDB"} {_id: ObjectId(), name: "MongoDB"}
88.
#MDBW17 INSERT BLIP SOCKET TIMEOUT {name: "MongoDB"} {name:
"MongoDB"} {_id: ObjectId(), name: "MongoDB"} {_id: ObjectId(), name: "MongoDB"}
89.
#MDBW17 INSERT BLIP SOCKET TIMEOUT {name: "MongoDB"} {name:
"MongoDB"} {_id: ObjectId(), name: "MongoDB"} {_id: ObjectId(), name: "MongoDB"} DUPLICATEDATA
90.
#MDBW17 INSERT WITH _ID
91.
#MDBW17 INSERT WITH _ID BLIP SOCKET
TIMEOUT {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} DUPLICATEKEY ERROR – SINGLE INSERT
92.
#MDBW17 INSERT WITH _ID BLIP SOCKET
TIMEOUT {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} DUPLICATEKEY ERROR – SINGLE INSERT
93.
#MDBW17 INSERT WITH _ID BLIP SOCKET
TIMEOUT {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} DUPLICATEKEY ERROR – SINGLE INSERT
94.
#MDBW17 INSERT WITH _ID BLIP SOCKET
TIMEOUT {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} DUPLICATEKEY ERROR – SINGLE INSERT
95.
#MDBW17 INSERT WITH _ID BLIP SOCKET
TIMEOUT {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} {_id: 1, name: "MongoDB"} DUPLICATEKEY ERROR – SINGLE INSERT
96.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert Remove Update Operations Primary Failover Network Blip Network Down
97.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT Remove Update Operations Primary Failover Network Blip Network Down
98.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT Remove Update Operations Primary Failover Network Blip Network Down
99.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove Update Operations Primary Failover Network Blip Network Down
100.
#MDBW17 REMOVE
101.
#MDBW17 REMOVE deleteOne ({a:1})
102.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1})
103.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1})
104.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1}) deleteMany({ts: {$lt:
today_midnight}})
105.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1}) deleteMany({ts: {$lt:
today_midnight}}) deleteOne ({_id: 1})
106.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1}) deleteMany({ts: {$lt:
today_midnight}}) deleteOne ({_id: 1}) deleteMany({_id: {$in: [1, 2, 3]}})
107.
#MDBW17 REMOVE deleteOne ({a:1}) deleteMany({a:1}) deleteMany({ts: {$lt:
today_midnight}}) deleteOne ({_id: 1}) deleteMany({_id: {$in: [1, 2, 3]}})
108.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove Update Operations Primary Failover Network Blip Network Down
109.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT Update Operations Primary Failover Network Blip Network Down
110.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT CORRECT Update Operations Primary Failover Network Blip Network Down
111.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT CORRECT CORRECT Update Operations Primary Failover Network Blip Network Down
112.
#MDBW17 UPDATE
113.
#MDBW17 UPDATE {$inc: {count: 1}} {$inc:
{count: 1}} SOCKET TIMEOUT BLIP CORRECT COUNT {_id: 1, count: 1} {_id: 1, count: 1} {_id: 1, count: 2}
114.
#MDBW17 UPDATE {$inc: {count: 1}} {$inc:
{count: 1}} SOCKET TIMEOUT BLIP CORRECT COUNT {_id: 1, count: 1} {_id: 1, count: 1} {_id: 1, count: 2}
115.
#MDBW17 UPDATE {$inc: {count: 1}} {$inc:
{count: 1}} SOCKET TIMEOUT BLIP {_id: 1, count: 1} {_id: 1, count: 1} {_id: 1, count: 2}
116.
#MDBW17 UPDATE {$inc: {count: 1}} {$inc:
{count: 1}} SOCKET TIMEOUT BLIP CORRECT COUNT {_id: 1, count: 1} {_id: 1, count: 1} {_id: 1, count: 2}
117.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
118.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
119.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
120.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
121.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
122.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
123.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT CORRECT CORRECT Update OVER COUNT? Operations Primary Failover Network Blip Network Down
124.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT CORRECT CORRECT Update OVER COUNT? OVER COUNT? Operations Primary Failover Network Blip Network Down
125.
#MDBW17 RETRY EXACTLY ONCE Query
CORRECT CORRECT CORRECT Insert CORRECT CORRECT CORRECT Remove CORRECT CORRECT CORRECT Update OVER COUNT? OVER COUNT? CORRECT Operations Primary Failover Network Blip Network Down
126.
#MDBW17 TRANSACTIONS
127.
#MDBW17 IDEMPOTENT OPERATIONS 1
128.
#MDBW17 NOT IDEMPOTENT
129.
#MDBW17 NOT IDEMPOTENT 6 cards
130.
#MDBW17 NOT IDEMPOTENT Discard 2
cards
131.
#MDBW17 NOT IDEMPOTENT
132.
#MDBW17 NOT IDEMPOTENT Discard 2
cards
133.
#MDBW17 NOT IDEMPOTENT
134.
#MDBW17 NOT IDEMPOTENT Discard 2
cards
135.
#MDBW17 NOT IDEMPOTENT
136.
#MDBW17 NOT IDEMPOTENT The number
of cards changed every time
137.
#MDBW17 IDEMPOTENT
138.
#MDBW17 IDEMPOTENT
139.
#MDBW17 IDEMPOTENT 6 cards
140.
#MDBW17 IDEMPOTENT Discard down to
4 cards
141.
#MDBW17 IDEMPOTENT
142.
#MDBW17 IDEMPOTENT Discard down to
4 cards
143.
#MDBW17 IDEMPOTENT 4 cards
144.
#MDBW17 IDEMPOTENT The number of
cards only changed once
145.
#MDBW17 IDEMPOTENT The number of
cards only changed once 1
146.
#MDBW17 THE IDEMPOTENT UPDATE
147.
#MDBW17 THE IDEMPOTENT UPDATE opid
= new ObjectId(); db.col.updateOne( {_id: ObjectId("…"), update_ops: {$ne: opid} }, {$inc: {count: 1}, $push: {update_ops: opid} } );
148.
#MDBW17 THE IDEMPOTENT UPDATE opid
= new ObjectId(); db.col.updateOne( {_id: ObjectId("…"), update_ops: {$ne: opid} }, {$inc: {count: 1}, $push: {update_ops: opid} } );
149.
#MDBW17 OBJECTID( ) ObjectId("507f1f77bcf86cd799439011")
150.
#MDBW17 OBJECTID( ) ObjectId("XXXXXXXXXXXXXXXXXXXXXXXX")
151.
#MDBW17 OBJECTID( ) ObjectId("507f1f77XXXXXXXXXXXXXXXX") 4 bytes
– seconds since Unix epoch
152.
#MDBW17 OBJECTID( ) ObjectId("507f1f77bcf86cXXXXXXXXXX") 4 bytes
– seconds since Unix epoch 3 bytes – hashed machine identifier
153.
#MDBW17 OBJECTID( ) ObjectId("507f1f77bcf86cd799XXXXXX") 4 bytes
– seconds since Unix epoch 3 bytes – hashed machine identifier 2 bytes – hashed process id
154.
#MDBW17 OBJECTID( ) ObjectId("507f1f77bcf86cd799439011") 4 bytes
– seconds since Unix epoch 3 bytes – hashed machine identifier 2 bytes – hashed process id 3 bytes – counter
155.
#MDBW17 THE IDEMPOTENT UPDATE opid
= new ObjectId(); db.col.updateOne( {_id: "…", update_ops: {$ne: opid} }, {$inc: {count: 1}, $push: {update_ops: opid} } );
156.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}});
157.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}});
158.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 1 }
159.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 1 }
160.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 1 }
161.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 1 }
162.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 1 }
163.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
164.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
165.
#MDBW17 UPDATE BLIP SOCKET TIMEOUT {$inc: {count:
1}} OVER COUNT! {$inc: {count: 1}} {_id: 1, count: 1} {_id: 1, count: 2} {_id: 1, count: 2} {_id: 1, count: 3}
166.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
167.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
168.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
169.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
170.
#MDBW17 THE IDEMPOTENT UPDATE TRY: opid
= new ObjectId(); db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); CATCH: db.col.updateOne( {_id: "ABC", update_ops: {$ne: opid}}, {$inc: {count: 1}, $push: {update_ops: opid}}); { _id: "ABC", count: 2, update_ops: [ ObjectId("x") ] }
171.
#MDBW17 CLEANUP
172.
#MDBW17 CLEANUP { _id: "ABC", count: 3, update_ops:
[ ObjectId("…"), ObjectId("…") ] }
173.
#MDBW17 CLEANUP { _id: "ABC", count: 4, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
174.
#MDBW17 CLEANUP { _id: "ABC", count: 5, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
175.
#MDBW17 CLEANUP { _id: "ABC", count: 6, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
176.
#MDBW17 CLEANUP { _id: "ABC", count: 7, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
177.
#MDBW17 CLEANUP { _id: "ABC", count: 9, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
178.
#MDBW17 CLEANUP { _id: "ABC", count: 13, update_ops:
[ ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…"), ObjectId("…") ] }
179.
#MDBW17 CLEANUP
180.
#MDBW17 CLEANUP IMMEDIATE SECOND UPDATE
181.
#MDBW17 CLEANUP IMMEDIATE SECOND UPDATE ASYNCRONOUS
BATCH PROCESS
182.
#MDBW17 CLEANUP IMMEDIATE SECOND UPDATE ASYNCRONOUS
BATCH PROCESS TAIL THE OPLOG
183.
#MDBW17 CLEANUP IMMEDIATE SECOND UPDATE ASYNCRONOUS
BATCH PROCESS TAIL THE OPLOG $SLICE DURING UPDATE
184.
#MDBW17 CLEANUP IMMEDIATE SECOND UPDATE ASYNCRONOUS
BATCH PROCESS TAIL THE OPLOG $SLICE DURING UPDATE
185.
#MDBW17 CLEANUP WITH $SLICE opid
= new ObjectId(); db.col.updateOne( {_id: ObjectId("…"), update_ops: {$ne: opid} }, {$inc: {count: 1}, $push: {update_ops: {$each: [opid], $slice: -10 }}} );
186.
#MDBW17 CLEANUP WITH $SLICE opid
= new ObjectId(); db.col.updateOne( {_id: ObjectId("…"), update_ops: {$ne: opid} }, {$inc: {count: 1}, $push: {update_ops: {$each: [opid], $slice: -10 }}} );
187.
#MDBW17 TAKEAWAYS
188.
#MDBW17 TAKEAWAYS
189.
#MDBW17 TAKEAWAYS
190.
#MDBW17 TAKEAWAYS 1
191.
Nathaniel May @codenoodle
Télécharger maintenant