Spanner Graph è una funzionalità di Spanner e Spanner Omni che consente di creare ed eseguire query sui grafi delle proprietà utilizzando un database di grafi direttamente in Spanner. Spanner Graph combina la scalabilità e l'affidabilità di Spanner con la potenza della modellazione e delle query dei grafi.
I grafi delle proprietà modellano i dati come nodi (entità) e archi (relazioni tra entità), entrambi possono avere proprietà (etichette e metadati). Ciò è particolarmente utile per dati complessi e altamente connessi come social network, rilevamento di frodi e motori per suggerimenti.
Gli argomenti di questo documento si applicano a Spanner Omni nello stesso modo in cui si applicano a Spanner.
Configura ed esegui query su Spanner Graph
Per iniziare a utilizzare Spanner Graph, devi prima creare un deployment e un database Spanner Omni. Dopo aver creato il database, definisci uno schema del grafico delle proprietà che mappa le tabelle Spanner Omni esistenti ai nodi e agli archi del grafico.
Dopo aver configurato lo schema e inserito i dati nelle tabelle sottostanti, puoi eseguire query grafiche utilizzando Graph Query Language (GQL), un'estensione di GoogleSQL che implementa lo standard ISO GQL. Per saperne di più, consulta la sezione Configura ed esegui query su Spanner Graph nella documentazione di Spanner.
Panoramica dello schema di Spanner Graph
Lo schema di Spanner Graph interpreta i tuoi dati relazionali come un grafo. Lo schema specifica le tabelle dei nodi e degli archi che compongono il grafico. Ogni tabella mappa le righe di una tabella Spanner agli elementi del grafico. Gli elementi possono avere etichette per classificarli e proprietà per memorizzare gli attributi. Per ulteriori informazioni, consulta la sezione Panoramica dello schema nella documentazione di Spanner.
Crea e gestisci uno schema Spanner Graph
Utilizzi le istruzioni DDL (Data Definition Language) per creare, aggiornare o eliminare la definizione del grafico delle proprietà. L'istruzione CREATE PROPERTY GRAPH definisce
il grafico, specificando le tabelle, le chiavi e le etichette sottostanti. Per saperne di più, consulta Creare e gestire uno schema di Spanner Graph nella documentazione di Spanner.
Best practice per la progettazione di uno schema
Una progettazione efficiente dello schema è fondamentale per il rendimento. Ecco alcune best practice:
Utilizzo dell'interleaving per collocare gli archi con i relativi nodi di origine.
Utilizzo di vincoli referenziali (chiavi esterne) per garantire l'integrità del grafico.
Creazione di indici secondari sulle proprietà filtrate di frequente.
Scelta tra schemi schematizzati e senza schema in base ai pattern delle query.
Per saperne di più, consulta la sezione Best practice per la progettazione di uno schema nella documentazione di Spanner.
Utilizza le viste SQL per creare un grafico delle proprietà
Puoi utilizzare le viste SQL per definire i nodi e gli archi del grafico. Per scoprire le differenze tra l'utilizzo di una vista SQL e di una tabella per creare un grafico, consulta Vantaggi della creazione di grafici con viste anziché tabelle nella documentazione di Spanner.
Panoramica dei grafici creati dalle viste SQL
L'utilizzo delle viste come livello di astrazione fornisce un controllo dell'accesso dell'accesso a livello di riga, trasformazioni flessibili dei dati e una transizione più fluida dai modelli di dati senza schema a quelli formalizzati. Per saperne di più, vedi Panoramica dei grafici creati dalle viste SQL.
Crea un grafico dalle viste SQL
Per creare un grafico dalle viste, definisci le viste utilizzando SQL standard. Poi,
fai riferimento a questi termini nelle clausole NODE TABLES o EDGE TABLES della tua
dichiarazione CREATE PROPERTY GRAPH. Devi definire esplicitamente un KEY per ogni
elemento basato sulle visualizzazioni. La clausola KEY specifica le colonne della vista di origine
che identificano in modo univoco ogni elemento del grafico. Per saperne di più, consulta Creare un grafico dalle viste SQL nella documentazione di Spanner.
Gestisci i dati di Spanner Graph
Gestisci i dati in Spanner Graph modificando le tabelle sottostanti che definiscono il grafico. Per saperne di più, consulta Gestisci i dati di Spanner Graph nella documentazione di Spanner.
| Operazione | Descrizione |
|---|---|
| Inserisci | Aggiungi nuove righe alle tabelle dei nodi e degli archi utilizzando istruzioni INSERT o API di mutazione. |
| Aggiorna | Modifica le proprietà esistenti aggiornando le colonne corrispondenti nelle tabelle sottostanti. |
| Elimina | Rimuovi nodi o archi eliminando le righe corrispondenti. Utilizza ON DELETE CASCADE per rimuovere automaticamente gli archi associati quando elimini un nodo. |
Query Spanner Graph
Spanner Graph supporta Graph Query Language (GQL) per le query per attraversare e analizzare i dati del grafico.
Panoramica delle query
Le query sui grafi utilizzano la clausola GRAPH per specificare il grafo di destinazione e la clausola MATCH
per definire i pattern che vuoi trovare. Puoi restituire le proprietà di nodi e archi
o eseguire aggregazioni sui risultati. Per saperne di più, consulta la
Panoramica delle query nella
documentazione di Spanner.
Utilizzare i percorsi
I percorsi rappresentano sequenze di nodi e archi nel grafico. Puoi trovare tutti i
percorsi tra due nodi, trovare il percorso più breve o filtrare i percorsi in base alle loro
proprietà o alla loro lunghezza utilizzando funzioni come PATH_LENGTH(), NODES() e
EDGES(). Per saperne di più, consulta Utilizzare i percorsi nella documentazione di Spanner.
Best practice per l'ottimizzazione delle query
Per ottimizzare le query del grafico:
Inizia le traversie dai nodi con cardinalità inferiore.
Specifica in modo esplicito le etichette per tutti i pattern di nodi e archi.
Utilizza la funzione
IS_FIRST()per limitare il numero di archi attraversati dai super nodi con cardinalità elevata.
Per saperne di più, consulta la sezione Best practice per l'ottimizzazione delle query nella documentazione di Spanner.
Utilizzare la ricerca a testo intero con Spanner Graph
Spanner Graph si integra con le funzionalità di ricerca a testo intero di Spanner, che ti consentono di cercare nodi o archi in base a proprietà di testo non strutturato utilizzando la funzione SEARCH(). Per saperne di più, consulta Utilizzare la ricerca full-text con Spanner Graph nella documentazione di Spanner.
Utilizzare la ricerca vettoriale con Spanner Graph
Puoi eseguire ricerche di similarità vettoriale sui dati del grafico per trovare i K-Nearest Neighbors (KNN) o gli Approximate Nearest Neighbors (ANN). Questa funzionalità è utile per i suggerimenti basati sulla somiglianza e le applicazioni basate sull'AI. Per saperne di più, consulta Utilizzare la ricerca vettoriale con Spanner Graph nella documentazione di Spanner.
Gestisci i dati senza schema con Spanner Graph
Per le applicazioni con modelli di dati in evoluzione, Spanner Graph
supporta la gestione dei dati senza schema. Puoi archiviare tutti i nodi e gli archi in
tabelle singole e generiche con colonne JSON per le proprietà, il che ti consente di aggiungere
nuovi tipi e attributi senza modifiche DDL. Per saperne di più, consulta
Gestire i dati senza schema con Spanner Graph
nella documentazione di Spanner.
Esegui la migrazione a Spanner Graph
Puoi eseguire la migrazione dei dati del grafico esistenti da altri database a Spanner Graph. Questo processo in genere prevede l'esportazione dei dati come file CSV o JSON e la loro importazione nelle tabelle Spanner che supportano il nuovo grafico delle proprietà. Per saperne di più, consulta Eseguire la migrazione dei dati a Spanner Graph nella documentazione di Spanner.
Riferimento a Spanner Graph per gli utenti di openCypher
Se hai esperienza con openCypher, l'implementazione di GQL in
Spanner Graph ti sembrerà familiare, ma ci sono alcune differenze di sintassi.
Questo riferimento ti aiuta a mappare i concetti e le query openCypher alla semantica di
Spanner Graph MATCH e RETURN. Per saperne di più, consulta Riferimento a Spanner Graph per gli utenti di openCypher nella documentazione di Spanner.
Risolvere i problemi di Spanner Graph
I problemi comuni in Spanner Graph includono violazioni dell'integrità referenziale (archi sospesi) e query a esecuzione lenta. La risoluzione dei problemi prevede l'ispezione delle definizioni dello schema, il controllo di nodi o archi mancanti e l'utilizzo dei piani di query per identificare i colli di bottiglia delle prestazioni. Per saperne di più, consulta la sezione Risoluzione dei problemi relativi a Spanner Graph nella documentazione di Spanner.