Speeding Up Dump & Restore

00GeneralTags: ,

Many ArangoDB users rely on our arangodump and arangorestore tools as an integral part of their backup and recovery procedures. As such, we want to make the use of these tools, especially arangodump, as fast as possible. We’ve been working hard toward this goal in preparation for the upcoming 3.4 release.

We’ve made a number of low-level server-side changes to significantly reduce overhead and improve throughput. Additionally, we’ve put some work into rewriting much of the code for the client tools to allow dumping and restoring collections in parallel, using a number of worker threads specified by --threads n. Read more

Data retrieval performance optimizations in ArangoDB 3.3.9

00General, ReleasesTags:

Our recent release 3.3.9 includes several performance optimizations for data retrieval cases. Benefits can be expected for both storage engines, MMFiles and RocksDB, AQL batch lookup queries, and cluster AQL queries.

MMFiles index batch lookups

For the MMFiles engine, an optimization has been made for retrieving multiple documents from an index (hash index, skiplist index or persistent index) in a batch.
Read more

An implementation of phase-fair reader/writer locks

00GeneralTags:

We were in search for some C++ read-write lock implementation that allows a thread to acquire a lock and then optionally pass it on to another thread. The C++11 and C++14 standard library lock implementations std::mutex and shared_mutex do not allow that (it would be undefined behaviour – by the way, it’s also undefined behaviour when doing this with the pthreads library).

Additionally, we were looking for locks that would neither prefer readers nor writers, so that there will be neither reader starvation nor writer starvation. And then, we wanted concurrently queued read and write requests that compete for the lock to be brought into some defined execution order. Ideally, queued operations that cannot instantly acquire the lock should be processed in approximately the same order in which they queued. Read more

ArangoSearch architecture overview

00General

In this article, we’re going to dive deeper into our recently released feature preview in Milestone ArangoDB 3.4 – ArangoSearch which provides a rich set of information retrieval capabilities. In particular, we’ll give you an idea of how our search engine works under the hood.

Essentially ArangoSearch consists of 2 components: A search engine and an integration layer. The former is responsible for managing the index, querying and scoring, whereas latter exposes search capabilities to the end user in a convenient way.

Read more

Foxx CLI – Managing Microservices

00GeneralTags: ,

Anyone who has ever worked with our JavaScript framework Foxx was faced at some point with the challenge to install its Foxx service in its current ArangoDB instance or to replace the installed service with local code changes. This is not a big deal and can easily be done through ArangoDB’s WebUI. However, we developers always want to become more productive and clicking through a graphical UI is not the best way. Furthermore, this procedure is almost impossible to use in an automated deployment process. That’s why we decided to develop a node-based CLI tool to manage Foxx services, called Foxx-CLI, which we already released in version 1.1.

Read more

Static binaries for a C++ application

00GeneralTags: , ,
TL;DR; This describes how to generate a completely static binary for a complex C++ application which runs on all variants of Linux without any library dependency.

ArangoDB is a multi-model database written in C++. It is a sizable application with an executable size of 38MB (stripped) and quite some library dependencies. We provide binary packages for Linux, Windows and MacOS, and for Linux we cover all major distributions and their different versions, which makes our build and delivery pipeline extremely cluttered and awkward. At the beginning of this story, we needed approximately 12 hours just to build and publish a release, if everything goes well. This is the beginning of a tale to attack this problem. Read more

Welcome to the ArangoDB family, Ted Dunning!

00General

We are absolutely thrilled to announce that one of the brightest and most respected minds in open-source software joins ArangoDBs Advisory Council. Hi, Ted and welcome to the ArangoDB family!
ted dunning
For those who don’t know Ted Dunning yet, maybe a quick introduction and the reason why the whole team is so amazed that he supports the project. Ted Dunning is Chief Application Architect at MapR, holds a PhD in computer science and is committer as well as PMC member of the Apache Mahout, Zookeeper and Drill projects. Besides his 25 patents, and even more pending, he mentors multiple well-known Apache projects like Storm, Flink, or DataFu with his broad experiences across industries and technologies. Ted contributes so much to the open-source world and we feel blessed to have him on board at ArangoDB. Read more

Do you like ArangoDB?
icon-githubStar this project on GitHub.