Neo4j

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Neo4j
software
Siglă
Tip Software de baze de date
Dezvoltator Neo Technology, Inc.
Data primei versiuni Februarie 2010
Ultima versiune 4.1.3 (1 octombrie 2020)
Sistem de operare Multiplatform
Limba Java
Scară
Licență GNU GPL v3 și GNU Affero General Public License, versiunea 3
( Licență gratuită )
Site-ul web neo4j.com/

Neo4j este un software de baze de date cu grafice open source dezvoltat în întregime în Java . Este o bază de date complet tranzacțională , care este integrată în aplicații, permițându-le să funcționeze singure și stochează toate datele într-un folder. A fost dezvoltat de Neo Technology, o startup din Malmö , Suedia și zona golfului San Francisco .

Descriere

Baza de date poate fi utilizată atât în ​​modul încorporat, cât și în modul server. În modul încorporat baza de date este încorporată în aplicație (cu maven sau prin includerea fișierelor JAR ) și aceasta este executată în interiorul JVM , deci în același proces, dar acceptând diverse fire concurente. În modul server, pe de altă parte, baza de date este un proces separat, care poate fi accesat prin REST, făcând interogări și primind date de la distanță; serverul permite utilizarea pluginurilor care filtrează datele de intrare și ieșire și oferă servicii suplimentare, cum ar fi suport pentru interogări spațiale [1] . Neo4j permite modul batch non-concurent pentru importul masiv de date din alte baze de date sau fișiere, dar pentru utilizarea obișnuită se bazează pe tranzacții. Odată ce a fost deschisă o tranzacție, este posibil să creați noduri și să îi atribuiți proprietăți, adică valori corespunzătoare tipurilor elementare de date Java (plus Șiruri și tablouri) și identificate printr-un nume. De asemenea, este posibil să se unească noduri prin relații , ale căror tipuri sunt definite de programator, care pot fi direcționale sau nu. Relațiile pot avea și proprietăți precum noduri. Prin urmare, graficul nu are schemă, ceea ce, pe de o parte, vă permite să definiți date foarte eterogene cu un efort minim și, pe de altă parte, să creați probleme de consistență a datelor, care este în întregime responsabilitatea aplicației.

Indexare

Neo4j integrează un serviciu de indexare bazat pe Lucene, care vă permite să stocați nodurile după bunul plac, referindu-vă la o etichetă atribuită în mod arbitrar, și apoi accesați iteratorul nodului cu o anumită etichetă cu o anumită valoare. De asemenea, este posibil să efectuați căutări fulltext, o funcție centrală a lui Lucene, și există pluginuri de server care vă permit să indexați automat nodurile. În sfârșit, este disponibil un serviciu de indexare bazat pe timestamp-uri care permite obținerea nodurilor corespunzătoare unei ore și unei date incluse într-un anumit interval [2] .

Accesul și manipularea bazei de date

În timp ce nodurile și relațiile pot fi accesate direct folosind funcțiile Neo4j, aplicațiile folosesc adesea cele două limbaje de interogare acceptate de Neo4j, și anume Gremlin și Cypher. În timp ce versiunea încorporată este utilizată aproape exclusiv de Java sau de limbaje care utilizează JVM, cum ar fi Scala sau Groovy , versiunea server este accesibilă prin REST din orice limbă și există biblioteci specifice pentru a simplifica utilizarea acesteia în Python , C # și alte limbi., dar aparatul pe care rulează serverul trebuie să aibă evident o JVM.

Fragmentare și replicare

Neo4j nu acceptă partajarea datelor, deci întregul grafic trebuie stocat pe o singură mașină. Pe de altă parte, este posibil să activați mai multe instanțe ale aceleiași baze de date care rulează simultan pe diferite mașini, creând o arhitectură master-slave administrată de Zookeeper care garantează consistența finală a diferitelor versiuni și face accesul la citire mai rapid datorită divizării muncă între noduri.

Beneficii

Structura grafică a Neo4j este extrem de convenabilă și eficientă în tratarea structurilor, cum ar fi copacii extrași, de exemplu, din fișiere XML , sisteme de fișiere și rețele, care, evident, sunt reprezentate în mod natural printr-un grafic, deoarece sunt ele însele grafice. Explorarea acestor structuri este în general mai rapidă decât o bază de date de tabele, deoarece căutarea nodurilor în raport cu un anumit nod este o operație primitivă și nu necesită pași multipli, de obicei trei implicați într-o îmbinare SQL , pe tabele diferite. Fiecare nod conține indicele relațiilor care intră și ies din acesta, prin urmare viteza de trecere a graficului nu este afectată de dimensiunile globale, ci doar de densitatea nodurilor traversate. Există implementări gata făcute pentru cele mai frecvente operații pe grafice, cum ar fi căutarea celei mai scurte căi între două noduri folosind algoritmul Dijkstra , căutarea buclelor și calculul diametrului rețelei.

Dezavantaje

Neo4j este incomod în comparație cu o bază de date cu tabele care pot fi căutate prin interogări SQL în căutări complexe, de exemplu bazate pe comparații matematice între câmpurile tupluri și, în consecință, pe modificări de masă bazate pe astfel de căutări. De fapt, nu există analogi ai UPDATE-ului oferit de sistemele SQL, care este greu în ceea ce privește modificările masive ale graficului. De asemenea, Neo4j nu oferă funcții pentru stocarea datelor binare precum audio, video sau blocuri mari de text, care trebuie salvate într-un sistem de fișiere sau într-o altă bază de date, stocând o referință în grafic. Chiar dacă o bază de date neo4j poate conține până la 32 de miliarde de noduri, incapacitatea de a efectua partajarea datelor o face nepotrivită pentru joburi ETL pe mai multe clustere, pentru care, chiar dacă sunt încă într-o fază experimentală, arhitecturi bazate pe Hadoop precum Giraph.

Notă

Elemente conexe

Alte proiecte

linkuri externe