Condividi tramite


Creare un contenitore con una chiave di partizione di grandi dimensioni

SI APPLICA A: NoSQL

Azure Cosmos DB usa lo schema di partizionamento basato su hash per ottenere il ridimensionamento orizzontale dei dati. Tutti i contenitori Azure Cosmos DB creati prima del 3 maggio 2019 usano una funzione hash che calcola l'hash in base ai primi 101 byte della chiave di partizione. Se sono presenti più chiavi di partizione con gli stessi primi 101 byte, tali partizioni logiche vengono considerate come la stessa partizione logica dal servizio. Ciò può causare problemi come la quota delle dimensioni della partizione non corretta, gli indici univoci applicati in modo non corretto tra le chiavi di partizione e la distribuzione non uniforme dell'archiviazione. Per risolvere questo problema vengono introdotte chiavi di partizione di grandi dimensioni. Azure Cosmos DB supporta ora chiavi di partizione di grandi dimensioni con valori fino a 2 kB.

Le chiavi di partizione di grandi dimensioni sono supportate abilitando una versione avanzata della funzione hash, che può generare un hash univoco da chiavi di partizione di grandi dimensioni fino a 2 kB. Come procedura consigliata, a meno che non sia necessario il supporto per un SDK o un'applicazione di Azure Cosmos DB meno recente che non supporta questa funzionalità, è sempre consigliabile configurare il contenitore con il supporto per chiavi di partizione di grandi dimensioni.

Creare una chiave di partizione di grandi dimensioni (portale di Azure)

Per impostazione predefinita, i contenitori creati con il portale di Azure usano una chiave di partizione di grandi dimensioni.

Creare una chiave di partizione di grandi dimensioni (PowerShell)

Per creare un contenitore con supporto di chiavi di partizione di grandi dimensioni, vedere:

Creare una chiave di partizione di grandi dimensioni (.NET SDK)

Per creare un contenitore con una chiave di partizione di grandi dimensioni usando .NET SDK, specificare la proprietà PartitionKeyDefinitionVersion.V2. Nell'esempio seguente viene illustrato come specificare la proprietà Version all'interno dell'oggetto PartitionKeyDefinition e impostarla su PartitionKeyDefinitionVersion.V2.

Nota

Per impostazione predefinita, tutti i contenitori creati con .NET SDK V2 non supportano chiavi di partizione di grandi dimensioni. Per impostazione predefinita, tutti i contenitori creati con .NET SDK V3 supportano chiavi di partizione di grandi dimensioni.

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

Versioni di SDK supportate

Le chiavi di partizione di grandi dimensioni sono supportate con le versioni minime degli SDK seguenti:

Tipo di SDK Versione minima
.NET 1,18
Java Sync 2.4.0
Java Async 2.5.0
REST API Versione successiva alla 2017-05-03 mediante l'uso dell'intestazione della richiesta x-ms-version.
Modello di Resource Manager Versione 2 mediante l'uso della proprietà "version":2 all'interno dell'oggetto partitionKey.

Attualmente, non è possibile usare contenitori con chiavi di partizione di grandi dimensioni in Power BI e App per la logica di Azure. In queste applicazioni è possibile usare contenitori senza una chiave di partizione di grandi dimensioni.

Passaggi successivi