Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Neo4j - Teknopedia
Neo4j - Teknopedia
Neo4j
software
Logo
Logo
GenereSoftware per basi di dati
SviluppatoreNeo4j
Data prima versionefebbraio 2010
Ultima versione2025.11.2 (19 dicembre 2025)
Sistema operativoMultipiattaforma
LinguaggioJava
Scala
LicenzaGNU GPL v3 e GNU Affero General Public License, versione 3
(licenza libera)
Sito webneo4j.com/
Modifica dati su Wikidata · Manuale

Neo4j è un software per basi di dati a grafo open source sviluppato interamente in Java. È un database totalmente transazionale, che viene integrato nelle applicazioni permettendone il funzionamento stand alone e memorizza tutti i dati in una cartella. È stato sviluppato dalla Neo Technology, una startup di Malmö, Svezia e della San Francisco Bay Area.

Descrizione

[modifica | modifica wikitesto]

Il database può essere usato sia in modalità embedded che server. Nella modalità embedded si incorpora il database nell'applicazione (con maven o includendo i file JAR) e questo viene eseguito all'interno della JVM, quindi nello stesso processo ma accettando vari thread concorrenti. Nella modalità server invece il database è un processo a sé stante a cui si accede tramite REST facendo delle query e ricevendo i dati in remoto; il server permette l'utilizzo di plugin che filtrano i dati in input e output e offrono servizi aggiuntivi, per esempio il supporto alle query spaziali[1]. Neo4j permette la modalità batch, non concorrente, per l'importazione massiva di dati da altri database o da file, ma per l'uso comune si basa sulle transazioni. Una volta aperta una transazione è possibile creare nodi e assegnarvi delle proprietà, ossia dei valori corrispondenti ai tipi di dato elementari di Java (più le String e gli array) e identificati grazie a un nome. Inoltre è possibile unire dei nodi tramite le relazioni, i cui tipi sono definiti dal programmatore, che possono essere direzionali o meno. Anche le relazioni possono avere delle proprietà come i nodi. Il grafo è quindi schema-less, il che da un lato permette di definire dati molto eterogenei con il minimo sforzo e dall'altro può creare problemi di consistenza dei dati, che è interamente responsabilità dell'applicazione

Indicizzazione

[modifica | modifica wikitesto]

Neo4j integra un servizio di indicizzazione basato su Lucene che permette di memorizzare a piacere dei nodi facendo riferimento a una etichetta assegnata arbitrariamente, per poi accedere all'iteratore dei nodi con una certa etichetta recante un certo valore. È possibile anche effettuare le ricerche fulltext, una funzione centrale di Lucene, e esistono dei plugin del server che permettono di indicizzare automaticamente i nodi. È disponibile infine un servizio di indicizzazione basato sui timestamp che permette di ottenere i nodi corrispondenti a una ora e una data comprese in un certo intervallo[2].

Accesso e manipolazione al database

[modifica | modifica wikitesto]

Anche se è possibile accedere direttamente ai nodi e alle relazioni usando le funzioni di Neo4j, spesso le applicazioni utilizzano i due linguaggi per le query supportati da Neo4j, ossia Gremlin e Cypher. Mentre la versione embedded è usata quasi esclusivamente da Java o da linguaggi che utilizzano la JVM come Scala o Groovy, la versione server è accessibile tramite REST da qualsiasi linguaggio, e esistono delle librerie specifiche per semplificarne l'utilizzo in Python, C# e altri linguaggi, ma la macchina su cui viene eseguito il server deve essere ovviamente dotata di una JVM.

Sharding e replicazione

[modifica | modifica wikitesto]

Neo4j non supporta lo sharding dei dati, quindi l'intero grafo deve essere memorizzato in una sola macchina. È possibile invece attivare più istanze di uno stesso database eseguite contemporaneamente su diverse macchine, realizzando un'architettura master-slave gestita tramite Zookeeper che garantisce la consistenza finale delle varie versioni e rende più veloce l'accesso in lettura grazie alla divisione del lavoro tra i nodi.

Vantaggi

[modifica | modifica wikitesto]

La struttura a grafo di Neo4j si mostra estremamente comoda ed efficiente nel trattare strutture come gli alberi estratte ad esempio da file XML, filesystem e reti, che ovviamente vengono rappresentate con naturalezza da un grafo poiché sono esse stesse dei grafi. L'esplorazione di queste strutture risulta in genere più veloce rispetto a un database a tabelle perché la ricerca di nodi in relazione con un certo nodo è un'operazione primitiva e non richiede più passaggi, in genere tre impliciti in un join di SQL, su tabelle diverse. Ogni nodo contiene l'indice delle relazioni entranti e uscenti da esso, quindi la velocità di attraversamento del grafo non risente delle dimensioni complessive ma solo della densità dei nodi attraversati. Esistono delle implementazioni già pronte per le operazioni più comuni sui grafi, come la ricerca del cammino minimo tra due nodi tramite l'algoritmo di Dijkstra, la ricerca di cicli e il calcolo del diametro della rete.

Svantaggi

[modifica | modifica wikitesto]

Neo4j risulta scomodo rispetto a un database a tabelle interrogabile tramite query SQL nelle ricerche complesse, per esempio basate su confronti matematici tra i campi delle tuple, e di conseguenza sulle modifiche di massa basate su tali ricerche. Non esistono infatti analoghi dell'UPDATE offerto dai sistemi SQL, che risulta pesante per quanto riguarda le modifiche massicce del grafo. Neo4j inoltre non offre funzioni per memorizzare dati binari come audio, video o grossi blocchi di testo, che devono essere salvati in un filesystem o in un altro database memorizzando nel grafo un riferimento. Anche se un database neo4j può contenere fino a 32 miliardi di nodi, l'impossibilità di effettuare lo sharding dei dati lo rende poco adatto per i lavori ETL su più cluster, per cui sono disponibili, anche se ancora in fase sperimentale, architetture basate su Hadoop come Giraph.

Note

[modifica | modifica wikitesto]
  1. ↑ Neo4j spatial, su github.com.
  2. ↑ neo4j indexing service, su wiki.neo4j.org (archiviato dall'url originale il 21 giugno 2010).

Voci correlate

[modifica | modifica wikitesto]
  • Base di dati a grafo
  • Cypher (linguaggio)

Altri progetti

[modifica | modifica wikitesto]

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su Neo4j

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Sito ufficiale, su neo4j.com. Modifica su Wikidata
  • Repository sorgenti di Neo4j, su github.com. Modifica su Wikidata
V · D · M
Sistemi di gestione delle basi di dati
Relazionali
proprietari4th Dimension · DB2 · dBase · IBM Informix · InterBase · MaxDB · Oracle · SQL Server · Sybase SQL Anywhere Studio
liberiDerby · Drizzle · Firebird SQL · HSQLDB · Ingres · MariaDB · MySQL · Percona Server · PostgreSQL
Simbolo database
Simbolo database
RDBMS integrante un RADAccess · Bento · FileMaker · HyperFileSQL · Kexi · Knoda · LibreOffice Base · Neo4j · OpenOffice Base · Paradox · SAS · 4th Dimension
Embedded (incorporato) · Berkeley DB (Relazionale proprietario) · SQLite (Relazionale libero)
Orientati agli oggetti
TabulareBigTable · Apache HBase
Archiviazione in tupleApache River
AltroDataBase For Objects · FluidDB · Moneta · OrientDB · PostgreSQL · Versant Object Database · ZODB
Base di dati relazionale a oggetti
software liberiCUBRID · Virtuoso Universal Server · WakandaDB · Zope Object Database
ProprietariIBM DB2 · IBM Informix · Greenplum Database · Microsoft SQL Server · Oracle · SAP Adaptive Server Enterprise
NoSQL
Orientato al documento
Database XMLExistDB · Oracle · BaseX · MarkLogic Server
AltriCouchDB · MongoDB · RavenDB · Apache Solr · OrientDB · OpenTSDB · KairosDB
Database a grafoAllegroGraph · Core Data · Neo4j · OrientDB
Chiave/valore archiviato su discoRedis (open source) · BigTable · DensoDB
Chiave/valore cache in RAMRedis (open source) · memcached
Valore/chiave Eventually‐consistentCassandra · Amazon-Dynamo
Chiave-valore che conserva mediante l'implementazione di PaxosKeyspace
Chiave-valore ordinatoBerkeley DB · NMDB
Basi di dati multivaloreOpenQM · Rocket U2
AltroSimpleDB · RethinkDB · LevelDB (No SQL libero)
Sistema di gestione di basi di dati
orientato alle colonne
software liberiCalpont InfiniDB · Druid · MonetDB · Neo4j · RCFile · Apache HBASE
ProprietariIBM DB2 · Microsoft SQL Server 2012 · Oracle Exadata · SAP HANA · Sybase IQ · Vector · Vertica
Base di dati spaziale
con specifiche OpenGISAsterixDB(Open source) · IBM DB2 · Microsoft SQL Server · MonetDB · MySQL · Neo4j · Oracle Spatial · PostgreSQL con PostGIS · SAP HANA · SpatiaLite · Teradata Geospatial · Vertica Place
Base di dati ad oggetti in movimentoSECONDO, · Firebird con TerraLib · MySQL con TerraLib · PostgreSQL con TerraLib · SQLServer con TerraLib
Base di dati multimedialeOracle Image · Oracle Video
Categoria:Basi di dati
  Portale Informatica
  Portale Software libero
Estratto da "https://it.wikipedia.org/w/index.php?title=Neo4j&oldid=148296180"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022