Panoramica delle visualizzazioni

Questo argomento introduce e descrive le viste Spanner.

Panoramica

Una vista è una tabella virtuale definita da una query SQL. Quando crei una vista, specifica la query SQL che rappresenta. Dopo aver creato una vista, puoi eseguire query che fanno riferimento alla vista come se fosse una tabella.

Quando viene eseguita una query che fa riferimento a una vista, Spanner crea la tabella virtuale eseguendo la query definita nella vista, i cui contenuti vengono utilizzati dalla query di riferimento.

Poiché la query che definisce una vista viene eseguita ogni volta che viene eseguita una query che fa riferimento alla vista, a volte le viste vengono chiamate viste logiche o dinamiche per distinguerle dalle viste materializzate SQL, che memorizzano i risultati della query che definisce la vista come una tabella effettiva nello spazio di archiviazione dei dati.

In Spanner, puoi creare una visualizzazione come visualizzazione dei diritti dell'utente che invoca o come visualizzazione dei diritti del definitore. Sono i due tipi di modelli di sicurezza controllare l'accesso a una vista da parte degli utenti.

Visualizzazioni dei diritti dell'invokerVisualizzazioni diritti del definitore
Descrizione Se crei una vista con diritti dell'invocatore, un ruolo database deve privilegi relativi alla vista e a tutti gli oggetti dello schema visualizzati riferimenti per eseguire query sulla vista. Per ulteriori informazioni, vedi Visualizzazioni dei diritti dell'invoker. Se crei una vista con i diritti del definitore, un ruolo del database deve disporre di privilegi sulla vista (e solo sulla vista) per eseguire query sulla vista. Utilizza il controllo di accesso granulare insieme alla visualizzazione dei diritti del definitore, altrimenti la visualizzazione dei diritti del definitore non aggiunge alcun controllo di accesso aggiuntivo. Per maggiori informazioni, consulta la sezione Visualizzazioni dei diritti del definitore.
Autorizzazioni necessarie per creare la visualizzazione Per creare, concedere e revocare per entrambi i tipi di vista, devi avere il livello di database Autorizzazione spanner.database.updateDdl.
Privilegi necessari per eseguire query sulla vista Un ruolo del database richiede privilegi per la vista e tutti i relativi sottostanti oggetti schema per eseguire query sulla vista. Un ruolo di database richiede i privilegi relativi alla vista (e solo alla vista) per eseguire una query sulla vista.

Vantaggi delle visualizzazioni

Le viste offrono diversi vantaggi rispetto all'inclusione delle query definite nel della logica dell'applicazione.

  • Le viste possono fornire una modellazione logico dei dati alle applicazioni.

    A volte le scelte che hanno senso per la definizione del modello di dati fisico su Spanner non sono l'astrazione migliore per le applicazioni che leggono questi dati. Una vista può presentare uno schema di tabella alternativo che è un l'astrazione appropriata per le applicazioni.

  • Le viste centralizzano le definizioni delle query e quindi semplificano la manutenzione.

    Creando visualizzazioni per query complesse o di uso comune, puoi estrarre il testo delle query dalle applicazioni e centralizzarlo. In questo modo, la conservazione del testo della query aggiornamento delle applicazioni in modo molto più semplice e consente la revisione senza richiedere la modifica del codice dell'applicazione.

  • Le viste forniscono stabilità tra le modifiche allo schema.

    Perché la query che definisce una vista è archiviata nello schema del database della logica dell'applicazione, Spanner può garantire che modifiche allo schema degli oggetti (tabelle, colonne e così via) a cui fa riferimento la query non invalidano la query.

Casi d'uso comuni

Usa le viste quando il tuo database Spanner include privilegi elevati che non devono essere esposti a tutti gli utenti del database o se vuoi incapsulare i dati.

Se la tua vista non ha bisogno di funzionalità di sicurezza aggiuntive e di tutti gli attivatori della vista hanno accesso a tutti gli oggetti dello schema a cui fa riferimento, creano la vista dei diritti di un invocatore.

Se vuoi creare una vista in cui non tutti gli invocanti hanno accesso a tutti gli oggetti dello schema a cui fa riferimento la vista, crea una vista dei diritti del definitore. Le visualizzazioni dei diritti del definitore sono protette meglio e hanno più limitazioni perché l'amministratore del database può concedere a un numero inferiore di utenti i privilegi per le tabelle e le colonne a cui viene fatto riferimento nella visualizzazione. Le visualizzazioni dei diritti del definitore sono utili quando un utente necessita di un modo per accedere in modo sicuro a un sottoinsieme pertinente di un database Spanner. Ad esempio, potresti voler creare una vista dei diritti del definitore per seguenti dati:

  • Dati dell'account personale (ad es. cliente dell'applicazione).
  • Dati specifici per ruolo (ad es. personale RU, addetto alle vendite).
  • Dati specifici della località.

Visualizzazioni dei diritti dell'invoker

Se una vista possiede i diritti di un invocatore, significa che quando un utente, l'invoker, esegue una query sulla vista, Spanner controlla i privilegi dell'utente nella vista e su tutti gli oggetti dello schema a cui fa riferimento la vista. L'utente deve disporre dei privilegi su tutti gli oggetti dello schema per eseguire query sulla visualizzazione.

Visualizzazioni diritti del definitore

Una visualizzazione dei diritti di un definitore aggiunge funzionalità di sicurezza aggiuntive alla visualizzazione. it offre privilegi diversi per la vista e per gli oggetti schema sottostanti. Come per le viste diritti dell'invocatore, gli utenti devono disporre di autorizzazioni a livello di database per creare viste dei diritti del definitore. La differenza principale è che, quando un ruolo del database esegue una query sulla vista dei diritti di un definitore, Spanner verifica che il ruolo ha accesso alla vista stessa (e solo alla vista). Pertanto, anche se l'utente che esegue una query sulla vista non ha accesso a tutti i dati oggetti schema, possono accedere alla vista e vederne i contenuti. Diritti del definitore Le viste consentono agli utenti di accedere a dati aggiornati, limitati alle righe definite nella vista.

Le autorizzazioni IAM (Identity and Access Management) di Spanner vengono concesse a livello di database. Utilizza il controllo granulare dell'accesso insieme alla visualizzazione dei diritti del definitore, altrimenti la visualizzazione dei diritti del definitore non aggiunge alcun controllo dell'accesso aggiuntivo. Questo perché se l'utente dispone delle autorizzazioni di lettura sul database, dispone delle autorizzazioni di lettura su tutti gli oggetti dello schema nel database. Dopo aver configurato il controllo dell'accesso granulare nel database, gli utenti con il privilegio SELECT sulla vista e gli utenti con autorizzazioni a livello di database sul database possono eseguire query sulla vista. La è che l'utente con un controllo dell'accesso granulare non ha bisogno di privilegi sugli oggetti sottostanti.

Limitazioni delle visualizzazioni

Le visualizzazioni sono limitate rispetto alle tabelle effettive che le rendono inappropriate per determinati casi d'uso.

  • Le visualizzazioni sono di sola lettura. Non possono essere utilizzati per aggiungere, aggiornare o eliminare dati.

    Non puoi utilizzare le viste nelle istruzioni DML (INSERT, UPDATE, DELETE).

  • La query che definisce una vista non può utilizzare parametri di query.

  • Le visualizzazioni non possono essere indicizzate.

  • I riferimenti alle viste non possono utilizzare hint di tabella.

    Tuttavia, la query che definisce una vista può includere suggerimenti tabella nelle tabelle a cui fa riferimento.

  • Le visualizzazioni non sono supportate Lettura all'API Natural Language.

  • Le visualizzazioni dei diritti del definitore non sono supportate con Spanner Data Boost.

    L'esecuzione di una query che contiene una visualizzazione dei diritti di un definitore in Data Boost genera un errore.

  • La modalità query consigliata per l'accesso alla visualizzazione dei diritti di un definitore è in modalità NORMAL.

    Gli utenti che non hanno accesso agli oggetti dello schema sottostanti della vista dei diritti di un definitore ricevono un errore quando eseguono query in una modalità di query diversa da quella normale.

  • È possibile che un utente crei una query accurata che causa Spanner per generare un errore che mostra o rivela l'esistenza di dati non disponibili nella visualizzazione dei diritti del definitore.

    Ad esempio, supponiamo che ci sia la seguente visualizzazione punteggioQualificatoStudente restituisce i punteggi degli studenti che si qualificano per un corso. I criteri di idoneità si basano sul livello e sul punteggio dell'esame dello studente. Se il livello dello studente è pari o inferiore a 6, il punteggio è importante e lo studente deve ottenere almeno 50 punti all'esame per ottenere la certificazione. Altrimenti, per i livelli maggiore o uguale a sei, lo studente è idoneo per impostazione predefinita.

      CREATE VIEW QualifiedStudentScores
      SQL SECURITY DEFINER AS
      SELECT
        s.Name,
        s.Level,
        sc.Score
      FROM Students AS s
      JOIN Scores AS sc ON sc.StudentId = s.StudentId
      WHERE
      (CASE
        WHEN (s.Level < 6) OR (s.Level >= 6 AND sc.Score >= 50)
          THEN 'QUALIFIED';
        ELSE 'FAILED';
      END) = 'QUALIFIED';
    

    Un utente può eseguire una query sotto forma di SELECT * FROM QualifiedStudentScores s WHERE s.Level = 7 AND 1/(s.Score - 20) = 1;. Questa query potrebbe non riuscire con un errore di divisione per zero se uno studente del livello 7 ha ottenuto un punteggio di 20 punti, anche se la visualizzazione limita i dati a 50 punti o più per quel livello.

Prestazioni delle query con l'utilizzo delle viste

Una query che fa riferimento a una vista viene eseguita in modo paragonabile alla stessa query riferimento vista sostituito con la definizione della vista.

Quote e limiti che si applicano alle viste

  • Le Quote e limiti elenca la quota e il limite specifiche per le viste.

  • L'utilizzo di una vista in una query può influire sulla conformità della query a limiti di query perché la definizione della vista della query.

Impatto sui costi

L'utilizzo delle visualizzazioni ha un impatto molto minimo sul costo di un'istanza:

  • L'uso delle viste non influisce sulle esigenze di capacità di calcolo di una rispetto all'incorporamento del testo definito nelle query che farvi riferimento.

  • L'utilizzo delle visualizzazioni ha un impatto molto ridotto sullo spazio di archiviazione del database di un'istanza perché la tabella generata dall'esecuzione della definizione di query di una visualizzazione non viene salvata nello spazio di archiviazione del database permanente.

Passaggi successivi