rilascio di un DBMS multiuso , che fornisce modelli flessibili per la memorizzazione di documenti, grafi e dati in formato chiave-valore. L'interazione con il database avviene tramite un linguaggio di query simile a SQL o attraverso estensioni speciali in linguaggio JavaScript. I metodi di memorizzazione dei dati rispettano i requisiti ACID (atomicità, coerenza, isolamento, durabilità), supportano le transazioni e garantiscono scalabilità sia orizzontale che verticale. La gestione del DBMS può avvenire tramite interfaccia web o client console . Il codice di ArangoDB è sotto licenza Apache 2. Il progetto è scritto in linguaggi C e JavaScript.
Caratteristiche principali di ArangoDB:
- Possibilità di operare senza definire uno schema di memorizzazione dei dati (Schema-free) — i dati sono strutturati in forma di documenti, in cui i metadati e le informazioni sulla struttura sono separati dai dati utente;
- Supporto all'uso di ArangoDB come server per applicazioni web in linguaggio JavaScript con accesso al DB tramite REST/Web API;
- Utilizzo di JavaScript per applicazioni browser che accedono a database e per gestori eseguiti sul lato del DBMS;
- Architettura multithreading che distribuisce il carico su tutti i core della CPU;
- Modello di archiviazione dei dati flessibile in cui possono essere combinati coppie chiave-valore, documenti e parametri che definiscono le relazioni tra le registrazioni (sono forniti strumenti per attraversare i vertici del grafo);
- Diverse modalità di rappresentazione dei dati (documenti, grafi e associazioni chiave-valore) possono essere mescolate in una sola query, semplificando l'aggregazione di dati eterogenei;
- Supporto per query con unione (JOIN);
- Possibilità di scegliere il tipo di indice adatto agli obiettivi da raggiungere (ad esempio, è possibile utilizzare un indice per la ricerca testuale completa);
- Affidabilità personalizzabile: l'applicazione può determinare autonomamente ciò che è più importante per essa: maggiore affidabilità o maggiore performance;
- Storage efficiente che sfrutta appieno le capacità delle moderne attrezzature (ad esempio, SSD) e può utilizzare grandi cache;
- Transazioni: possibilità di eseguire richieste simultaneamente per più documenti o raccolte con coerenza delle transazioni e isolamento opzionali;
- Supporto per la replica e lo sharding: possibilità di creare configurazioni master-slave e distribuire set di dati su diversi server in base a criteri specifici;
- Per la creazione di microservizi è fornito un framework JavaScript , eseguito all'interno del server del DBMS con accesso diretto ai dati.
, introdotti nella versione ArangoDB 3.6:
- È stata ottimizzata la performance delle sottoquery, così come delle operazioni UPDATE e REPLACE;
- È stata implementata la possibilità di eseguire in parallelo le query AQL, consentendo di ridurre i tempi di raccolta dei dati distribuiti su diversi nodi del cluster;
- È stata implementata la materializzazione ritardata dei documenti, che in alcune situazioni consente di evitare l'estrazione completa di documenti non pertinenti;
- Durante la scansione dei documenti, è stata assicurata la scartazione precoce dei documenti che non corrispondono al filtro specificato;
- Il motore di ricerca full-text ArangoSearch è stato migliorato, supportando il ranking in base alla similarità dei dati. È stata aggiunta la supporto per l'analizzatore per l'autocompletamento delle query, implementate le funzioni TOKENS() e PHRASE() per la creazione dinamica delle query di ricerca;
- È stata aggiunta l'impostazione maxRuntime per limitare selettivamente il tempo di esecuzione delle query;
- È stata aggiunta l'opzione «—query.optimizer-rules» per controllare l'attivazione di specifiche ottimizzazioni durante l'elaborazione delle query;
- Sono state ampliate le funzionalità per l'organizzazione del lavoro del cluster. È stata aggiunta l'opzione «—cluster.upgrade» per selezionare la modalità di aggiornamento dei nodi nel cluster;
- È stato aggiunto il supporto per TLS 1.3 per la crittografia del canale di comunicazione tra client e server (di default, il client continua a utilizzare TLS 1.2).
Fonte: opennet.ru
