# MongoDB Performance<br />ch5 Performance on Clusters
###### tags: `MongoDB University M201`
## Performance Considerations in Distributed Systems
* Distributed System in MongoDB
* Replica Cluster
* Shard Cluster
* Working with Distributed Systems
* Consider latency
* Data si spread across different nodes
* Read implications
* Write implications
### Before Sharding
* sharding is an horizontal scaling solution
* Have you reached the limits of our vertical scaling
* Need to understand how data grows and how data is access
* Sharding works by defining key base ranges
* It's important to have a shardkey
## Increasing Write Performance with Sharding
* frequency
* Rate of change - Avoid monotonically increasing or decreasing values
```javascript=
db.collection.bulkWrite([op1, op2], { order: <bool> })
```
order: Execute operations one by one if "true" else execute operations in parallel
## Reading from Secondaries
When reading from secondary is a ***good*** idea
* Offloading work
* Local reads
When reading from secondary is a ***bad*** idea
* In general
* Reading from shard directly
## Aggregation Pipeline on a Sharded Cluster