Containers maken met een grote partitiesleutel

VAN TOEPASSING OP: NoSQL

Azure Cosmos DB maakt gebruik van een op hash gebaseerd partitioneringsschema om horizontaal schalen van gegevens te bereiken. Alle Azure Cosmos DB-containers die vóór 3 mei 2019 zijn gemaakt, gebruiken een hash-functie die hash berekent op basis van de eerste 101 bytes van de partitiesleutel. Als er meerdere partitiesleutels zijn met dezelfde eerste 101 bytes, worden deze logische partities door de service beschouwd als dezelfde logische partitie. Dit kan leiden tot problemen zoals het quotum voor partitiegrootte onjuist, unieke indexen die onjuist worden toegepast op de partitiesleutels en ongelijke distributie van opslag. Grote partitiesleutels worden geïntroduceerd om dit probleem op te lossen. Azure Cosmos DB ondersteunt nu grote partitiesleutels met waarden tot 2 kB.

Grote partitiesleutels worden ondersteund door het inschakelen van een verbeterde versie van de hash-functie, die een unieke hash kan genereren van grote partitiesleutels tot 2 kB. Als best practice, tenzij u ondersteuning nodig hebt voor een oudere Azure Cosmos DB SDK of toepassing die deze functie niet ondersteunt, wordt het altijd aanbevolen om uw container te configureren met ondersteuning voor grote partitiesleutels.

Een grote partitiesleutel maken (Azure Portal)

Als u een grote partitiesleutel wilt maken wanneer u een nieuwe container maakt met behulp van de Azure Portal, schakelt u de optie Mijn partitiesleutel is groter dan 101 bytes in. Schakel het selectievakje uit als u geen grote partitiesleutels nodig hebt of als er toepassingen worden uitgevoerd op SDK's die ouder zijn dan 1.18.

Grote partitiesleutels maken met Azure Portal

Een grote partitiesleutel maken (PowerShell)

Als u een container wilt maken met ondersteuning voor grote partitiesleutels, raadpleegt u:

Een grote partitiesleutel maken (.NET SDK)

Als u een container met een grote partitiesleutel wilt maken met behulp van de .NET SDK, geeft u de PartitionKeyDefinitionVersion.V2 eigenschap op. In het volgende voorbeeld ziet u hoe u de eigenschap Version opgeeft in het object PartitionKeyDefinition en deze instelt op PartitionKeyDefinitionVersion.V2.

Notitie

Standaard bieden alle containers die zijn gemaakt met de .NET SDK V2 geen ondersteuning voor grote partitiesleutels. Standaard ondersteunen alle containers die zijn gemaakt met de .NET SDK V3 grote partitiesleutels.

await database.CreateContainerAsync(
    new ContainerProperties(collectionName, $"/longpartitionkey")
    {
        PartitionKeyDefinitionVersion = PartitionKeyDefinitionVersion.V2,
    })

Ondersteunde SDK-versies

De sleutels voor grote partities worden ondersteund met de volgende minimale versies van SDK's:

SDK-type Minimale versie
.NET 1.18
Java-synchronisatie 2.4.0
Java Async 2.5.0
REST-API versie hoger is dan 2017-05-03 met behulp van de x-ms-version aanvraagheader.
Resource Manager-sjabloon versie 2 met behulp van de "version":2 eigenschap in het partitionKey -object.

Op dit moment kunt u geen containers met een grote partitiesleutel gebruiken in Power BI en Azure Logic Apps. U kunt vanuit deze toepassingen containers gebruiken zonder een grote partitiesleutel.

Volgende stappen