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.
fonte
2009-07-21 13:43:33
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
Di sicuro; ma dover scrivere query ad hoc come stored procedure può mettere un crimp nel tuo stile. –
@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