rilascio di un DBMS multipurpose , che offre 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 tramite estensioni speciali in linguaggio JavaScript. I metodi di memorizzazione dei dati soddisfano i requisiti ACID (Atomicità, Coerenza, Isolamento, Durabilità), supportano le transazioni e forniscono scalabilità sia orizzontale che verticale. La gestione del DBMS può essere eseguita tramite un'interfaccia web o un client da console . Il codice di ArangoDB è rilasciato sotto la licenza Apache 2. Il progetto è scritto in C e JavaScript.
Caratteristiche chiave di ArangoDB:
- Possibilità di operare senza definire uno schema per la memorizzazione dei dati (Schema-free) — i dati sono strutturati sotto forma di documenti in cui i metadati e le informazioni sulla struttura sono separate dai dati utente;
- Supporto per l'utilizzo di ArangoDB come server per applicazioni web in JavaScript con accesso al DB tramite REST/Web API;
- Utilizzo di JavaScript per applicazioni browser che accedono al DB e per i gestori eseguiti lato DBMS;
- Architettura multithreading che distribuisce il carico su tutti i core della CPU;
- Modello di memorizzazione dei dati flessibile in cui possono essere combinati coppie chiave-valore, documenti e parametri che definiscono relazioni tra le registrazioni (vengono forniti strumenti per navigare nelle punte del grafo);
- Diverse modalità di rappresentazione dei dati (documenti, grafi e associazioni chiave-valore) possono essere mescolate in una singola query, semplificando l'aggregazione di dati eterogenei;
- Supporto per query con unione (JOIN);
- Possibilità di scegliere il tipo di indice più adatto per le esigenze specifiche (ad esempio, è possibile utilizzare un indice per ricerche full-text);
- Affidabilità configurabile: l'applicazione può determinare autonomamente cosa è più importante per essa: maggiore affidabilità o maggiore prestazioni;
- Archiviazione efficiente che sfrutta appieno le capacità dell'hardware moderno (ad esempio, unità SSD) e può utilizzare grandi cache;
- Transazioni: possibilità di eseguire query contemporaneamente su più documenti o raccolte con coerenza e isolamento delle transazioni opzionali;
- Supporto per replicazione e sharding: possibilità di creare configurazioni master-slave e di distribuire i set di dati su diversi server in base a un dato criterio;
- Per la creazione di microservizi è fornito un framework JavaScript , eseguito all'interno del server del DBMS con accesso diretto ai dati.
, proposte nella release ArangoDB 3.6:
- È stata ottimizzata la performance delle sottoquery, così come delle operazioni UPDATE e REPLACE;
- È stata implementata la possibilità di eseguire richieste AQL in parallelo, riducendo il tempo di raccolta dei dati distribuiti su diversi nodi del cluster;
- È stata implementata la materializzazione ritardata dei documenti, che consente di evitare in alcune situazioni il completo recupero di documenti non rilevanti;
- Durante la scansione dei documenti è stato implementato un scarto precoce dei documenti che non soddisfano il filtro specificato;
- È stato migliorato il motore di ricerca full-text ArangoSearch, che supporta 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 formazione dinamica delle query di ricerca;
- È stata aggiunta l'opzione maxRuntime per limitare selettivamente il tempo di esecuzione della query;
- È stata aggiunta l'opzione ‘—query.optimizer-rules’ per gestire l'attivazione di determinate ottimizzazioni durante l'elaborazione delle query;
- Sono state ampliate le possibilità per l'organizzazione del lavoro del cluster. È stata aggiunta l'opzione ‘—cluster.upgrade’ per scegliere la modalità di aggiornamento dei nodi nel cluster;
- È stato aggiunto il supporto per TLS 1.3 per la crittografia del canale di comunicazione tra il client e il server (per impostazione predefinita il client continua a utilizzare TLS 1.2).
Fonte: opennet.ru
