Why replication is needed in MongoDB - Performance Analysis
When using MongoDB, replication means copying data to multiple servers. This helps keep data safe and available.
We want to understand how the work needed to keep copies in sync grows as data or users increase.
Analyze the time complexity of replicating data to multiple servers.
// Simplified replication process
const primary = db.collection('data');
const secondaries = [db1.collection('data'), db2.collection('data'), db3.collection('data')];
function replicate(document) {
primary.insert(document);
secondaries.forEach(server => server.insert(document));
}
This code inserts a document into the primary server, then copies it to each secondary server.
Look at what repeats when replicating data.
- Primary operation: Inserting the document once on the primary server.
- How many times: Once per document.
- Secondary operation: Looping over each secondary server to insert the document.
- How many times: Once per secondary server for each document.
As the number of documents or secondary servers grows, the work changes like this:
| Input Size (documents) | Secondary Servers | Approx. Operations |
|---|---|---|
| 10 | 3 | 10 inserts on primary + 30 inserts on secondaries = 40 |
| 100 | 3 | 100 + 300 = 400 |
| 1000 | 3 | 1000 + 3000 = 4000 |
Pattern observation: The total work grows linearly with both the number of documents and the number of secondary servers.
Time Complexity: O(n * s)
This means the time to replicate grows in direct proportion to the number of documents (n) and the number of secondary servers (s).
[X] Wrong: "Replication time depends only on the number of documents, not on how many servers there are."
[OK] Correct: Each secondary server must receive and store the data, so more servers mean more work and more time.
Understanding how replication time grows helps you explain system design choices clearly. It shows you know how data safety and availability affect performance.
"What if we added a delay between inserting on the primary and secondaries? How would that affect the time complexity?"