Delen via


Een synthetische partitiesleutel maken

VAN TOEPASSING OP: NoSQL

Het is de aanbevolen procedure om een partitiesleutel te hebben met veel afzonderlijke waarden, zoals honderden of duizenden. Het doel is om uw gegevens en werkbelasting gelijkmatig te verdelen over de items die aan deze partitiesleutelwaarden zijn gekoppeld. Als een dergelijke eigenschap niet in uw gegevens bestaat, kunt u een synthetische partitiesleutel maken. In dit document worden verschillende basistechnieken beschreven voor het genereren van een synthetische partitiesleutel voor uw Azure Cosmos DB-container.

Meerdere eigenschappen van een item samenvoegen

U kunt een partitiesleutel vormen door meerdere eigenschapswaarden samen te stellen in één kunstmatige partitionKey eigenschap. Deze sleutels worden synthetische sleutels genoemd. Bekijk bijvoorbeeld het volgende voorbeelddocument:

{
"deviceId": "abc-123",
"date": 2018
}

Voor het vorige document kunt u /deviceId of /date instellen als partitiesleutel. Gebruik deze optie als u uw container wilt partitioneren op basis van apparaat-id of datum. Een andere optie is om deze twee waarden samen te stellen in een synthetische partitionKey eigenschap die wordt gebruikt als partitiesleutel.

{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}

In realtime scenario's kunt u duizenden items in een database hebben. In plaats van de synthetische sleutel handmatig toe te voegen, definieert u logica aan de clientzijde om waarden samen te voegen en voegt u de synthetische sleutel in de items in uw Azure Cosmos DB-containers in.

Een partitiesleutel gebruiken met een willekeurig achtervoegsel

Een andere mogelijke strategie om de workload gelijkmatiger te verdelen, is door een willekeurig getal toe te voegen aan het einde van de partitiesleutelwaarde. Wanneer u items op deze manier distribueert, kunt u parallelle schrijfbewerkingen uitvoeren tussen partities.

Een voorbeeld is als een partitiesleutel een datum vertegenwoordigt. U kunt een willekeurig getal tussen 1 en 400 kiezen en dit samenvoegen als achtervoegsel tot de datum. Deze methode resulteert in partitiesleutelwaarden zoals 2018-08-09.1,2018-08-09.2 enzovoort, via 2018-08-09.400. Omdat u de partitiesleutel willekeurig aanwijst, worden de schrijfbewerkingen op de container op elke dag gelijkmatig verdeeld over meerdere partities. Deze methode resulteert in betere parallelle uitvoering en algehele hogere doorvoer.

Een partitiesleutel gebruiken met vooraf berekende achtervoegsels

De strategie voor willekeurige achtervoegsels kan de schrijfdoorvoer aanzienlijk verbeteren, maar het is moeilijk om een specifiek item te lezen. U weet niet welke achtervoegselwaarde is gebruikt toen u het item schreef. Gebruik de strategie voor vooraf berekende achtervoegsels om het gemakkelijker te maken om afzonderlijke items te lezen. In plaats van een willekeurig getal te gebruiken om de items over de partities te verdelen, gebruikt u een getal dat wordt berekend op basis van iets waarop u een query wilt uitvoeren.

Bekijk het vorige voorbeeld, waarbij een container een datum als partitiesleutel gebruikt. Stel nu dat elk item een Vehicle-Identification-Number (VIN) kenmerk heeft waartoe we toegang willen hebben. Stel dat u vaak query's uitvoert om items te vinden op basis van de VIN, naast datum. Voordat uw toepassing het item naar de container schrijft, kan het een hash-achtervoegsel berekenen op basis van de VIN en het toevoegen aan de partitiesleuteldatum. De berekening kan een getal genereren tussen 1 en 400 dat gelijkmatig wordt verdeeld. Dit resultaat is vergelijkbaar met de resultaten die worden geproduceerd door de methode voor willekeurige achtervoegsels. De waarde van de partitiesleutel wordt vervolgens de datum samengevoegd met het berekende resultaat.

Met deze strategie worden de schrijfbewerkingen gelijkmatig verdeeld over de partitiesleutelwaarden en over de partities. U kunt gemakkelijk een bepaald item en een bepaalde datum lezen, omdat u de partitiesleutelwaarde voor een specifieke Vehicle-Identification-Numberwaarde kunt berekenen. Het voordeel van deze methode is dat u kunt voorkomen dat u één dynamische partitiesleutel maakt, d.w.v. een partitiesleutel die alle werkbelasting gebruikt.

Volgende stappen

Meer informatie over het partitioneringsconcept vindt u in de volgende artikelen: