J@ArangoDB

{ "subject" : "ArangoDB", "tags": [ "multi-model", "nosql", "database" ] }

AQL Improvements for 2.4

While on a retreat in Belgium, we found some spare time to work on improvements for AQL. These will be shipped with ArangoDB version 2.4, and are already available in the devel version for testing from now on.

Here’s a short overview of the improvements:

Setting Up Test Data

Today I was asked to look at code that was supposed to read data from a MySQL data source, process it and then import it into ArangoDB.

To run and debug the code I had to have some MySQL data source. So I thought I’d quickly set up a simple example table with a few rows. It turned out that this took more time than what I had expected.

Maybe I’m spoilt by JavaScript-enabled, schema-free databases where creating such test setups is so much easier.

Getting Core Dumps of Failed TravisCI Builds

I recently wrote about using TravisCI for continuously testing C++11 projects.

Now, what if a build fails?

Especially for C and C++ projects, build failures may mean crashed programs. In a local setup, the usual way to analyze program crashes is to manually inspect the core files that are written on crash.

With TravisCI, there is no way to log in to a build machine and inspect a core dump interactively. There is no SSH access to the build machines. TravisCI does not even persist any state of builds but the result and the log output.

There is a way to get to the core dumps, but it was fiddly to find out and set up.

What I Most Like About C++11

About half a year ago we started compiling our code with -std=c++11.

We had to fix a few, but not too many code parts for this. That was the easy part.

Getting C++11 to work on all supported platforms, build and testing environments was a bit more challenging, but we finally managed to do it.

Having used C++11 for some time now, I think it’s time to share a few of improvements in C++11 that solve common problems.

How to Set Up Bash Completion for ArangoDB

I was interested in how bash auto-completion works and how to write a custom completer. After about an hour of work, I came up with a solution that at least seems to work on Ubuntu. I now have auto-completion for ArangoDB and all its client tools!

Using Travis CI for a C++11 Project

TravisCI is a very useful cloud service for continous integration. It can be integrated with Github, with each commit triggering a new build and reporting back when it broke something.

Travis has support for many programming languages, among them C++. But it lacks support for C++11 features.

How to Compile ArangoDB From Source

Note: this post is about the ArangoDB 2.x series

Though we provide a lot of pre-built packages for the stable versions of ArangoDB here, it is often more interesting to play with the bleeding edge development version. New ArangoDB features are normally added to the devel branch, where they can be tested, documented and improved. When a feature matures, it is either backported to a stable branch or will eventually be released when the next stable branch is forked from devel.

Contributing to the core of ArangoDB is also much easier with a ready-to-go devel version. This post explains how to set one up from scratch.

Handling Binary Data in Foxx

Note: this post is about the ArangoDB 2.x series

Handling binary data in JavaScript applications is a bit tricky because JavaScript does not provide a data type for binary data. This post explains how to use binary data in JavaScript actions written using ArangoDB’s Foxx.