Share via


Viste materializzate in Azure Cosmos DB per 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. Questa 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 per le anteprime di Microsoft Azure.

Le viste materializzate, se definite, consentono di eseguire 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 visualizzazione materializzata viene compilata automaticamente in background. Questa vista può avere una chiave primaria diversa per ricerche efficienti. La vista conterrà anche solo colonne proiettate in modo esplicito dalla tabella di base. Questa vista sarà una tabella di sola lettura.

È possibile eseguire query in un archivio colonne senza specificare una chiave di partizione usando gli indici secondari. Tuttavia, la query non sarà efficace per le colonne con cardinalità elevata o bassa. La query può analizzare tutti i dati per un piccolo set di risultati. Tali query finiscono per 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 partizioni che altrimenti sarebbero costose query.
  • Specificare un predicato condizionale basato su SQL per popolare solo determinate colonne e dati che soddisfano la condizione preliminare.
  • Creare visualizzazioni in tempo reale che semplificano gli scenari basati su eventi che vengono comunemente archiviati come raccolte separate usando trigger del feed di modifiche.

Vantaggi delle viste materializzate

Le visualizzazioni materializzate presentano molti vantaggi che includono, ma non sono limitati a:

  • È possibile implementare la denormalizzazione lato server usando viste materializzate. Con la denormalizzazione lato server, è possibile evitare più tabelle indipendenti e 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 con che in genere implementa logica personalizzata per eseguire due scritture nella tabella di base e nella vista.
  • Le viste materializzate ottimizzano le prestazioni di lettura leggendo da una singola visualizzazione.
  • È possibile specificare la velocità effettiva per la vista materializzata in modo indipendente.
  • È possibile configurare un livello di generatore di viste materializzate per eseguire il mapping ai requisiti per idratare una visualizzazione.
  • Le viste materializzate migliorano le prestazioni di scrittura perché le operazioni di scrittura devono essere scritte solo nella tabella di base.
  • Inoltre, l'implementazione di Azure Cosmos DB di viste materializzate è basata su un modello di pull. Questa implementazione non influisce sulle prestazioni di scrittura.

Introduzione alle viste materializzate

Creare una nuova API per gli account Cassandra usando l'interfaccia della riga di comando di Azure per abilitare la funzionalità viste materializzate con un comando nativo o un'operazione API REST.

  1. Accedere al portale di Azure.

  2. Passare all'API per l'account Cassandra.

  3. Nel menu della risorsa selezionare Impostazioni.

  4. Nella sezione Impostazioni selezionare Vista materializzata per l'API Cassandra (anteprima).

  5. Nella nuova finestra di dialogo selezionare Abilita per abilitare questa funzionalità per questo account.

    Screenshot della funzionalità Viste materializzate abilitata nella portale di Azure.

dietro le quinte

L'API per Cassandra usa un livello di calcolo del generatore di viste materializzato per gestire le visualizzazioni.

Si ottiene la flessibilità necessaria per configurare le istanze di calcolo del generatore di visualizzazioni in base ai requisiti di latenza e ritardo per idratare le visualizzazioni. Dal punto di vista tecnico, questo livello di calcolo consente di gestire le connessioni tra partizioni in modo più efficiente anche quando le dimensioni dei dati sono elevate e il numero di partizioni è elevato.

I contenitori di calcolo vengono condivisi tra tutte le viste materializzate all'interno di un account Azure Cosmos DB. Ogni contenitore di calcolo di cui è stato effettuato il provisioning genera più attività che leggono il feed di modifiche dalle partizioni di tabella di base e scrive i dati nella vista materializzata di destinazione[s]. 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.

  1. Accedere al portale di Azure.

  2. Passare all'API per l'account Cassandra.

  3. Nel menu delle risorse selezionare Materialized Views Builder( Generatore viste materializzate).

  4. Nella pagina Materialized Views Builder configurare lo SKU e il numero di istanze per il generatore.

    Nota

    Questa opzione di menu della risorsa e la pagina verranno visualizzate solo quando la funzionalità Visualizzazioni materializzate è abilitata per l'account.

  5. Selezionare Salva.

Creare una vista materializzata

Dopo aver configurato l'account e Materialized View Builder, si dovrebbe essere in grado di creare viste materializzate usando CQLSH.

Nota

Se lo strumento CQLSH autonomo non è già installato, vedere Installare lo strumento CQLSH. È anche consigliabile aggiornare la stringa di connessione nello strumento.

Ecco alcuni comandi di esempio per creare una vista materializzata:

  1. Creare prima di tutto un nome uprofilekeyspace .

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Creare quindi 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);
    
  3. Creare ora una vista materializzata denominata user_by_bcity all'interno dello stesso keyspace. Specificare, usando 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);
    
  4. 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' 
        );
    
  5. Eseguire una query sulla vista materializzata.

    SELECT * FROM user_by_bcity; 
    
  6. Osservare l'output della 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.

Limitazioni correnti

Esistono alcune limitazioni con l'API per l'implementazione di anteprima di Cassandra di viste materializzate:

  • Non è possibile creare viste materializzate in una tabella esistente prima che il supporto per le viste materializzate sia stato abilitato nell'account. Per usare le viste materializzate, creare una nuova tabella dopo l'abilitazione della funzionalità.
  • Per la clausola della definizione della WHERE vista materializzata, sono attualmente consentiti solo IS NOT NULL i filtri.
  • Dopo la creazione di una vista materializzata in una tabella di base, ALTER TABLE ADD le operazioni non sono consentite nello schema della tabella di base. ALTER TABLE APP è consentito solo se nessuna delle viste materializzate è selezionata * nella relativa definizione.
  • Esistono limiti alle dimensioni della chiave di partizione (2 KB) e alla lunghezza totale delle dimensioni della chiave di clustering (1 KB). Se questo limite di dimensioni viene superato, il messaggio responsabile finirà nella coda dei messaggi non elaborabili.
  • Se una tabella di base include tipi definiti dall'utente (UDT) e la definizione di vista materializzata ha SELECT * FROM o ha il tipo definito dall'utente in una delle colonne proiettate, gli aggiornamenti definiti dall'utente non sono consentiti nell'account.
  • Le viste materializzate possono diventare incoerenti con la tabella di base per alcune righe dopo il failover automatico a livello di area. Per evitare questa 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 minore di core.

Oltre alle limitazioni precedenti, considerare le limitazioni aggiuntive seguenti:

  • Zone di disponibilità
    • Le visualizzazioni materializzate non possono essere abilitate in un account con aree abilitate per la zona di disponibilità.
    • L'aggiunta di una nuova area con una zona di disponibilità non è supportata una volta enableMaterializedViews impostata su 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 ricreare le viste materializzate. È quindi necessario configurare enableMaterializedViews nell'account ripristinato prima di creare nuovamente le viste materializzate e i generatori.
  • Apache Cassandra
    • La definizione dei criteri di risoluzione dei conflitti nelle visualizzazioni materializzate non è consentita.
    • Le operazioni di scrittura non sono consentite nelle viste materializzate.
    • Le query tra documenti e l'uso di funzioni di aggregazione non sono supportate nelle viste materializzate.
    • Non è possibile modificare lo schema di una vista materializzata dopo la creazione.
    • L'eliminazione della tabella di base non è consentita se ne è definita almeno una vista materializzata. Tutte le viste devono essere eliminate e quindi è possibile eliminare la tabella di base.
    • La definizione di viste materializzate nei contenitori con colonne statiche non è consentita.

Passaggi successivi