Delen via


Containers maken met een grote partitiesleutel

VAN TOEPASSING OP: NoSQL

Azure Cosmos DB maakt gebruik van een hash-partitieschema om horizontaal schalen van gegevens te bereiken. Alle Azure Cosmos DB-containers die vóór 3 mei 2019 zijn gemaakt, gebruiken een hash-functie waarmee hash wordt berekend op basis van de eerste 101 bytes van de partitiesleutel. Als er meerdere partitiesleutels zijn met dezelfde eerste 101 bytes, worden deze logische partities beschouwd als dezelfde logische partitie door de service. Dit kan leiden tot problemen zoals het quotum voor partitiegrootte onjuist wordt toegepast, unieke indexen worden onjuist toegepast op de partitiesleutels en ongelijke distributie van opslag. Er worden grote partitiesleutels 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 een verbeterde versie van de hash-functie in te schakelen, waarmee een unieke hash kan worden gegenereerd 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, controleert u of mijn partitiesleutel groter is dan 101 bytes wanneer u een nieuwe container maakt met behulp van Azure Portal. 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 behulp van Azure Portal

Een grote partitiesleutel maken (PowerShell)

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

Een grote partitiesleutel (.NET SDK) maken

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 in het Object PartitionKeyDefinition opgeeft en deze instelt op PartitionKeyDefinitionVersion.V2.

Notitie

Standaard bieden alle containers die zijn gemaakt met .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 grote partitiesleutels worden ondersteund met de volgende minimale versies van SDK's:

SDK-type Minimumversie
.NET 1.18
Java-synchronisatie 2.4.0
Java Async 2.5.0
REST-API versie hoger 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.

Momenteel kunt u geen containers met een grote partitiesleutel gebruiken in Power BI en Azure Logic Apps. U kunt containers zonder een grote partitiesleutel van deze toepassingen gebruiken.

Volgende stappen