Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Delade kluster i MongoDB


Delade kluster i MongoDB


MongoDB Sharded Clusters: En omfattande guide

MongoDB-skärning är en kraftfull teknik för att horisontellt skala och distribuera data över flera servrar eller "skärvor". Detta tillvägagångssätt tillåter MongoDB att hantera ökande belastningar och förbättra prestanda genom att dela upp data i mindre bitar och distribuera dem över flera skärvor. Att förstå komponenterna i ett fragmenterat kluster är avgörande för att hantera och skala databasinfrastruktur effektivt.

Komponenter i ett delat kluster

1. Shards: Shards är horisontellt skalbara, vilket gör att du kan lägga till fler shards när din data växer för att hantera ökande belastningar. Varje fragment i ett fragmenterat kluster kan placeras på en annan fysisk maskin eller server och distribuera data och arbetsbelastning över flera noder. Skärvor kan läggas till i ett fragmenterat kluster dynamiskt, vilket gör att du kan skala din databasinfrastruktur utan driftstopp.

2. Primary Shard: Den primära shardtilldelningen baseras på databasens storlek vid tidpunkten för skapandet, men den kan manuellt omtilldelas senare om det behövs. Den primära skärvan är ansvarig för att lagra metadata relaterad till databasen, såsom listan över samlingar och deras platser. Om en primär shard blir otillgänglig, väljer MongoDB automatiskt en ny primär shard för de berörda databaserna för att säkerställa kontinuerlig drift.

3. Konfigurationsservrar: Konfigurationsservrar lagrar metadata om det fragmenterade klustret, inklusive information om fragment, bitar och klusterorganisation. De underlättar administrativ verksamhet och hjälper till att upprätthålla klusterkonsistens genom att se till att alla noder i klustret har samma syn på metadata. Konfigurationsservrar hanterar autentiserings- och auktoriseringsinställningar, vilket säkerställer att endast auktoriserade användare och applikationer kan komma åt klustret.

4. Mongos-instanser: Mongos-instanser fungerar som gränssnittet mellan klientapplikationer och det sönderdelade klustret. De hanterar frågedirigering, skärvhantering och resultataggregering. Mongos-instanser lagrar inte data själva utan är beroende av cachelagring av metadata från konfigurationsservrarna för att dirigera frågor effektivt.

Hur Sharding fungerar

När ett fragmenterat kluster skapas delar MongoDB automatiskt upp data i bitar och distribuerar dem över tillgängliga shards. Varje bit har en inkluderande nedre och exklusiv övre gräns, som definierar intervallet för shard-nyckelvärden som lagras på varje shard. Detta säkerställer en jämn datadistribution och effektiv frågedirigering.

Frågeoptimering i ett delat kluster

Att optimera frågor är avgörande för effektiv datahämtning och frågeprestanda i ett fragmenterat kluster. MongoDB tillhandahåller verktyg och kommandon för att hantera primära shards, som kommandot `sh.status()` för att se statusen för shards i ett sharded kluster. Dessutom stöder MongoDB fragmenterade aggregeringsfrågor, vilket gör att du kan utföra komplexa dataaggregationer över flera shards.

Dela bitar

Genom att dela upp bitar kan du finjustera datadistributionen i ett MongoDB-fragmenterat kluster. Genom att explicit dela upp bitar kan du kontrollera intervallet för shard-nyckelvärden som lagras på varje shard och säkerställa en jämn datafördelning. Detta involverar att identifiera värdet med vilket du vill dela chunken och använda kommandot `sh.splitAt()' för att dela chunken vid önskad delningspunkt.

Bästa metoder för delade kluster

1. Distribuera konfigurationsservrar som en replikuppsättning med 3 medlemmar: Se till att konfigurationsservrar distribueras som en replikuppsättning med 3 medlemmar för hög tillgänglighet och feltolerans.

2. Distribuera varje fragment som en 3-medlems replikuppsättning: Se till att varje shard distribueras som en 3-medlemsreplika för hög tillgänglighet och feltolerans.

3. Distribuera en eller flera Mongos-routrar: Installera en eller flera Mongos-routrar för att hantera frågedirigering och shardhantering.

4. Övervaka prestanda: Övervaka prestandan för ditt fragmenterade kluster, inklusive prestanda för konfigurationsservrar och fragment, för att säkerställa optimal prestanda och datadistribution.

5. Använd fragmenterade aggregeringsfrågor: Använd fragmenterade aggregeringsfrågor för att utföra komplexa dataaggregationer över flera fragment, vilket säkerställer effektiv databearbetning och analys.

Slutsats

MongoDB-skärning är en kraftfull teknik för att horisontellt skala och distribuera data över flera servrar eller "skärvor". Att förstå komponenterna i ett sharded kluster och hur sharding fungerar är avgörande för att hantera och skala databasinfrastruktur effektivt. Genom att följa bästa praxis och optimera frågor kan du säkerställa optimal prestanda och datadistribution i ditt sönderdelade kluster.

Citat:
[1] https://www.mongodb.com/docs/manual/core/sharded-cluster-components/
[2] https://www.mongodb.com/docs/v6.2/core/sharded-cluster-components/
[3] https://www.geeksforgeeks.org/sharded-cluster-components-in-mongodb/
[4] https://www.squash.io/tutorial-on-database-sharding-in-mongodb/
[5] https://www.bmc.com/blogs/mongodb-sharding-explained/