gepubliceerd release van een multifunctioneel DBMS ArangoDB 3.6, dat flexibele opslagmodellen biedt voor documenten, grafieken en sleutelwaardegegevens. Het werken met de database wordt uitgevoerd via een SQL-achtige querytaal AQL of via speciale JavaScript-extensies. Gegevensopslagmethoden voldoen aan de ACID-vereisten (atomiciteit, consistentie, isolatie, duurzaamheid), ondersteunen transacties en bieden zowel horizontale als verticale schaalbaarheid. Het DBMS kan worden beheerd via een webinterface of een consoleclient Arango SH. ArangoDB-code gedistribueerd door gelicentieerd onder Apache 2. Het project is geschreven in C en JavaScript.
Belangrijkste kenmerken van ArangoDB:
De mogelijkheid om te doen zonder het definiëren van een gegevensopslagschema (schemavrij) - gegevens zijn gestructureerd in de vorm van documenten waarin metadata en informatie over de structuur zijn gescheiden van gebruikersgegevens;
Ondersteuning voor het gebruik van ArangoDB als server voor JavaScript-webapplicaties met de mogelijkheid om toegang te krijgen tot de database via de REST/Web API;
JavaScript gebruiken voor browsertoepassingen die toegang hebben tot de database en voor handlers die worden uitgevoerd aan de kant van het DBMS;
Multi-threaded architectuur die de belasting verdeelt over alle CPU-cores;
Een flexibel gegevensopslagmodel dat sleutel-waardeparen, documenten en parameters kan combineren die relaties tussen records definiëren (er zijn middelen voorzien om grafiekhoekpunten te doorlopen);
Verschillende modellen voor gegevensrepresentatie (documenten, grafieken en sleutel-waarde-associaties) kunnen in één query worden gemengd, waardoor het gemakkelijker wordt om heterogene gegevens samen te voegen;
Ondersteuning voor queries met merge (JOIN);
Mogelijkheid om het type index te kiezen dat overeenkomt met de op te lossen taken (u kunt de index bijvoorbeeld gebruiken voor zoeken in volledige tekst);
Aanpasbare betrouwbaarheid: de applicatie kan zelf bepalen wat voor haar belangrijker is: hogere betrouwbaarheid of hogere performance;
Efficiënte opslag die volledig profiteert van moderne hardware (zoals SSD's) en grote caches kan gebruiken;
Transacties: de mogelijkheid om query's uit te voeren op meerdere documenten of verzamelingen tegelijk, met optionele transactieconsistentie en isolatie;
Ondersteuning voor replicatie en sharding: de mogelijkheid om master-slave-configuraties te creëren en datasets te distribueren naar verschillende servers, afhankelijk van een bepaald attribuut;
Er wordt een JavaScript-framework geleverd voor het maken van microservices Foxx, die binnen de DBMS-server draait met directe gegevenstoegang.
Veranderingenvoorgesteld in de ArangoDB 3.6 release:
Optimalisatie van de prestaties van subquery's, evenals UPDATE- en REPLACE-bewerkingen;
De mogelijkheid van parallelle uitvoering van AQL-query's is geïmplementeerd, waardoor de tijd voor het verzamelen van gegevens die over verschillende knooppunten van het cluster zijn verdeeld, wordt verkort;
Implementatie van uitgestelde materialisatie van documenten, waardoor in sommige situaties de noodzaak om irrelevante documenten volledig te extraheren overbodig wordt;
Bij het scannen van documenten wordt voorzien in een vroege afwijzing van documenten die niet overeenkomen met het gespecificeerde filter;
De ArangoSearch-zoekmachine voor volledige tekst is verbeterd om rangschikking op basis van gegevensovereenkomst te ondersteunen. Analyse-ondersteuning toegevoegd voor het automatisch aanvullen van zoekopdrachten, geïmplementeerde TOKENS()- en PHRASE()-functies voor het dynamisch genereren van zoekopdrachten;
MaxRuntime-instelling toegevoegd om de uitvoeringstijd van de query selectief te beperken;
Optie "--query.optimizer-rules" toegevoegd om de activering van bepaalde optimalisaties bij het verwerken van query's te regelen;
Meer mogelijkheden om het werk van de cluster te organiseren. Optie "--cluster.upgrade" toegevoegd om de upgrademodus voor knooppunten in een cluster te selecteren;
Ondersteuning toegevoegd voor TLS 1.3 om het communicatiekanaal tussen de client en de server te versleutelen (standaard blijft de client TLS 1.2 gebruiken).