PathFinder: A unified approach for handling paths in graph query languages
Questo articolo introduce PathFinder, un approccio unificato e altamente efficiente per l'elaborazione di query di percorso nei moderni linguaggi di grafo che sfrutta una rappresentazione compatta dei percorsi e un'esecuzione in pipeline per ottenere prestazioni stabili e superare i motori di grafo esistenti di un ordine di grandezza.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immagina di esplorare una massiccia, magica città chiamata Graph City. In questa città, ogni persona è un edificio (un nodo) e ogni relazione tra loro è una strada (un arco) con un segnale specifico sopra, come "segue", "vive" o "lavora".
Per anni, le sue guide turistiche (i vecchi motori di database) hanno avuto una regola strana: se chiedevi, "Mostrami tutti i modi in cui posso andare da Joe alla Torre Eiffel prendendo solo strade 'segue'", la guida si limitava a indicare e dire: "Ok, puoi arrivarci!", e si fermava. Ti davano la destinazione, ma non ti mostravano la mappa del viaggio.
Questo è un problema per i detective. Se stai cercando di risolvere un mistero (come individuare il riciclaggio di denaro o tracciare un rumor), non vuoi solo sapere chi è connesso; hai bisogno di vedere l'intero percorso che hanno fatto. Ci sono andati direttamente? Ci hanno girato intorno tre volte? Hanno preso una scorciatoia?
Entra in scena PathFinder, una nuova guida super intelligente costruita da Benjamín, Wim, Carlos e Domagoj. Questo articolo presenta PathFinder, la prima guida che non solo può dirti chi è connesso, ma può anche consegnarti la mappa esatta di ogni possibile percorso, non importa quanto complicate siano le regole.
La magia del "Grafo Prodotto"
Come fa PathFinder a non perdersi in un labirinto? Immagina di avere una mappa regolare della città e di avere anche una piccola, magica lista di controllo (un automa) che dice: "Devi prendere una strada 'segue', poi un'altra strada 'segue', poi una strada 'lavora'".
PathFinder non si limita a camminare per la città; costruisce una città ombra (chiamata Grafo Prodotto) dove ogni edificio è una combinazione di un edificio della città reale e un passaggio della lista di controllo.
- Se sei a "Joe" e hai compiuto zero passi, sei a
(Joe, Passo 0). - Se prendi una strada "segue" verso "Paul", ti sposti a
(Paul, Passo 1).
Camminando attraverso questa città ombra, PathFinder può vedere istantaneamente quali percorsi corrispondono alla tua lista di controllo. È come avere un GPS che illumina solo le strade su cui ti è permesso guidare, ignorando il resto.
I 27 modi per camminare
L'articolo spiega che ci sono 27 regole diverse (chiamate "modi") per come puoi camminare attraverso Graph City. PathFinder è il primo motore in grado di gestire tutte le 27. Ecco alcuni dei gusti:
- WALK (Camminata): Puoi andare ovunque, anche se cammini in cerchio o visiti la stessa casa due volte. (Questo è il più facile, ma può portare a loop infiniti!).
- TRAIL (Sentiero): Puoi visitare la stessa casa due volte, ma non puoi percorrere la stessa strada due volte.
- SIMPLE (Semplice): Non puoi visitare la stessa casa due volte (a meno che tu non parta e finisca nello stesso posto). Questa è la regola più difficile da seguire perché il numero di percorsi possibili può esplodere.
- ANY SHORTEST (Qualsiasi il più breve): Dammi solo uno dei percorsi più veloci.
- ALL SHORTEST (Tutti i più brevi): Dammi ogni singolo percorso che sia il più veloce.
- SHORTEST k GROUPS (Gruppi k più brevi): Dammi i percorsi più veloci, poi il secondo gruppo di percorsi più veloci, e così via fino a gruppi.
Gli autori dimostrano che, sebbene alcune di queste regole (come trovare un percorso "Semplice") siano teoricamente molto difficili — così difficili che i computer di solito si arrendono su mappe enormi — PathFinder le gestisce sorprendentemente bene nel mondo reale.
Il problema dell' "Infinite Loop" (Ciclo Infinito)
Un grande mal di testa in Graph City è che se c'è un ciclo (come Joe segue Paul, e Paul segue Joe), potresti camminare intorno a quel ciclo per sempre. Se chiedi "tutte le camminate", la risposta è infinita!
Per risolvere questo, gli standard GQL e SQL/PGQ (i libri delle regole per questi linguaggi) ti permettono di scegliere una modalità come "Simple" o "Trail" per fermare i loop infiniti. PathFinder rispetta perfettamente queste regole. Sa esattamente quando smettere di esplorare un percorso in modo da non rimanere intrappolato in un cerchio infinito, pur trovando tutti i percorsi validi che hai richiesto.
Il test di velocità: PathFinder contro gli altri
Gli autori non si sono limitati a costruire PathFinder; l'hanno messa alla prova contro i grandi nomi del settore: Neo4j, Nebula, Kuzu, Jena, Blazegraph e Virtuoso.
Hanno eseguito test su tre diversi scenari:
- Pokec: Una rete sociale di medie dimensioni con 1,6 milioni di persone e 30 milioni di connessioni.
- Wikidata: Un gigantesco grafo di conoscenza del mondo reale con 364 milioni di nodi e 1,257 miliardi di archi.
- Diamond: Un grafo matematicamente costruito, complicato, progettato per avere un numero esponenziale di percorsi (specificamente, percorsi).
I Risultati:
- Velocità: PathFinder è stato da 10 a 100 volte più veloce degli altri motori in quasi tutti i test.
- Stabilità: Mentre gli altri motori iniziavano a crashare o a dare timeout (arrendersi) quando i percorsi diventavano più lunghi o complessi, PathFinder ha continuato a procedere con costanza.
- La sorpresa dell' "Intratabile": Per le modalità "Simple" e "Trail", la teoria dice che il computer dovrebbe impiegare un tempo infinito per trovare la risposta. Ma nei test del mondo reale (come su Wikidata), PathFinder ha trovato 100.000 percorsi rapidamente. Gli autori suggeriscono che ciò sia dovuto al fatto che i dati del mondo reale non presentano solitamente la specifica "tempesta perfetta" di connessioni che fa esplodere la matematica.
Cosa NON fa PathFinder (ancora)
È importante sapere cosa questo articolo non afferma:
- Non dice che PathFinder sia magico. Se chiedi ogni singolo percorso in un grafo con cicli, la risposta è comunque infinita, e nessun computer può stamparla. PathFinder si limita a fermarsi a un limite che hai impostato (come 100.000 risultati).
- Non sostiene di aver risolto il problema del "Simple Path" per tutti i possibili grafi. L'articolo ammette che, negli scenari teorici peggiori, trovare un percorso semplice è ancora NP-completo (un modo elegante per dire "computazionalmente molto difficile"). PathFinder funziona semplicemente meglio di tutti gli altri sui grafi che usiamo realmente nella vita quotidiana.
- Non sostiene di aver risolto la modalità "Simple" per RDF (un tipo specifico di formato dati) ancora. Gli autori dicono di non aver implementato la modalità "Trail" per RDF perché non è chiaro come definire un "sentiero" quando gli archi non hanno nomi univoci.
In sintesi
PathFinder è un nuovo motore che agisce come una guida turistica potenziata. Può prendere un insieme complesso di regole (come "Trova tutti i percorsi da Joe a ENS Paris che seguono il pattern 'segue' poi 'lavora'") e restituire le mappe effettive di quei viaggi.
Gli autori hanno misurato questo su dati reali e hanno scoperto che PathFinder è significativamente più veloce e stabile rispetto agli attuali motori di database a grafi di alto livello. Hanno persino dimostrato che può essere aggiunto ai sistemi esistenti (come i motori SPARQL) per dare loro questo nuovo superpotere. Sebbene la matematica dica che alcuni di questi compiti dovrebbero essere impossibili da eseguire rapidamente, nel disordinato mondo reale, PathFinder dimostra che può essere fatto con una velocità straordinaria.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.