Spanner Graph è una funzionalità di Spanner e Spanner Omni che ti consente di creare ed eseguire query su grafi di 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 di grafi.
I grafi di proprietà modellano i dati come nodi (entità) e archi (relazioni tra entità), entrambi possono avere proprietà (etichette e metadati). Questa funzionalità è particolarmente utile per dati complessi e altamente connessi come social network, rilevamento delle frodi e motori di consigli.
Gli argomenti trattati in 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 di grafo di proprietà che mappa le tabelle Spanner Omni esistenti ai nodi e agli archi del grafo.
Dopo aver configurato lo schema e inserito i dati nelle tabelle sottostanti, puoi eseguire query di grafi utilizzando Graph Query Language (GQL), un'estensione di GoogleSQL che implementa lo standard ISO GQL. Per saperne di più, consulta Configurare ed eseguire query su Spanner Graph nella documentazione di Spanner.
Panoramica dello schema di Spanner Graph
Lo schema di Spanner Graph interpreta i dati relazionali come un grafo. Lo schema specifica le tabelle dei nodi e le tabelle degli archi che compongono il grafo. Ogni tabella mappa le righe di una tabella Spanner agli elementi del grafo. Gli elementi possono avere etichette per classificarli e proprietà per archiviare gli attributi. Per saperne di più, consulta Panoramica dello schema nella documentazione di Spanner.
Creare e gestire uno schema di Spanner Graph
Utilizza le istruzioni DDL (Data Definition Language) per creare, aggiornare o eliminare la definizione del grafo di proprietà. L'istruzione CREATE PROPERTY GRAPH definisce il grafo, 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 le prestazioni. Le best practice includono:
Utilizzare l'interleaving per collocare gli archi con i relativi nodi di origine.
Utilizzare vincoli referenziali (chiavi esterne) per garantire l'integrità del grafo.
Creare indici secondari sulle proprietà che vengono filtrate di frequente.
Scegliere tra progetti schematizzati e senza schema in base ai pattern di query.
Per saperne di più, consulta Best practice per la progettazione di uno schema nella documentazione di Spanner.
Utilizzare le viste SQL per creare un grafo di proprietà
Puoi utilizzare le viste SQL per definire i nodi e gli archi del grafo. Per scoprire le differenze tra l'utilizzo di una vista SQL e una tabella per creare un grafo, consulta Vantaggi della creazione di grafi con le viste anziché con le tabelle nella documentazione di Spanner.
Panoramica dei grafi creati da viste SQL
L'utilizzo delle viste come livello di astrazione fornisce il controllo 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ù, consulta Panoramica dei grafi creati da viste SQL.
Creare un grafo da viste SQL
Per creare un grafo dalle viste, definisci le viste utilizzando SQL standard. Poi, fai riferimento a queste nelle clausole NODE TABLES o EDGE TABLES dell'istruzione CREATE PROPERTY GRAPH. Devi definire esplicitamente una KEY per ogni elemento basato sulla vista. La clausola KEY specifica le colonne della vista di origine che identificano in modo univoco ogni elemento del grafo. Per saperne di più, consulta
Creare un grafo da viste SQL in
nella documentazione di Spanner.
Gestisci i dati di Spanner Graph
Gestisci i dati in Spanner Graph modificando le tabelle sottostanti che definiscono il grafo. Per saperne di più, consulta Gestire i dati di Spanner Graph nella documentazione di Spanner.
| Operazione | Descrizione |
|---|---|
| Inserisci | Aggiungi nuove righe alle tabelle dei nodi e degli archi utilizzando le istruzioni INSERT o le API di mutazione. |
| Aggiorna | Modifica le proprietà esistenti aggiornando le colonne corrispondenti nelle tabelle sottostanti. |
| Elimina | Rimuovi i nodi o gli archi eliminando le righe corrispondenti. Utilizza ON DELETE CASCADE per rimuovere automaticamente gli archi associati quando elimini un nodo. |
Query di Spanner Graph
Spanner Graph supporta Graph Query Language (GQL) per le query per attraversare e analizzare i dati del grafo.
Panoramica delle query
Le query di 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à dei nodi e degli archi o eseguire aggregazioni sui risultati. Per saperne di più, consulta
Panoramica delle query nella
documentazione di Spanner.
Utilizzare i percorsi
I percorsi rappresentano sequenze di nodi e archi nel grafo. 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 di grafi:
Inizia le traversate dai nodi con cardinalità inferiore.
Specifica esplicitamente le etichette per tutti i pattern di nodi e archi.
Utilizza la funzione
IS_FIRST()per limitare il numero di archi attraversati dai supernodi con cardinalità elevata.
Per saperne di più, consulta 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 alle proprietà di testo non strutturato utilizzando la funzione SEARCH(). Per saperne di più, consulta
Utilizzare la ricerca a testo intero con Spanner Graph
nella documentazione di Spanner.
Utilizzare la ricerca vettoriale con Spanner Graph
Puoi eseguire ricerche di similarità vettoriale sui dati del grafo per trovare i K-vicini più prossimi (KNN) o i vicini più prossimi approssimativi (ANN). Questa funzionalità è utile per i consigli basati sulla similarità e le applicazioni basate sull'AI. Per saperne di più, consulta Utilizzare la ricerca vettoriale con Spanner Graph nella documentazione di Spanner.
Gestire 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.
Eseguire la migrazione a Spanner Graph
Puoi eseguire la migrazione dei dati dei grafi esistenti da altri database a Spanner Graph. In genere, questa procedura prevede l'esportazione dei dati come file CSV o JSON e la loro importazione nelle tabelle Spanner che supportano il nuovo grafo di 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 sarà familiare, ma ci sono alcune differenze di sintassi.
Questo riferimento ti aiuta a mappare i concetti e le query di openCypher alla semantica MATCH e RETURN di Spanner Graph. 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, la verifica della presenza 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 Risolvere i problemi di Spanner Graph nella documentazione di Spanner.