Domande frequenti sulle chiavi di partizione gerarchiche in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Le chiavi di partizione gerarchica o subpartitoning consentono di configurare fino a una gerarchia a tre livelli per le chiavi di partizione per ottimizzare ulteriormente la distribuzione dei dati e abilitare una scalabilità superiore. Questo articolo risponde alle domande frequenti sulle chiavi di partizione gerarchiche di Azure Cosmos DB.

È possibile aggiungere chiavi di partizione gerarchica ai contenitori esistenti?

L'aggiunta di chiavi di partizione gerarchica ai contenitori esistenti non è supportata. È tuttavia possibile creare un nuovo contenitore con la chiave di partizione gerarchica desiderata ed eseguire un processo di copia del contenitore per copiare i dati dal contenitore esistente al nuovo contenitore. Per altre informazioni su come copiare i dati, vedere Processi di copia del contenitore.

Esiste un limite di archiviazione per le dimensioni di una chiave di partizione logica?

Sì. Proprio come in Azure Cosmos DB, le dimensioni della partizione logica sono ancora limitate a 20 GB. Tuttavia, con le chiavi di partizione gerarchica, la partizione logica è ora l'intero percorso della chiave di partizione. Ad esempio, se è stato partizionato da TenantId -> UserId, una partizione logica di esempio sarà Contoso_Alice. L'utilizzo della sottopartizione significa che è possibile avere 20 GB di dati in cui il valore della chiave di partizione è Contoso_Alice. La quantità di spazio di archiviazione consentita per i dati in "Contoso" è effettivamente di 20 GB * numero di UserId univoci per il tenant "Contoso".

Sono state apportate modifiche ai limiti di archiviazione e UR/s per le partizioni fisiche?

No. Proprio come in Azure Cosmos DB, una partizione fisica può contenere 50 GB di spazio di archiviazione e servire fino a 10.000 UR/sec. Tuttavia, con chiavi di partizione gerarchiche, se i dati per un prefisso di chiave di partizione specifico, ad esempio TenantId, si trovano in più partizioni fisiche, la sottopartizione indica che il numero totale di UR/s ottenibile per un singolo TenantId può superare 10.000 UR/sec.

Cosa accade se si esegue una query e si specifica solo una chiave di partizione nel "centro" del percorso?

La query è una query tra partizioni. Ad esempio, se si esegue la partizione in base a TenantId -> UserId e si specifica solo l'Id utente nella query, questa query esegue il fan out in tutte le partizioni fisiche.

Per ottenere una query indirizzata in modo efficiente usando l'esempio TenantId -> UserId, sono disponibili due opzioni:

  • Specificare TenantId. Le query passano a tutte le partizioni fisiche contenenti i dati TenantId.
  • Specificare sia TenantId che UserId. Le query passano alla singola partizione fisica contenente l'ID tenant e l'ID utente specifico.

È necessario creare una nuova proprietà nei documenti per usare questa funzionalità?

No. Specificare la gerarchia dei percorsi delle chiavi di partizione da usare durante la creazione del contenitore. Ad esempio, se si esegue la partizione per TenantId -> UserId, non è necessario creare una nuova proprietà con questi valori concatenati. Assicurarsi che ogni documento abbia una proprietà TenantId e una proprietà UserId. Per altre informazioni, vedere esempi di codice di partizionamento secondario.

È stata creata una gerarchia di chiavi che non ha molta cardinalità. Cosa devo fare?

In uno scenario in cui il carico di lavoro raggiunge solo alcune partizioni fisiche da tutte le partizioni. Questo scenario può significare che uno o più livelli della chiave di partizione gerarchica hanno una cardinalità bassa. Per risolvere i problemi relativi allo scenario, è sempre consigliabile ricreare la chiave di partizione gerarchica ed è possibile usare DTS per modificare la chiave e copiare i dati del contenitore nel nuovo contenitore. Se questo passaggio non è possibile, sono disponibili due soluzioni alternative che è consigliabile garantire una distribuzione uniforme dei dati

  • Approccio 1:
  1. È possibile creare un contenitore con meno di 10.000 UR per assicurarsi di avere una sola partizione fisica.
  2. Inserire circa 5 GB di dati per assicurarsi che non siano presenti divisioni di partizione.
  3. Aumentare le prestazioni fino alle UR desiderate, continuare a inserire dati e Azure Cosmos DB garantisce che le partizioni fisiche vengano suddivise in modo uniforme.
  • Approccio 2:
  1. È possibile aumentare l'offerta totale a un numero maggiore di UR e inserire tutti i dati.
  2. Eseguire quindi l'unione delle partizioni per assicurarsi che le partizioni del carico di lavoro non siano frammentate e che abbia anche la distribuzione
  3. Una volta completata l'unione, tornare indietro al numero di UR desiderato originale.

Per avere un maggiore controllo sulla velocità effettiva di ogni partizione, è anche possibile usare la ridistribuzione della velocità effettiva per garantire che le partizioni usate dal carico di lavoro dispongano di UR sufficienti per le richieste future.

Passaggi successivi

  • Altre informazioni sulle chiavi di partizione gerarchica.