Neo4j: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: Aggiungo portale:Software libero e richiesta infobox
m Risolvo disambigua JVM in macchina virtuale Java tramite popup
Riga 5:
 
==Descrizione==
Il database può essere usato sia in modalità embedded che server. Nella modalità embedded si incorpora il database nell'applicazione (con [[Apache Maven|maven]] o includendo i file [[jar]]) e questo viene eseguito all'interno della [[macchina virtuale Java|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 [[Geographic information system|query spaziali]]<ref>[http://github.com/neo4j/spatial Neo4j spatial]</ref>.
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 [[Tipo di dato|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 [[Relazione (matematica)|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
Riga 13:
===Accesso e manipolazione al database===
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 [[macchina virtuale Java|JVM]] come [[Scala (linguaggio di programmazione)|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===