2013-07-10 14 views
8

Sono nuovo ai grafici e molto interessante. Questa domanda potrebbe essere noob one, ma si prega di inserire alcuni buoni materiali.Come archiviare i dati del grafico in un database?

Sto cercando di creare un piccolo social network in cui ogni utente è un nodo e ha una connessione non diretta con il suo amico.

Funziona bene ma ora voglio memorizzarlo in un database.

Come posso memorizzare i dati? Come memorizzare tutti i nodi collegati (puntatore) di un nodo.

È meglio eliminare la memoria dopo che l'utente ha effettuato il logout e letto dal database quando esegue l'accesso o deve effettuare l'accesso e la disconnessione non deve avere alcun impatto sul nodo?

So che è teorico. Qualsiasi riferimento sarà davvero utile.

risposta

2

Inizio in basso.

È meglio eliminare la memoria dopo che l'utente ha effettuato il logout e letto dal database quando esegue l'accesso o deve effettuare l'accesso e la disconnessione non dovrebbe avere alcun impatto sul nodo?

Avrete bisogno di una sorta di memoria permanente, oppure perdete tutti i dati acquisiti al primo arresto/riavvio che potrebbero turbare un po 'gli utenti.

Come posso memorizzare i dati? Beh, senza saperne di più su questo è difficile tuttavia supponendo che tu abbia un elenco di utenti e ogni utente possa avere 0 o più amici, allora andrei con 2 tabelle.

  • Utenti - memorizza tutte le informazioni dell'utente, come nome utente e password
  • UsersFriends * - Conservare tutti i rapporti in un UserID -> moda UserID *

Esempio

Tabella utenti

UserID Username 
1  user2511713 
2  abstracthchaos 
3  anotheruser 

UsersFriends

UserID FriendUserID 
1   3 
2   3 
1   2 

Mezzi user2511713 è diventato amico di anotheruser & abstracthchaos e abstracthchaos amici con anotheruser, dipende dalla vostra logica di business può anche essere utile per implicare il contrario tale che 3 1 is the same as 1 3

+1

Se lo faccio (seconda tabella) allora che cosa è l'uso di graph.It riduce tutto poi giù per la efficiecny del mio database non è la struttura dati che sto usando – user2511713

8

Utilizzare un database grafico reale per memorizzare i dati.

http://www.neo4j.org/

è possibile memorizzare coppie chiave/valore in un nodo e si può anche memorizzare spigoli che collegano i nodi.

Quindi è possibile utilizzare qualcosa come Gremlin per interrogare/attraversare il grafico - https://github.com/tinkerpop/gremlin. Vedere la loro documentazione per scaricare esempi ed eseguire query di esempio: https://github.com/tinkerpop/gremlin/wiki/Getting-Started

Un'idea della sintassi:

gremlin> // lets only take 'knows' labeled edges 
gremlin> v.out('knows') 
==>v[2] 
==>v[4] 
gremlin> // lets do a traversal from the '1' marko vertex to its outgoing edges. 
gremlin> // in the property graph world, edges are first class citizens that can be traversed to. 
gremlin> v.outE 
==>e[7][1-knows->2] 
==>e[9][1-created->3] 
==>e[8][1-knows->4] 
Problemi correlati