Neo4j - Panoramica
Neo4j è il database grafico open source leader a livello mondiale sviluppato utilizzando la tecnologia Java. È altamente scalabile e privo di schemi (NoSQL).
Cos'è un database a grafo?
Un grafico è una rappresentazione pittorica di un insieme di oggetti in cui alcune coppie di oggetti sono collegate da collegamenti. È composto da due elementi: nodi (vertici) e relazioni (bordi).
Il database del grafico è un database utilizzato per modellare i dati sotto forma di grafico. Qui, i nodi di un grafico rappresentano le entità mentre le relazioni rappresentano l'associazione di questi nodi.
Database grafici popolari
Neo4j è un popolare database di grafici. Altri database Graph sono Oracle NoSQL Database, OrientDB, HypherGraphDB, GraphBase, InfiniteGraph e AllegroGraph.
Perché database grafici?
Al giorno d'oggi, la maggior parte dei dati esiste sotto forma di relazione tra oggetti diversi e, più spesso, la relazione tra i dati è più preziosa dei dati stessi.
I database relazionali memorizzano dati altamente strutturati che hanno diversi record che memorizzano lo stesso tipo di dati in modo che possano essere utilizzati per archiviare dati strutturati e, non memorizzano le relazioni tra i dati.
A differenza di altri database, i database a grafo memorizzano relazioni e connessioni come entità di prima classe.
Il modello di dati per i database a grafo è più semplice rispetto ad altri database e possono essere utilizzati con i sistemi OLTP. Forniscono funzionalità come integrità transazionale e disponibilità operativa.
Database grafico di RDBMS vs
Di seguito è riportata la tabella che confronta i database relazionali e i database Graph.
Suor n | RDBMS | Database grafico |
---|---|---|
1 | Tabelle | Grafici |
2 | Righe | Nodi |
3 | Colonne e dati | Proprietà e suoi valori |
4 | Vincoli | Relazioni |
5 | Si unisce | Traversal |
Vantaggi di Neo4j
Di seguito sono riportati i vantaggi di Neo4j.
Flexible data model - Neo4j fornisce un modello di dati flessibile, semplice ma potente, che può essere facilmente modificato in base alle applicazioni e ai settori.
Real-time insights - Neo4j fornisce risultati basati su dati in tempo reale.
High availability - Neo4j è altamente disponibile per applicazioni in tempo reale di grandi imprese con garanzie transazionali.
Connected and semi structures data - Utilizzando Neo4j, puoi rappresentare facilmente dati connessi e semi-strutturati.
Easy retrieval - Usando Neo4j, puoi non solo rappresentare ma anche recuperare facilmente (attraversare / navigare) i dati connessi più velocemente rispetto ad altri database.
Cypher query language- Neo4j fornisce un linguaggio di query dichiarativo per rappresentare visivamente il grafico, utilizzando una sintassi ascii-art. I comandi di questa lingua sono in formato leggibile dall'uomo e molto facili da imparare.
No joins - Utilizzando Neo4j, NON richiede join complessi per recuperare i dati connessi / correlati poiché è molto facile recuperare i dettagli del nodo adiacente o della relazione senza join o indici.
Caratteristiche di Neo4j
Di seguito sono riportate le caratteristiche principali di Neo4j:
Data model (flexible schema)- Neo4j segue un modello di dati denominato modello grafico delle proprietà native. Qui, il grafico contiene nodi (entità) e questi nodi sono collegati tra loro (rappresentati da relazioni). I nodi e le relazioni memorizzano i dati in coppie chiave-valore note come proprietà.
In Neo4j, non è necessario seguire uno schema fisso. È possibile aggiungere o rimuovere proprietà secondo i requisiti. Fornisce inoltre vincoli di schema.
ACID properties - Neo4j supporta le regole ACID (Atomicity, Consistency, Isolation e Durability) complete.
Scalability and reliability- È possibile ridimensionare il database aumentando il numero di letture / scritture e il volume senza influire sulla velocità di elaborazione delle query e sull'integrità dei dati. Neo4j fornisce anche supporto perreplication per la sicurezza e l'affidabilità dei dati.
Cypher Query Language- Neo4j fornisce un potente linguaggio di query dichiarativo noto come Cypher. Usa ASCII-art per rappresentare i grafici. Cypher è facile da imparare e può essere utilizzato per creare e recuperare relazioni tra i dati senza utilizzare query complesse come Joins.
Built-in web application - Neo4j fornisce un file Neo4j Browserapplicazione web. Usando questo, puoi creare e interrogare i dati del tuo grafico.
Drivers - Neo4j può funzionare con -
API REST per lavorare con linguaggi di programmazione come Java, Spring, Scala ecc.
Java Script per lavorare con framework UI MVC come Node JS.
Supporta due tipi di API Java: Cypher API e Native Java API per sviluppare applicazioni Java. Oltre a questi, puoi anche lavorare con altri database come MongoDB, Cassandra, ecc.
Indexing - Neo4j supporta gli indici utilizzando Apache Lucence.