Introducing Dragonfly Cloud! Learn More

Question: What is a cluster in MongoDB?

Answer

In MongoDB, a cluster refers to a group of servers operating together to provide high availability, scalability, and redundancy for your database. There are several types of clusters in MongoDB, each serving different purposes:

Replica Set

A replica set is the simplest form of a cluster in MongoDB. It consists of multiple copies of the same data, with one primary node and multiple secondary nodes. The primary node receives all write operations, while the secondaries replicate the writes received by the primary to ensure high availability and data redundancy. In case the primary node fails, an election is held among the secondaries to choose a new primary.

// Basic concept of initiating a replica set in MongoDB shell rs.initiate({ _id: 'myReplicaSet', members: [ { _id: 0, host: 'mongodb0.example.net:27017' }, { _id: 1, host: 'mongodb1.example.net:27017' }, { _id: 2, host: 'mongodb2.example.net:27017', arbiterOnly: true } ] })

Sharded Cluster

To support horizontal scaling, MongoDB offers sharded clusters. A sharded cluster distributes data across multiple machines, called shards. Each shard can be a replica set for high availability. Sharding allows a MongoDB database to scale out by distributing the data across multiple servers, making it possible to handle large datasets and high throughput operations that wouldn't fit on a single server.

// Example of a sharded collection creation command sh.shardCollection('database.collectionName', { 'shardKeyField': 1 })

Config Servers

In a sharded cluster, config servers store metadata about the cluster's configuration, such as the cluster's topology and the distribution of data across shards. Typically, a sharded cluster has three config servers for redundancy and consistency.

Mongos

The mongos process acts as a query router in a sharded cluster, directing operations from applications to the appropriate shard(s). Applications connect to mongos instances instead of connecting directly to individual shards or config servers.

Each type of cluster plays a crucial role in MongoDB's architecture, allowing users to achieve the desired balance between performance, scalability, and reliability. Understanding how to deploy and manage these clusters is key to effectively utilizing MongoDB.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.