Ciò che È riportato un Grafico Database, e per Cosa Viene Utilizzato?

0
172
Eduard Muzhevskyi/Shutterstock

Grafico basi di dati sono un particolare tipo di database per la memorizzazione di strutture di dati complesse, che sarebbe fattibile per memorizzare in un database relazionale tradizionale. Sono più utilizzato in particolare per le reti sociali, in quanto sono molto più performante, per alcune query.

Ciò che È riportato un Grafico Database?

Grafico database sono più comunemente utilizzati per altamente interconnessi dati, per le situazioni in cui il contenuto dei dati è meno grave rispetto alla struttura complessiva.

Il più semplice è il caso di utilizzo per i dati del grafico è per le reti sociali. Si consideri una rete di persone; ogni persona ha un elenco di amici e ha relazioni con altre persone. Ogni persona fa anche i post, spesso a centinaia. Ogni post può avere migliaia di persone, che interagiscono con esso. Così, nonostante il tweet solo 280 caratteri, c’è molto di più per memorizzare su di esso.

Questo certamente non è il solo caso d’uso, a più digeribile un grafico database sono utilizzati per tutti i tipi di cose. Un altro esempio è il rilevamento di frodi; dire che sei una banca, e si desidera bandiera conti sospetti. Potrebbe essere un po ‘ di pesce per due account separati per avere lo stesso indirizzo o condividere i numeri di telefono. Con un grafico di database, è possibile fare un grafico della connessione tra i due conti, e di identificare i problemi come questo in modo molto più efficiente di un database relazionale potrebbe mai fare.

In un grafico di database, ogni oggetto è chiamato nodo. Un nodo può avere un numero qualsiasi di proprietà, molto simile al funzionamento di un documento di database. Un database di documento sarebbe semplicemente memorizzare ogni nodo come un separato documento in una raccolta (array) di documenti, senza tener conto di come sono collegati.

In un grafico di database, le connessioni tra i nodi sono chiamati bordi, e si può collegare due nodi da qualsiasi punto della tabella. Bordi definire le relazioni tra i nodi, e possono avere tipi specifici. Per esempio, due amici vorresti essere collegato con gli “Amici” di edge, ma un utente potrebbe essere collegato a un post con un “Inviato” o “mi piace” di bordo.

Che Cosa Li Rende Più Veloce?

Non è che i database relazionali come MySQL non può immagazzinare il grafico di strutture simili—link come questi sono ancora concetti di base per le tabelle SQL. Link modulo di connessioni tra le tabelle, consentendo la memorizzazione di dati e aggiornati in tabelle separate, pur mantenendo un collegamento altrove nel database, molto simile a come puntatori lavoro in C. Nella rete sociale esempio, non si vuole memorizzare il nome di ogni amico un determinato utente è suo amico che può cambiare il loro nome, così invece di memorizzare l’amico ID, e quindi eseguire una ricerca ogni volta che avete bisogno di dati corretti. Forse si memorizza nella cache i risultati per prendere un carico di database, ma la maggior parte dei sistemi funzionano in modo simile a questo.

La memorizzazione di una serie di link (come un elenco di amici) va bene, ma il problema nasce quando si inizia a fare qualsiasi tipo di analisi complessa. Il classico esempio è il amici di amici di ricerca. Per ottenere un elenco di tutti coloro che hanno un amico in comune con la persona, si avrebbe bisogno di loop sopra la persona lista di amici, e poi un ciclo di sopra di ogni amico di amici di lista, e quindi eseguire una ricerca per ogni record. Hai anche avuto modo di assicurarsi che non stai tornando record duplicati, che è un ulteriore ciclo di.

Se si ha familiarità con la Notazione O Grande, si può vedere il problema già qui. Si tratta di un problema con complessità esponenziale; fare più cicli nidificati come questo si rompe il computer molto rapidamente. Inoltre, non è un modo intelligente per andare su questo problema.

Date un’occhiata a questo benchmark di neo4j esecuzione amici-di-amici query, rispetto ad un database relazionale (come MySQL):

Alla profondità di 2, si tratta di una semplice query per entrambi i database. Alla profondità di 3, MySQL diventa in grado di eseguire questa query in un normale periodo di tempo, l’assunzione di 30 secondi per restituire una risposta. A suo credito, non riesce a restituire la profondità 4 query dopo 25 minuti, anche se la profondità di 5 blocchi database.

Il grafico database non ha nessun problema di restituire qualsiasi di queste domande, con tutti i tempi di esecuzione in essere al di sotto di 2 secondi, rendendo migliaia di volte più veloce.

Come si fa? Molto complicato per la matematica, per lo più. I grafici sono una struttura matematica a cuore, e c’è un sacco di teoria dietro di esso, che stiamo completamente incompetenti a discutere in dettaglio. Ma relazionali grafici sono abbastanza semplici da capire visivamente, che rende il lavoro con il grafico di database, in pratica, facile.

Se si desidera iniziare a lavorare con uno, dovrete scegliere e installare un grafico database. Neo4j è gratuito e open source, e un’opzione molto popolare. AWS ha loro Nettuno database, che si può provare gratuitamente, ma deve host su AWS. Alcuni multi-modello di supporto dei database grafici come un’opzione, ad esempio Microsoft SQL Server, Oracle Database e ArrangoDB.