Please enable JavaScript.
Coggle requires JavaScript to display documents.
Neo4j (Caratteristiche importanti (Schema free, Supporta le proprietà ACID…
Neo4j
-
Database a grafo
Usa nodi, archi e proprietà per memorizzare i dati
-
-
Gli archi mantengono molte informazioni importanti e connessioni tra diversi nodi e tra nodi verso le loro proprietà
Vantaggi
-
Molto veloce per set di dati associativi, come i social network
-
-
Architettura
Livello fisico: disco o dischi che consentono di memorizzare le informazioni (anche se si tende a lasciare più informazioni possibili nella RAM). Più è veloce il disco rigido maggiori saranno le prestazioni
Cache
FileSystem: area RAM libera (si accede attraverso operazioni I/O mappato in memoria) dove vengono lasciate le informazioni da leggere/scrivere con molta frequenza.
Object: nodi e relazioni sono oggetti Java. E' possibile, dunque, configurare Heap e tipo di cache. Diversi tipi di cache: None, nessuna cache quindi nessun oggetto mantenuto nella cache;
Soft, ottimizzazione della memoria disponibile quindi ottime prestazioni di attraversamento dei nodi. Presenta il problema di sovraccarico e di garbage collection quando le parti del grafo sono grandi;
Weak: ciclo di vita breve agli oggetti nella cache. Utile per le app con alto throughput
Strong: i dati vengono caricati in memoria e li restano. Si può adottare su un numero piccolo di dati
HPC: prestazioni elevati (solo versione enterprise)
Transazioni
Supporta le proprietà ACID. E' prevista, quindi, il meccanismo di commit/rollback. Sono supportate grazie all'implementazione di un log delle transazioni di tipo write-ahead (WAL)
-
Componenti
-
Relazioni
Mettono in relazioni i nodi attraverso il tipo e indicano la direzione (verso sinistra (->), verso destra (<-) o entrambe le direzioni (-). Ha un nodo di partenza e uno di fine ed un tipo associato
-
Indicizzazione
Consente di trovare i nodi di partenza per cominciare l' “attraversamento” a partire da un nodo, e poi definire le regole per i risultati corrispondenti.
E' importante definire una strategia veloce di ricerca per le proprietà dei nodi che vengono in genere ricercate, in maniera da poter definire il nodo (o i nodi) di partenza senza dover prima esaminare tutti gli oggetti presenti nel nostro database a grafo.
Tre metodi
Manuale
Gli indici sono definiti per nome in modo tale che lo sviluppatore possa associare i dati indicizzati con un indice dal nome sensato. Lo sviluppatore ha la totale responsabilità di creare il record dell’indice, aggiornarlo e cancellarlo opportunamente. Questo approccio, pur avendo alcune potenzialità, non rappresenta la scelta preferibile.
A schema
Si appoggia al concetto di etichetta dei nodi e consente di creare automaticamente un indice per l’etichetta di un nodo e un insieme di proprietà. In presenza di una etichetta X, sarà possibile indicare al database di creare un indice a schema su tutti i nodi che hanno l’etichetta X sulla proprietà Y
Automatica
In grado di creare automaticamente degli indici per nodi e/o per relazioni, e per proprietà specifiche.
(PROBLEMA) Al momento, non esiste un modo per specificare lo schema o l’etichetta di nodo su cui creare automaticamente l’indice. Quindi succede che l’indicizzazione automatica finirà per mischiare insieme nodi con qualsiasi label.
Più utilizzato nella progettazione. Bisogna, comunque, valutare quali proprietà indicizzare per non aumentare il costo computazionale delle operazioni di aggiornamento degli indici