{"id":29672986,"url":"https://github.com/paulpascal/group9_nosql","last_synced_at":"2026-02-04T09:40:37.622Z","repository":{"id":257117026,"uuid":"857352070","full_name":"paulpascal/group9_nosql","owner":"paulpascal","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-14T16:52:03.000Z","size":119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-15T23:26:15.520Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/paulpascal.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-14T12:31:48.000Z","updated_at":"2024-09-14T16:52:07.000Z","dependencies_parsed_at":"2024-09-14T23:26:12.557Z","dependency_job_id":null,"html_url":"https://github.com/paulpascal/group9_nosql","commit_stats":null,"previous_names":["paulpascal/group9_nosql"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paulpascal/group9_nosql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulpascal%2Fgroup9_nosql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulpascal%2Fgroup9_nosql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulpascal%2Fgroup9_nosql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulpascal%2Fgroup9_nosql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulpascal","download_url":"https://codeload.github.com/paulpascal/group9_nosql/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulpascal%2Fgroup9_nosql/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266573236,"owners_count":23950185,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-07-22T21:09:30.415Z","updated_at":"2026-02-04T09:40:32.599Z","avatar_url":"https://github.com/paulpascal.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Groupe9: Projet d'implementation d'un modele de sharding\n\n## Description du Projet\n\nCe projet consiste en la mise en place d'un modèle de sharding pour MongoDB, afin de démontrer l'efficacité de ce modèle pour gérer de grandes quantités de données. Nous avons utilisé Docker pour créer un environnement virtuel afin de configurer et tester notre cluster MongoDB avec sharding.\n\n![Modele de Sharding a implementer](./MongoDB_Devoir.png)\n\n## Technologies Utilisées\n\n- MongoDB : Base de données NoSQL.\n- Docker : Conteneurisation des services MongoDB.\n- Docker Compose : Orchestration des conteneurs Docker.\n\n## Instructions d'Utilisation\n\n1. Configuration des Config Servers\n   Connectez-vous au conteneur du serveur de configuration et initialisez le replica set :\n\n```bash\ndocker exec -it group9_nosql-configsvr1-1 mongosh --port 27201 admin\n```\n\n```javascript\nrs.initiate({\n  _id: \"confReplSet\",\n  configsvr: true,\n  members: [\n    { _id: 0, host: \"group9_nosql-configsvr1-1:27201\" },\n    { _id: 1, host: \"group9_nosql-configsvr2-1:27202\" },\n    { _id: 2, host: \"group9_nosql-configsvr3-1:27203\" },\n  ],\n});\n```\n\n2. Configuration des Shards\n   Initialisez les replica sets pour chaque shard :\n\n### Shard 1 :\n\n```bash\ndocker exec -it group9_nosql-shard1_1-1 mongosh --port 27301 admin\n```\n\n```javascript\nrs.initiate({\n  _id: \"shard1\",\n  members: [\n    { _id: 0, host: \"group9_nosql-shard1_1-1:27301\" },\n    { _id: 1, host: \"group9_nosql-shard1_2-1:27302\" },\n    { _id: 2, host: \"group9_nosql-shard1_3-1:27303\" },\n  ],\n});\n```\n\n### Shard 2 :\n\n```bash\ndocker exec -it group9_nosql-shard2_1-1 mongosh --port 27401 admin\n```\n\n```javascript\nrs.initiate({\n  _id: \"shard2\",\n  members: [\n    { _id: 0, host: \"group9_nosql-shard2_1-1:27401\" },\n    { _id: 1, host: \"group9_nosql-shard2_2-1:27402\" },\n    { _id: 2, host: \"group9_nosql-shard2_3-1:27403\" },\n  ],\n});\n```\n\n### Shard 3 :\n\n```bash\ndocker exec -it group9_nosql-shard3_1-1 mongosh --port 27501 admin\n```\n\n```javascript\nrs.initiate({\n  _id: \"shard3\",\n  members: [\n    { _id: 0, host: \"group9_nosql-shard3_1-1:27501\" },\n    { _id: 1, host: \"group9_nosql-shard3_2-1:27502\" },\n    { _id: 2, host: \"group9_nosql-shard3_3-1:27503\" },\n  ],\n});\n```\n\n### Shard 4 :\n\n```bash\ndocker exec -it group9_nosql-shard4_1-1 mongosh --port 27601 admin\n```\n\n```javascript\nrs.initiate({\n  _id: \"shard4\",\n  members: [\n    { _id: 0, host: \"group9_nosql-shard4_1-1:27601\" },\n    { _id: 1, host: \"group9_nosql-shard4_2-1:27602\" },\n    { _id: 2, host: \"group9_nosql-shard4_3-1:27603\" },\n  ],\n});\n```\n\n### Reconfigurez le replica set et réalisez une élection :\n\n```javascript\nrs.reconfig({\n  _id: \"shard4\",\n  members: [\n    { _id: 0, host: \"group9_nosql-shard4_1-1:27601\" },\n    { _id: 1, host: \"group9_nosql-shard4_2-1:27602\" },\n    { _id: 2, host: \"group9_nosql-shard4_3-1:27603\" },\n  ],\n});\n```\n\n```javascript\nrs.stepDown(); // Election\n```\n\n3. Configuration du Mongos\n   Ajoutez les shards au cluster :\n\n```bash\ndocker exec -it group9_nosql-mongos-1 mongosh --port 27100\n```\n\n```javascript\nsh.addShard(\"shard1/group9_nosql-shard1_1-1:27301,group9_nosql-shard1_2-1:27302\") # deux instances participent\nsh.addShard(\"shard2/group9_nosql-shard2_1-1:27401,group9_nosql-shard2_2-1:27402,group9_nosql-shard2_3-1:27403\")\nsh.addShard(\"shard3/group9_nosql-shard3_1-1:27501,group9_nosql-shard3_2-1:27502,group9_nosql-shard3_3-1:27503\")\nsh.addShard(\"shard4/group9_nosql-shard4_1-1:27601,group9_nosql-shard4_2-1:27602\") # deux instances participent\n```\n\n4. Connexion au Cluster MongoDB\n\nConnectez-vous au cluster MongoDB :\n\n```bash\ndocker exec -it group9_nosql-mongos-1 mongosh --port 27100\n```\n\n5. Création d'une Nouvelle Base de Données\n   Créez une nouvelle base de données et activez le sharding :\n\n```bash\nshow dbs\nuse dit\nsh.enableSharding(\"dit\")\n```\n\n6. Création d'une Collection\n   Créez une collection et configurez le sharding :\n\n```bash\ndb.createCollection(\"students\")\nsh.shardCollection(\"dit.students\", { matricule: \"hashed\" }, false, { \"numInitialChunks\": 1, \"chunkSize\": 10 })\n\ndb.students.insert({ name: 'John Doe', matricule: 1 })\nshow collections\n\nsh.status()\n```\n\n# Conclusion\n\nCe projet nous a permis de mettre en œuvre un modèle de sharding dans MongoDB pour démontrer sa capacité à gérer de grandes quantités de données efficacement. Le sharding assure une meilleure scalabilité, une gestion optimisée de la réplication des données et une meilleure tolérance aux pannes. En utilisant Docker et Docker Compose, nous avons pu créer un environnement virtuel robuste pour tester notre configuration de sharding, tout en acquérant des compétences pratiques en conteneurisation et en orchestration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulpascal%2Fgroup9_nosql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulpascal%2Fgroup9_nosql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulpascal%2Fgroup9_nosql/lists"}