2009-07-21 13 views
20

C'è un po 'di hype around graph databases. Mi sto chiedendo perché.Hype attorno ai database di grafici ... perché?

Quali sono i possibili problemi che è possibile affrontare nell'ambiente web di oggi che è possibile risolvere utilizzando i database di grafici? E i database di grafi sono adatti per le applicazioni classiche, cioè può essere usato come rimpiazzo di un database relazionale? Quindi in realtà sono due domande in una.

correlati:Has anyone used Graph-based Databases (http://neo4j.org/)?

risposta

20

Molte rappresentazioni relazionali dei grafici non sono particolarmente efficienti per tutte le operazioni che si potrebbe desiderare di eseguire.

Ad esempio, se si desidera il set connesso di tutti i nodi in cui i bordi soddisfano un determinato predicato, a partire da un determinato nodo, non esiste un modo naturale in SQL per esprimere ciò. Probabilmente eseguirai una query per i bordi con il predicato, quindi dovrai escludere i bordi disconnessi localmente oppure avere una conversazione molto prolissa con il server del database seguendo una serie di collegamenti al successivo nelle query iterate.

I grafici non sostituiscono in generale i database relazionali. Gli RDB si occupano principalmente di insiemi (tabelle), mentre i grafici sono principalmente interessanti a causa della "forma" delle interconnessioni. Con i DB relazionali segui i link di una profondità predeterminata (un numero fisso di join) tra insiemi, con i risultati progressivamente filtrati e raggruppati, mentre i grafici sono di solito navigati verso profondità arbitrarie e definite in modo ricorsivo (cioè non un numero predeterminato di "join") . Puoi abusare di entrambi per abbinare le caratteristiche dell'altro, ma avranno diversi punti di forza.

+0

La chiusura transitoria potrebbe non essere parte dello standard SQL (ed è presumibilmente difficile da implementare nel caso generale, o più fornitori lo avrebbero eseguito) ma non è difficile da implementare per un'applicazione specifica utilizzando stored procedure. – finnw

+3

Di sicuro; ma dover scrivere query ad hoc come stored procedure può mettere un crimp nel tuo stile. –

+3

@finnw Il problema non è riuscire a farlo, i problemi sono l'efficienza e le prestazioni. Per ottenere buone prestazioni di lettura, è necessario sacrificare le prestazioni dell'inserto e sprecare molto spazio su disco. Questo articolo: http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx evidenzia come ciò può essere fatto utilizzando stored procedure per inserti e SQL comune per le letture. – nawroth

3

A mio parere, i siti di social network possono trarre vantaggio dai database di grafici poiché il grafico è un modo naturale di memorizzare le connessioni tra gli utenti.

2

Answwer a Q1: instradamento

Problemi correlati