Partizionamento personalizzato in Azure Synapse Collegamento per Azure Cosmos DB (anteprima)
SI APPLICA A: NoSQL
Il partizionamento personalizzato consente di partizionare i dati dell'archivio analitico, nei campi comunemente usati come filtri nelle query analitiche, con conseguente miglioramento delle prestazioni delle query.
In questo articolo si apprenderà come partizionare i dati nell'archivio analitico di Azure Cosmos DB usando chiavi critiche per i carichi di lavoro analitici. Spiega anche come sfruttare le prestazioni delle query migliorate con l'eliminazione della partizione. Si apprenderà anche come l'archivio partizionato consente di migliorare le prestazioni delle query quando i carichi di lavoro hanno un numero significativo di aggiornamenti o eliminazioni.
Importante
La funzionalità di partizionamento personalizzata è attualmente in anteprima pubblica. Questa versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.
Nota
Gli account Azure Cosmos DB devono avere Azure Synapse Collegamento abilitato per sfruttare il partizionamento personalizzato.
Come funziona?
Il partizionamento dell'archivio analitico è indipendente dal partizionamento nell'archivio transazionale. Per impostazione predefinita, l'archivio analitico non è partizionato. Se si vuole eseguire query sull'archivio analitico spesso in base ai campi, ad esempio Data, Ora, Categoria e così via. si sfrutta il partizionamento personalizzato per creare un archivio partizionato separato in base a queste chiavi. È possibile scegliere un singolo campo o una combinazione di campi dal set di dati come chiave di partizione dell'archivio analitico.
È possibile attivare il partizionamento da un notebook Spark Azure Synapse usando Azure Synapse Collegamento. È possibile pianificarla come processo in background, una volta o due volte al giorno, ma può essere eseguita più spesso, se necessario.
Nota
L'archivio partizionato punta all'account di archiviazione primario ADLS Gen2 collegato all'area di lavoro Azure Synapse.
L'archivio partizionato contiene dati analitici di Azure Cosmos DB fino all'ultimo timestamp eseguito il processo di partizionamento. Quando si esegue una query sui dati analitici usando i filtri chiave di partizione in Synapse Spark, Collegamento a Synapse unisce automaticamente i dati nell'archivio partizionato con i dati più recenti dall'archivio analitico. In questo modo è possibile ottenere i risultati più recenti per le query. Anche se unisce i dati prima di eseguire query, il delta non viene scritto nell'archivio partizionato. Poiché il delta tra i dati nell'archivio analitico e l'archivio partizionato si estende, i tempi di query sui dati partizionati possono variare. L'attivazione del processo di partizionamento più frequentemente ridurrà questo delta. Ogni volta che si esegue il processo di partizione, verranno elaborate solo modifiche incrementali nell'archivio analitico, anziché il set di dati completo.
Quando usare la strategia
L'uso dell'archivio partizionato è facoltativo quando si esegue una query sui dati analitici in Azure Cosmos DB. È possibile eseguire direttamente query sullo stesso dati usando Collegamento a Synapse con l'archivio analitico esistente. È possibile attivare l'archivio partizionato se si hanno requisiti seguenti:
- Filtri di query analitici comuni che possono essere usati come colonne di partizione
- Colonne di partizione a cardinalità bassa
- La colonna di partizione distribuisce i dati in modo uniforme tra partizioni
- Volume elevato di operazioni di aggiornamento o eliminazione
- Inserimento dei dati lento
Ad eccezione dei carichi di lavoro che soddisfano i requisiti precedenti, se si esegue una query sui dati in tempo reale usando filtri di query diversi dalle chiavi di partizione, è consigliabile eseguire query direttamente dall'archivio analitico. Ciò è particolarmente vero se i processi di partizionamento non sono pianificati per l'esecuzione frequente.
Vantaggi
Riduzione dell'analisi dei dati dall'eliminazione delle partizioni
Poiché i dati corrispondenti a ogni chiave di partizione univoca vengono raggruppati nell'archivio partizionato, quando si usa la chiave di partizione come filtro di query, le esecuzioni di query possono filtrare i dati sottostanti e analizzare solo i dati necessari. Analizzando dati limitati, l'eliminazione delle partizioni migliora le prestazioni delle query analitiche.
Flessibilità per partizionare i dati analitici
È possibile avere più strategie di partizionamento per un determinato contenitore di archivi analitici. È possibile usare chiavi di partizione composte o separate in base ai requisiti di query. Vedere strategie di partizione per indicazioni su questo argomento.
Miglioramenti delle prestazioni delle query
Oltre ai miglioramenti della query dall'eliminazione della partizione, il partizionamento personalizzato comporta anche una migliore prestazioni delle query per i carichi di lavoro seguenti:
Aggiornare/eliminare carichi di lavoro pesanti : anziché tenere traccia di più versioni di record nell'archivio analitico e caricarli durante ogni esecuzione di query, l'archivio partizionato contiene solo la versione più recente dei dati. Ciò migliora significativamente le prestazioni della query quando si hanno carichi di lavoro elevati di aggiornamento/eliminazione.
Carichi di lavoro di inserimento dei dati lenti : il partizionamento compatta i dati analitici e quindi, se il carico di lavoro ha un inserimento dei dati lento, questa compattazione potrebbe comportare prestazioni di query migliori
Garanzia transazionale
È importante notare che il partizionamento personalizzato garantisce la garanzia transazionale completa. Il percorso della query non viene bloccato mentre l'esecuzione del partizionamento è in corso. Ogni esecuzione di query legge i dati partizionati dall'ultimo partizionamento riuscito. Legge i dati più recenti dall'archivio analitico, che assicura che le query restituiscono sempre i dati più recenti disponibili quando si usa l'archivio partizionato.
Sicurezza
Se sono stati configurati endpoint privati gestiti per l'archivio analitico, per garantire l'isolamento di rete per l'archivio partizionato, è consigliabile aggiungere anche endpoint privati gestiti per l'archivio partizionato. L'archivio partizionato è l'account di archiviazione primario associato all'area di lavoro Synapse.
Analogamente, se sono state configurate chiavi gestite dal cliente nell'archivio analitico, è necessario abilitarlo direttamente nell'account di archiviazione primario dell'area di lavoro Synapse, ovvero l'archivio partizionato, nonché.
Strategie di partizionamento
È possibile usare una o più chiavi di partizione per i dati analitici. Se si usano più chiavi di partizione, di seguito sono riportati alcuni consigli su come partizionare i dati:
Uso di chiavi composte:
Si supponga di voler eseguire spesso query in base a Key1 e Key2.
Ad esempio, "Query per tutti i record in cui ReadDate = '2021-10-08' e Location = 'Sydney'".
In questo caso, l'uso di chiavi composte sarà più efficiente, per cercare tutti i record corrispondenti a ReadDate e ai record che corrispondono alla posizione all'interno di ReadDate.
Opzioni di configurazione di esempio:
.option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \ .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
A questo punto, nell'archivio partizionato in precedenza, se si vuole eseguire una query solo in base al filtro "Location":
- È possibile eseguire una query direttamente nell'archivio analitico. L'archivio partizionato analizza prima tutti i record di ReadDate e quindi in base alla posizione. Quindi, a seconda del carico di lavoro e della cardinalità dei dati analitici, è possibile ottenere risultati migliori eseguendo una query diretta sull'archivio analitico.
- È anche possibile eseguire un altro processo di partizione per partizionare anche in base a 'Posizione' nello stesso archivio partizionato.
Uso di più chiavi separatamente:
Si supponga di voler eseguire spesso query in base a "ReadDate" e altre volte, in base a "Location".
Ad esempio,
- Eseguire query per tutti i record in cui ReadDate = '2021-10-08'
- Eseguire una query per tutti i record in cui Location = 'Sydney'
Eseguire due processi di partizione con chiavi di partizione definite di seguito per questo scenario:
Processo 1:
.option("spark.cosmos.asns.partition.keys", "ReadDate String") \ .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
Processo 2:
.option("spark.cosmos.asns.partition.keys", "Location String") \ .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
Si noti che non è efficiente eseguire una query spesso in base ai filtri "ReadDate" e "Location" insieme, al di sopra del partizionamento. Le chiavi composte offrono prestazioni di query migliori in questo caso.
Limitazioni
Il partizionamento personalizzato è disponibile solo per Azure Synapse Spark. Il partizionamento personalizzato non è attualmente supportato per i pool SQL serverless.
Attualmente l'archivio partizionato può puntare solo all'account di archiviazione primario associato all'area di lavoro Synapse. La selezione di account di archiviazione personalizzati non è supportata a questo punto.
Il partizionamento personalizzato è disponibile solo per l'API per NoSQL in Azure Cosmos DB. L'API per MongoDB, Gremlin e Cassandra non sono supportate in questo momento.
Prezzi
Oltre ai prezzi del collegamento Azure Synapse, verranno addebitati gli addebiti seguenti quando si usa il partizionamento personalizzato:
Quando si eseguono processi di partizionamento nell'archivio analitico, vengono fatturati i pool di Apache Spark di Synapse.
I dati partizionati vengono archiviati nell'account Azure Data Lake Storage Gen2 primario associato all'area di lavoro Azure Synapse Analytics. Verranno addebitati i costi associati all'uso dell'archiviazione e delle transazioni ADLS Gen2. Questi costi sono determinati dall'archiviazione richiesta dai dati analitici partizionati e dai dati elaborati rispettivamente per le query analitiche in Synapse. Per altre informazioni sui prezzi, visitare la pagina Azure Data Lake Storage prezzi.
Domande frequenti
Con quale frequenza è necessario eseguire il processo di partizionamento personalizzato?
Esistono diversi fattori, ad esempio il volume di dati incrementale, i requisiti di latenza delle query e così via. che determinano la frequenza con cui è possibile eseguire il processo di partizionamento personalizzato. Può essere eseguito una volta al giorno o una volta ogni poche ore. È possibile pianificare più spesso il processo di partizionamento se il volume di dati in ingresso è elevato e la latenza di query prevista è bassa. È anche necessario innanzitutto accumulare dati incrementali nell'archivio analitico per rendere effettiva l'eliminazione della partizione.
I risultati della query includono i dati più recenti mentre è in corso l'esecuzione del processo di partizionamento?
Sì, il partizionamento personalizzato offre una garanzia transazionale completa. Pertanto, i risultati della query in qualsiasi momento combinano i dati partizionati esistenti con i dati della parte finale che restituiscono il set di dati dell'archivio analitico più recente.
Il partizionamento personalizzato può usare l'autenticazione del servizio collegato in Azure Synapse Analytics?
Sì, l'autenticazione del servizio collegato può essere usata per il partizionamento dell'archivio analitico.
È possibile modificare la chiave di partizione per un determinato contenitore in un secondo momento?
Sì, la chiave di partizione per il contenitore specificato può essere modificata e la nuova definizione della chiave di partizione creerà un nuovo archivio partizionato.
Nota
La definizione della chiave di partizione fa parte del percorso dell'archivio partizionato.
Le chiavi di partizione diverse possono puntare allo stesso BasePath?
Sì, è possibile specificare più chiavi di partizione nello stesso archivio partizionato come indicato di seguito:
.option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
Passaggi successivi
Per altre informazioni, vedere la documentazione seguente:
- Configurare il partizionamento personalizzato per partizionare i dati dell'archivio analitico.
- Collegamento ad Azure Synapse per Azure Cosmos DB
- Panoramica dell'archivio analitico di Azure Cosmos DB
- Introduzione a Collegamento ad Azure Synapse per Azure Cosmos DB
- Domande frequenti su Collegamento ad Azure Synapse per Azure Cosmos DB
- Casi d'uso di Collegamento ad Azure Synapse per Azure Cosmos DB