Viste materializzate in Azure Cosmos DB for Apache Cassandra (anteprima)
SI APPLICA A: Cassandra
Importante
Le viste materializzate in Azure Cosmos DB per Cassandra sono attualmente in anteprima. È possibile abilitare questa funzionalità usando il portale di Azure. L’anteprima delle viste materializzate viene fornita senza un contratto di servizio. Al momento, le viste materializzate non sono consigliate per i carichi di lavoro di produzione. Alcune funzionalità di questa anteprima potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per altre informazioni, vedere Condizioni per l'utilizzo supplementari di anteprime di Microsoft Azure.
Le viste materializzate, se definite, consentono di eseguire le query in modo efficiente su una tabella di base (o un contenitore in Azure Cosmos DB) con filtri che non sono chiavi primarie. Quando gli utenti scrivono nella tabella di base, la vista materializzata viene automaticamente compilata in background. La vista può avere una chiave primaria diversa per le ricerche efficienti. Inoltre la vista conterrà solo colonne proiettate in modo esplicito dalla tabella di base. Questa vista sarà una tabella di sola lettura.
È possibile eseguire query su un archivio colonne senza specificare una chiave di partizione e usando indici secondari. Tuttavia, la query non sarà efficace per le colonne con cardinalità elevata o bassa. La query potrebbe analizzare tutti i dati per un piccolo set di risultati. Tali query possono essere costose perché finiscono per essere inavvertitamente in esecuzione come query tra partizioni.
Con una Vista materializzata, è possibile:
- Usare come tabella di ricerca o mapping per rendere persistenti le analisi tra le partizioni che altrimenti sarebbero costose.
- Indicare un predicato condizionale basato su SQL per popolare solo determinati colonne e dati che soddisfano la condizione preliminare.
- Creare viste in tempo reale che semplificano gli scenari basati su eventi che vengono comunemente archiviati come raccolte separate usando i trigger del feed di modifiche.
Vantaggi delle viste materializzate
Le viste materializzate offrono molti vantaggi:
- Consentono di implementare la denormalizzazione lato server. La denormalizzazione lato server consente sia di evitare più tabelle indipendenti sia di eseguire una denormalizzazione complessa a livello di calcolo nelle applicazioni client.
- Le viste materializzate aggiornano automaticamente le viste per mantenerle coerenti con la tabella di base. Questo aggiornamento automatico astrae le responsabilità delle applicazioni client che in genere implementano logica personalizzata per eseguire operazioni di doppia scrittura nella tabella di base e nella vista.
- Le viste materializzate ottimizzano le prestazioni di lettura leggendo da una singola vista.
- È possibile specificare in modo indipendente la velocità effettiva per la vista materializzata.
- È possibile configurare un livello di generatore di viste materializzate per eseguire il mapping dei requisiti al fine di idratare una vista.
- Le viste materializzate migliorano le prestazioni di scrittura perché queste devono essere scritte solo nella tabella di base.
- Inoltre, l'implementazione delle viste materializzate di Azure Cosmos DB si basa su un modello pull. Questa implementazione non influisce sulle prestazioni di scrittura.
Attività iniziali con le viste materializzate
Creare nuovi account API per Cassandra usando l'interfaccia della riga di comando di Azure per abilitare la funzionalità viste materializzate con un comando nativo o con un'operazione API REST.
Accedere al portale di Azure.
Passare all'account API per Cassandra.
Nel menu della risorsa selezionare Impostazioni.
Nella sezione Impostazioni selezionare Vista materializzata per l'API Cassandra (anteprima).
Nella nuova finestra di dialogo selezionare Abilita per abilitare questa funzionalità per questo account.
Informazioni dettagliate
Per gestire le viste, l'API per Cassandra usa un livello di calcolo del generatore di viste materializzate.
In questo modo si ottiene la flessibilità necessaria per configurare le istanze di calcolo del generatore di viste in base ai requisiti di latenza e ritardo, per idratare le viste. Da un punto di vista tecnico, questo livello di calcolo consente di gestire le connessioni tra partizioni in modo più efficiente anche in caso di dimensioni dei dati imponenti e numero di partizioni elevato.
I contenitori di calcolo sono condivisi tra tutte le viste materializzate all'interno di un account Azure Cosmos DB. Ciascun contenitore di calcolo di cui è stato effettuato il provisioning genera più attività che leggono il feed di modifiche dalle partizioni della tabella di base e scrive i dati in una o più viste materializzate di destinazione. Il contenitore di calcolo trasforma i dati in base alla definizione della vista materializzata, per ogni vista materializzata nell'account.
Creare un generatore di viste materializzate
Creare un generatore di viste materializzate per trasformare automaticamente i dati e scrivere in una vista materializzata.
Accedere al portale di Azure.
Passare all'account API per Cassandra.
Nel menu risorsa selezionare Generatore viste materializzate.
Nella pagina Generatore viste materializzate configurare lo SKU e il numero delle istanze per il generatore.
Nota
Questa opzione e la pagina del menu risorsa verranno visualizzate solo se per l’account è abilitata la funzionalità Viste materializzate.
Seleziona Salva.
Creare una vista materializzata
Dopo aver configurato l'account e il generatore di viste materializzate, dovrebbe essere possibile creare le viste materializzate usando CQLSH.
Nota
Se non è già installato lo strumento CQLSH autonomo, vedere Installare lo strumento CQLSH. Inoltre è necessario aggiornare la stringa di connessione nello strumento.
Ecco alcuni comandi di esempio per creare una vista materializzata:
Creare prima di tutto un nome keyspace
uprofile
.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Quindi creare una tabella denominata
user
all'interno del keyspace.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Creare ora una vista materializzata denominata
user_by_bcity
, all'interno dello stesso keyspace. Indicare, con una query, il modo in cui i dati vengono proiettati nella vista dalla tabella di base.CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS SELECT user_id, user_name, user_bcity FROM uprofile.USER WHERE user_id IS NOT NULL AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
Inserire righe nella tabella di base.
INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 101, 'johnjoe', 'New York' ); INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 102, 'james', 'New York' );
Eseguire una query sulla vista materializzata.
SELECT * FROM user_by_bcity;
Osservare l'output dalla vista materializzata.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Facoltativamente, è anche possibile usare il provider di risorse per creare o aggiornare una vista materializzata.
- Creare o aggiornare una vista nell'API per Cassandra
- Ottenere una vista nell'API per Cassandra
- Elencare le viste nell'API per Cassandra
- Eliminare una vista nell'API per Cassandra
- Aggiornare la velocità effettiva di una vista nell'API per Cassandra
Limitazioni correnti
Esistono alcune limitazioni con l'API per l'implementazione di anteprima delle viste materializzate di Cassandra:
- Non è possibile creare viste materializzate in una tabella esistente prima di abilitare il supporto per le viste materializzate nell'account. Per usare le viste materializzate, creare una nuova tabella dopo l'abilitazione della funzionalità.
- Per la clausola
WHERE
di definizione della vista materializzata, sono attualmente consentiti solo i filtriIS NOT NULL
. - Dopo la creazione di una vista materializzata in una tabella di base, nello schema della tabella di base non sono consentite le operazioni
ALTER TABLE ADD
.ALTER TABLE APP
è consentito solo se nessuna delle viste materializzate è stata selezionata*
, nelle rispettive definizioni. - Vi sono dei limiti per le dimensioni della chiave di partizione (2 Kb) e per la lunghezza totale delle dimensioni della chiave di clustering (1 Kb). Se tale limite di dimensioni viene superato, il messaggio responsabile finirà nella coda dei messaggi non elaborabili.
- Se una tabella di base include i tipi definiti dall'utente (UDT) e la definizione della vista materializzata ha
SELECT * FROM
o ha l’UDT in una delle colonne proiettate, nell’account non saranno consentiti gli aggiornamenti dell’UDT. - Dopo il failover automatico a livello di area, le viste materializzate potrebbero diventare incoerenti con la tabella di base, per alcune righe. Per evitare tale incoerenza, ricompilare la vista materializzata dopo il failover.
- La creazione di istanze del generatore di viste materializzate con 32 core non è supportata. Se necessario, è possibile creare più istanze del generatore con un numero di core inferiore.
Oltre alle limitazioni precedenti, considerare quelle aggiuntive seguenti:
- Zone di disponibilità
- Le viste materializzate non possono essere abilitate in un account che dispone di aree abilitate per le zone di disponibilità.
- L'aggiunta di una nuova area con una zona di disponibilità non è supportata una volta che vi sia l’impostazione di
enableMaterializedViews
come true, nell'account.
- Backup e ripristino periodici
- Le viste materializzate non vengono ripristinate automaticamente con il processo di ripristino. Al termine del processo di ripristino, sarà necessario creare nuovamente le viste materializzate. Quindi, prima di creare di nuovo le viste materializzate e i generatori, è necessario configurare
enableMaterializedViews
nell'account ripristinato.
- Le viste materializzate non vengono ripristinate automaticamente con il processo di ripristino. Al termine del processo di ripristino, sarà necessario creare nuovamente le viste materializzate. Quindi, prima di creare di nuovo le viste materializzate e i generatori, è necessario configurare
- Apache Cassandra
- La definizione dei criteri di risoluzione dei conflitti nelle viste materializzate non è consentita.
- Le operazioni di scrittura non sono consentite nelle viste materializzate.
- Nelle viste materializzate l’uso delle query tra documenti e delle funzioni di aggregazione non è supportato.
- Non è possibile modificare lo schema di una vista materializzata dopo la creazione.
- L'eliminazione della tabella di base non è consentita se in questa è stata definita almeno una vista materializzata. Prima di poter eliminare la tabella di base è necessario eliminare prima tutte le viste materializzate.
- Non è consentito definire le viste materializzate nei contenitori con colonne statiche.