Een synthetische partitiesleutel maken

VAN TOEPASSING OP: NoSQL

Het is de best practice om een partitiesleutel te hebben met veel verschillende waarden, zoals honderden of duizenden. Het doel is om uw gegevens en workload 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 voegen 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 is een optie om /deviceId of /date in te stellen als de 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 brengen in een synthetische partitionKey eigenschap die wordt gebruikt als de 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 de synthetische sleutel in te voegen in de items in uw Azure Cosmos DB-containers.

Een partitiesleutel met een willekeurig achtervoegsel gebruiken

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 een achtervoegsel bij 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 gebruikt, worden de schrijfbewerkingen op de container op elke dag gelijkmatig verdeeld over meerdere partities. Deze methode resulteert in een betere parallelle uitvoering en een algehele hogere doorvoer.

Een partitiesleutel met vooraf berekende achtervoegsels gebruiken

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 bij het schrijven van het item. Als u het gemakkelijker wilt maken om afzonderlijke items te lezen, gebruikt u de strategie voor vooraf berekende achtervoegsels. 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 dat we willen openen. Stel verder dat u vaak query's uitvoert om items te vinden op basis van , VINnaast de datum. Voordat uw toepassing het item naar de container schrijft, kan deze een hash-achtervoegsel berekenen op basis van het VIN en toevoegen aan de datum van de partitiesleutel. De berekening kan een getal tussen 1 en 400 genereren dat gelijkmatig is verdeeld. Dit resultaat is vergelijkbaar met de resultaten die worden geproduceerd door de strategiemethode voor willekeurig achtervoegsel. De partitiesleutelwaarde is vervolgens de datum die is samengevoegd met het berekende resultaat.

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

Volgende stappen

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