Condividi tramite


Confrontare database a grafo e relazionali

Annotazioni

Questa funzionalità è attualmente disponibile in anteprima pubblica. Questa anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

In questo articolo vengono confrontati i database a grafo e i database relazionali, evidenziando le differenze principali, i casi d'uso e i vantaggi dell'analisi. È possibile valutare se usare Graph per Microsoft Fabric o un database relazionale in base alle esigenze specifiche.

Un database a grafo archivia ed esegue query sui dati come rete di nodi (entità) e archi (relazioni), rendendoli fondamentalmente diversi dal formato tabelle e righe dei database relazionali. I database a grafo eccelleno nella modellazione e nell'analisi dei dati altamente connessi, ad esempio social network, grafici delle conoscenze, sistemi di raccomandazione e rilevamento delle frodi.

Differenze principali

  • Database a grafo: Organizzare i dati come nodi e archi, archiviando le relazioni in modo esplicito. L'attraversamento delle connessioni è efficiente e spesso indipendente dalla dimensione totale del set di dati.
  • Database relazionali: Organizzare i dati in tabelle con righe e colonne. Le relazioni vengono dedotte in fase di query usando operazioni JOIN, che possono diventare complesse e lente per i dati altamente connessi.

Esecuzione di query sulle relazioni: join e attraversamenti

Query di database relazionali: I dati in tabelle diverse vengono collegati tramite chiavi esterne. Per recuperare i dati correlati, i database relazionali usano operazioni JOIN per combinare righe da più tabelle. Questo funziona bene per le relazioni semplici, ma può diventare costoso e complesso per le connessioni profonde o a lunghezza variabile.

Query di database a grafo: Le relazioni vengono salvate come archi, consentendo la navigazione diretta da un nodo a un altro. Le query graph possono spostarsi in modo efficiente tra più hop e modelli complessi. I linguaggi di query graph come GQL semplificano l'espressione di percorsi e modelli.

Esempio:

GQL:

MATCH (p:Person)-[:friendsWith]->(friend)-[:purchased]->(o:Order)
WHERE p.name = 'Alice';
RETURN o

SQL (equivalente):

SELECT o.*
FROM Person AS p
JOIN Friends_With AS fw ON p.id = fw.person_id
JOIN Person AS friend ON fw.friend_id = friend.id
JOIN Purchased AS pur ON friend.id = pur.person_id
JOIN "Order" AS o ON pur.order_id = o.id
WHERE p.name = 'Alice';

Annotazioni

GQL è un linguaggio di query standardizzato ISO per i database a grafo, progettato per eseguire query efficienti e manipolare dati strutturati a grafo. Lo stesso gruppo di lavoro internazionale che supervisiona SQL lo sta sviluppando.

Implicazioni sulle prestazioni

I database a grafo possono superare in prestazioni i sistemi relazionali per le query che coinvolgono molti archi o profondità sconosciute, in particolare per l'analisi di collegamenti profondi o le query ricorsive. I database relazionali eccellono nelle operazioni su insiemi e nelle aggregazioni grazie a decenni di ottimizzazione.

Considerazioni sul ridimensionamento

  • Database relazionali: In genere è possibile ridimensionare verticalmente (macchine più grandi) e ridimensionare orizzontalmente tramite partizionamento orizzontale e replica. Lo sharding di schemi altamente connessi è complesso e può comportare un sovraccarico tra reti.
  • Database a grafo: Ridimensionare verticalmente e orizzontalmente. I database a grafo distribuiti partizionano i grafi attraverso macchine, mirando a mantenere insieme i nodi connessi per traversal efficienti.

Quando usare ciascuno

Usare un database Graph se:

  • I tuoi dati sono altamente connessi e ricchi di relazioni (reti sociali, grafi della conoscenza, raccomandazioni).
  • È necessario attraversare un numero sconosciuto o variabile di hop.
  • Lo schema è in continua evoluzione o semistrutturato.
  • Si vuole una modellazione intuitiva per i domini in cui le relazioni sono centrali.

Usare un database relazionale se:

  • I dati sono principalmente tabulari o si adattano a una struttura ben definita.
  • Le tue query comportano aggregazioni pesanti o operazioni su set di grandi dimensioni.
  • Gli strumenti o le competenze esistenti sono allineati a SQL.

Approcci ibridi

Molti progetti usano entrambi: un database relazionale per i dati transazionali principali e un database a grafo per funzionalità specializzate di analisi o analisi di rete.