{"id":26915917,"url":"https://github.com/dgamer007/mongodb-sharded-cluster","last_synced_at":"2025-04-01T18:40:13.643Z","repository":{"id":195128583,"uuid":"596208453","full_name":"DGamer007/MongoDB-Sharded-Cluster","owner":"DGamer007","description":"The Project Provides utilities to perform Sharding on MongoDB Database on Single Machine.","archived":false,"fork":false,"pushed_at":"2023-02-02T13:07:36.000Z","size":29320,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-09-16T16:57:47.975Z","etag":null,"topics":["database-sharding","mongodb","mongodb-sharding"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DGamer007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-02-01T17:40:12.000Z","updated_at":"2023-09-16T16:57:49.676Z","dependencies_parsed_at":"2023-09-16T17:09:22.356Z","dependency_job_id":null,"html_url":"https://github.com/DGamer007/MongoDB-Sharded-Cluster","commit_stats":null,"previous_names":["dgamer007/mongodb-sharded-cluster"],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGamer007%2FMongoDB-Sharded-Cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGamer007%2FMongoDB-Sharded-Cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGamer007%2FMongoDB-Sharded-Cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DGamer007%2FMongoDB-Sharded-Cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DGamer007","download_url":"https://codeload.github.com/DGamer007/MongoDB-Sharded-Cluster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246692677,"owners_count":20818724,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database-sharding","mongodb","mongodb-sharding"],"created_at":"2025-04-01T18:40:13.070Z","updated_at":"2025-04-01T18:40:13.635Z","avatar_url":"https://github.com/DGamer007.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MongoDB Sharding (Cluster with 3 Shards, Single Machine)\n\nYou can read about MongoDB Replication and Sharding in this [Gist](https://gist.github.com/DGamer007/0864c6aeebf27e3821602d9dd5ca7375).\n\n## Project Overview\n\nThe Project Provides utilities to perform **Sharding** on **MongoDB Database** on **Single Machine**. The Project consists of...\n\n- **init.ps1** - Creates Directory Structure for ReplicaSet Nodes, Starts necessary Shells and Initializes Sharded Cluster by performing Basic Configurations which are; Starting mongod Instances and Initiating ReplicaSets\n\n- **start.ps1** - Starts already Initialized Sharded Cluster's Instances and Shells\n\n- **clean.ps1** - Removes ReplicaSet Nodes by deleting Directory structure along with Data\n\n- **config.js** - Script for ReplicaSet Initiation\n\n- **config.json** - Configuration Object for ReplicaSet Initiation\n\n- **data.csv** - Amazon Product Ratings Sample Dataset\n\n### Prerequisites\n\n- **mongod**, **mongosh**, **mongos**, **mongoimport** must be installed and Installation Directory path must be added to _Path Environment variable_\n\n- **Windows Terminal** can be installed and set as Default Terminal Application for Better Experience\n\n## Manual Process for Performing Sharding\n\n### Config Server ReplicaSet Nodes\n\n```bash\n\n# Mongod Instances\nmongod --configsvr --port=1001  --replSet=\"configserver-rs\" --dbpath=\"./store/config/node1\"\n\nmongod --configsvr --port=1002  --replSet=\"configserver-rs\" --dbpath=\"./store/config/node2\"\n\nmongod --configsvr --port=1003  --replSet=\"configserver-rs\" --dbpath=\"./store/config/node3\"\n\n# Mongo Shell Connection\nmongosh --port=1001\n\n# Initiate ReplicaSet\nrs.initiate({\n    _id: \"configserver-rs\",\n    configsvr: true,\n    members: [\n        {_id: 0, host: \"localhost:1001\"},\n        {_id: 1, host: \"localhost:1002\"},\n        {_id: 2, host: \"localhost:1003\"}\n    ]\n})\n\n```\n\n### Shard1 ReplicaSet Nodes\n\n```bash\n\n# Mongod Instances\nmongod --shardsvr --port=1011 --replSet=\"shard1-rs\" --dbpath=\"./store/shards/shard1/node1\"\n\nmongod --shardsvr --port=1012 --replSet=\"shard1-rs\" --dbpath=\"./store/shards/shard1/node2\"\n\nmongod --shardsvr --port=1013 --replSet=\"shard1-rs\" --dbpath=\"./store/shards/shard1/node3\"\n\n# Mongo Shell Connection\nmongosh --port=1011\n\n# Initiate ReplicaSet\nrs.initiate({\n    _id: \"shard1-rs\",\n    members: [\n        {_id: 0, host: \"localhost:1011\"},\n        {_id: 1, host: \"localhost:1012\"},\n        {_id: 2, host: \"localhost:1013\"},\n    ]\n})\n\n```\n\n### Shard2 ReplicaSet Nodes\n\n```bash\n\n# Mongod Instances\nmongod --shardsvr --port=1021 --replSet=\"shard2-rs\" --dbpath=\"./store/shards/shard2/node1\"\n\nmongod --shardsvr --port=1022 --replSet=\"shard2-rs\" --dbpath=\"./store/shards/shard2/node2\"\n\nmongod --shardsvr --port=1023 --replSet=\"shard2-rs\" --dbpath=\"./store/shards/shard2/node3\"\n\n# Mongo Shell Connection\nmongosh --port=1021\n\n# Initiate ReplicaSet\nrs.initiate({\n    _id: \"shard2-rs\",\n    members: [\n        {_id: 0, host: \"localhost:1021\"},\n        {_id: 1, host: \"localhost:1022\"},\n        {_id: 2, host: \"localhost:1023\"},\n    ]\n})\n\n```\n\n### Shard3 ReplicaSet Nodes\n\n```bash\n\n# Mongod Instances\nmongod --shardsvr --port=1031 --replSet=\"shard3-rs\" --dbpath=\"./store/shards/shard3/node1\"\n\nmongod --shardsvr --port=1032 --replSet=\"shard3-rs\" --dbpath=\"./store/shards/shard3/node2\"\n\nmongod --shardsvr --port=1033 --replSet=\"shard3-rs\" --dbpath=\"./store/shards/shard3/node3\"\n\n# Mongo Shell Connection\nmongosh --port=1031\n\n# Initiate ReplicaSet\nrs.initiate({\n    _id: \"shard3-rs\",\n    members: [\n        {_id: 0, host: \"localhost:1031\"},\n        {_id: 1, host: \"localhost:1032\"},\n        {_id: 2, host: \"localhost:1033\"},\n    ]\n})\n\n```\n\n### Mongos Router\n\n```bash\n\n# Mongos Instance\nmongos --port=2000 --configdb=\"configserver-rs/localhost:1001,localhost:1002,localhost:1003\"\n\n# Mongo Shell Connection\nmongosh --port=2000\n\n# Add Shards\nsh.addShard(\"shard1-rs/localhost:1011,localhost:1012,localhost:1013\")\nsh.addShard(\"shard2-rs/localhost:1021,localhost:1022,localhost:1023\")\nsh.addShard(\"shard3-rs/localhost:1031,localhost:1032,localhost:1033\")\n\n# Enable Sharding on a Database (Optional)\nsh.enableSharding(\"amazon\")\n\n# Shard a Collection\nsh.shardCollection(\"amazon.reviews\",{ userid: \"hashed\", productid: 1})\n\n```\n\n### Import Data into Cluster\n\n```bash\n\nmongoimport --type=csv --headerline --uri=\"mongodb://localhost:2000/amazon\" --collection=\"reviews\" --file=\"./data.csv\"\n\n```\n\n### Connect to Individual Shard-ReplicaSets\n\n```bash\n\n# Shard1\nmongosh mongodb://localhost:1011,localhost:1012,localhost:1013/amazon\n\n# Shard2\nmongosh mongodb://localhost:1021,localhost:1022,localhost:1023/amazon\n\n# Shard3\nmongosh mongodb://localhost:1031,localhost:1032,localhost:1033/amazon\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgamer007%2Fmongodb-sharded-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdgamer007%2Fmongodb-sharded-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgamer007%2Fmongodb-sharded-cluster/lists"}