2012-04-22 4 views
5

Sto iniziando a lavorare con i database di grafici e nel mio team abbiamo iniziato a modellare un grafico per il nostro software. Il problema arriva quando proviamo a "documentare" il modello, a vedere la struttura del nostro database. Con i database SQL è sufficiente osservare lo schema SQL.Modellazione di Neo4j (o qualsiasi altro database di grafici)

Abbiamo passato un po 'di tempo a leggere blog e documentazione neo4j, ma abbiamo visto che il solito modo di mostrare come funziona un grafico è con un grafico minimale che mostra alcuni dati di esempio (campioni casuali: sample1, sample2, ecc.) . È fantastico per scopi didattici, ma ci piacerebbe essere in grado di farlo in un modo un po 'più formale. Vorremmo impostare quale tipo di nodo può relazionarsi con un altro e con quale tipo di relazione, quel tipo di cose.

Utilizzando Spring è possibile avvolgere il grafico con le classi, ma è molto specifico per il modello Java e OO e stiamo lavorando con Erlang. Stiamo cercando un qualche tipo di linguaggio formale (equivalente allo schema SQL), o un equivalente modello E-R, o qualcosa del genere.

risposta

2

Un modo per fare ciò è inserire il "meta-modello" del grafico (una rete di tipi) nel grafico e quindi connettere le istanze (nodi) al loro tipo di meta-modello. In questo modo è possibile visualizzare il meta-modello utilizzando la visualizzazione del grafico e allo stesso tempo utilizzare il meta-modello per imporre vincoli aggiuntivi (memorizzando le informazioni sui vincoli nel meta-modello e utilizzando ciò quando il modello attuale viene aggiornato) e utilizzare anche il digitare i nodi del meta-modello per accedere rapidamente a tutti i nodi di "istanza" di questo tipo.

Qual è il dominio che si desidera modellare?

+2

È solo un modello di social network generico (amici, post, risposte a post, foto, ecc.). Sarebbe bello se tu potessi mostrarmi un esempio di cosa stai parlando, io sono solo un principiante nel mondo grafico, e sono troppo attaccato al modello relazionale. :-) –

+1

Ma così facendo, non credi @Michael_Hunger, in un certo senso, generi dei supernodi? – Riduidel

+1

@Riduidel si lo farai –

0

Un'idea veloce: potresti utilizzare un sottoinsieme di UML? La modellazione grafica sembra essere più vicina al dominio, quindi forse è ragionevole.

Quello che facciamo è una generalizzazione dell'approccio "dati di esempio", in cui includiamo la cardinalità su ciascun lato di una relazione, nonché il tipo e la direzione. Includo spesso un nodo "tipo" nel diagramma (o altre specifiche del suo ruolo/relazione con i modelli di dominio) invece dei dati di esempio e, naturalmente, annoto le proprietà previste, i loro tipi e se sono facoltativi. È meno formale, ma finora ha funzionato bene.

+0

Potrebbe per favore collegarmi un campione un po 'più realistico della situazione di "A is friend of B", risolto nel modo in cui lo fai? Sarebbe di grande aiuto per noi, per sapere come le altre persone lavorano con i grafici. –