Veelgestelde vragen over hiërarchische partitiesleutels in Azure Cosmos DB

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

Met hiërarchische partitiesleutels of subpartitionering kunt u maximaal een hiërarchie van drie niveaus configureren voor uw partitiesleutels om de gegevensdistributie verder te optimaliseren en een hogere schaal in te schakelen. In dit artikel vindt u antwoorden op veelgestelde vragen over hiërarchische partitiesleutels van Azure Cosmos DB.

Kan ik hiërarchische partitiesleutels toevoegen aan bestaande containers?

Het toevoegen van hiërarchische partitiesleutels aan bestaande containers wordt niet ondersteund. U kunt echter een nieuwe container maken met de gewenste hiërarchische partitiesleutel en een containerkopietaak uitvoeren om gegevens van uw bestaande container naar de nieuwe te kopiëren. Zie taken voor containerkopieën voor meer informatie over het kopiëren van gegevens.

Is er een opslaglimiet voor de grootte van een logische partitiesleutel?

Ja. Net als in Azure Cosmos DB is de grootte van de logische partitie nog steeds beperkt tot 20 GB. Met hiërarchische partitiesleutels is de logische partitie nu echter het volledige pad naar de partitiesleutel. Als u bijvoorbeeld gepartitioneerd op TenantId -> UserId, zou een voorbeeld van een logische partitie zijn Contoso_Alice. Het gebruik van subpartitionering betekent dat u 20 GB aan gegevens kunt hebben waarbij de waarde van de partitiesleutel zich bevindt Contoso_Alice. De hoeveelheid opslagruimte die is toegestaan voor gegevens in Contoso is in feite 20 GB * aantal unieke gebruikers-id's voor de tenant 'Contoso'.

Zijn er wijzigingen in opslag- en RU/s-limieten voor fysieke partities?

Nee Net als in Azure Cosmos DB kan een fysieke partitie 50 GB aan opslag bevatten en maximaal 10.000 RU/s leveren. Als gegevens voor een bepaald partitiesleutelvoorvoegsel ( bijvoorbeeld TenantId ) zich echter in meerdere fysieke partities bevinden, betekent subpartitionering dat het totale aantal RU/s dat voor één TenantId kan worden opgehaald, groter kan zijn dan 10.000 RU/s.

Wat gebeurt er als ik een query indien en alleen een partitiesleutel opgeeft in het 'midden' van het pad?

Uw query is een query voor meerdere partities. Als u bijvoorbeeld partitioneert op TenantId -> UserId en alleen de UserId in de query opgeeft, wordt deze query uitgewaaineerd op alle fysieke partities.

Als u een efficiënt gerouteerde query wilt hebben met behulp van de TenantId -> UserId, zijn er twee opties:

  • Geef de TenantId op. Query's gaan naar alle fysieke partities met de TenantId-gegevens.
  • Geef zowel de TenantId als de UserId op. Query's gaan naar de afzonderlijke fysieke partitie met de TenantId en de specifieke UserId.

Moet ik een nieuwe eigenschap maken in mijn documenten om deze functie te kunnen gebruiken?

Nee Geef de hiërarchie op van de partitiesleutelpaden die u wilt gebruiken tijdens het maken van de container. Als u bijvoorbeeld partitionert op TenantId -> UserId, hoeft u geen nieuwe eigenschap te maken met deze waarden samengevoegd. Zorg ervoor dat elk document een eigenschap TenantId en een eigenschap UserId heeft. Zie voorbeelden van subpartitioneringscode voor meer informatie.

Ik heb een hiërarchie van sleutels gemaakt die niet veel kardinaliteit heeft. Wat moet ik doen?

Mogelijk bevindt u zich in een scenario waarin uw workload slechts een paar fysieke partities van al uw partities bereikt. Dit scenario kan betekenen dat een of meer niveaus van uw hiërarchische partitiesleutel een lage kardinaliteit hebben. Voor het oplossen van problemen met scenario's raden we u altijd aan uw hiërarchische partitiesleutel opnieuw te maken. U kunt DTS gebruiken om uw sleutel te wijzigen en de gegevens van uw container te kopiëren naar uw nieuwe container. Als deze stap niet mogelijk is, zijn er twee tijdelijke oplossingen die we voorstellen om een uniforme distributie van uw gegevens te garanderen

  • Benadering 1:
  1. U kunt een container met minder dan 10.000 RU's maken om ervoor te zorgen dat u slechts één fysieke partitie hebt.
  2. Neemt ongeveer 5 GB aan gegevens op om ervoor te zorgen dat er geen partitiesplitsingen zijn.
  3. Schaal omhoog naar de gewenste RU's, ga door met het opnemen van gegevens en Azure Cosmos DB zorgt ervoor dat uw fysieke partities uniform worden gesplitst.
  • Benadering 2:
  1. U kunt uw totale aanbieding verhogen naar een hoger aantal RU's en al uw gegevens opnemen.
  2. Voer vervolgens partitiesamenvoeging uit om ervoor te zorgen dat de partities van uw workload niet worden gefragmenteerd en zelfs distributie hebben
  3. Zodra de samenvoegbewerking is voltooid, schaalt u terug naar het oorspronkelijke gewenste aantal RU's.

Als u meer controle wilt hebben over de hoeveelheid doorvoer die elke partitie heeft, kunt u ook de herdistributie van doorvoer gebruiken om ervoor te zorgen dat de partities die uw workload gebruikt, voldoende RU's hebben voor uw toekomstige aanvragen.

Volgende stappen