We released ArangoDB version 3.6 in January this year, and now we are already 6 weeks into the development of its follow-up version, ArangoDB 3.7. We feel that this is a good point in time to share some of the new features of that upcoming release with you!

We try not to develop new features in a vacuum, but want to solve real-world problems for our end users. To get an idea of how useful the new features are, we would like to make alpha releases available to everyone as soon as possible. Our goal is get early user feedback during the development of ArangoDB, so we can validate our designs and implementations against the reality, and adjust them if it turns out to be necessary.

If you want to give some of the new features a test drive, you can download the 3.7 Alpha 1 from here – Community and Enterprise – for all supported platforms.

Please keep in mind that this is an alpha release. It is suited for testing purposes only and is NOT for production usage. It is solely meant for trying out new features way before they become available in a stable release. Although we have done our best to produce useful features and APIs, things may still contain bugs or may change until the final 3.7 release.

Additionally, this Alpha 1 is not feature-complete. You can expect many more features and improvements to become available until the GA release of 3.7. See below for more details!

In case you have any question regarding the Alpha 1 version, let us know in the #feedback-3-7 channel in ArangoDB’s Slack community. You don’t know how to use one of the new features? Not all of them are fully documented yet, but we are happy to help in the slack chat. Do you have any suggestions for improvements or found a bug? Send us your feedback and bug reports. Your help is greatly appreciated!

New features in the 3.7 Alpha 1

The following 3.7 features are already available in this Alpha 1 for testing:

Parallel movement of shards

Shards can now move in parallel. The old locking mechanism was replaced by a read-write lock and thus allows multiple jobs for the same destination server to be executed concurrently.

The actual shard data transfer rates are still limited on database server side but there is a huge overall speedup for moving many shards at the same time. This means the change also positively affects the processes of controlled shutdown and making a database server step back (temporarily) from being a shard leader or a replica.

JavaScript improvements

The bundled V8 JavaScript engine was upgraded to version 7.9.317. The bundled Unicode character handling library ICU was upgraded to version 64.2.

The resource usage of V8 has improved a lot. Startup memory usage is down by approximately 15%, spawning a new V8 context has also become almost 10 times faster. This will be very beneficial for applications that use ArangoDB’s Foxx framework. JSON parsing from within Foxx applications is also roughly 60% faster compared to ArangoDB v3.6.

Additionally, the new V8 version supports more recent JavaScript features, such as Object.fromEntries, String.matchAll, numeric separators, private class fields etc.

Insert-Update

ArangoDB 3.7 adds an insert-update operation that is similar to the already existing insert-replace functionality. Whereas previously an insert could be turned into a replace in case a document with the target key already existed, in 3.7 it can also be turned into a (partial) update. A new control option, overwriteMode, has been introduced for inserts operation to control what happens (i.e. “replace” or “update”) if there is a primary key collision.

The new functionality is available in:

Driver support will follow until the final 3.7 release.

HTTP/2 support

The arangod server now supports upgrading connections from HTTP 1.1 to HTTP 2 (see also additional info in our docs). This should improve ArangoDB’s compatibility with various L7 load balancers and modern cloud platforms like Kubernetes.

JWT secret rotation (Enterprise Edition)

There are now new APIs and startup options for JWT secret rotation. The new option --server.jwt-secret-folder can be used to specify a path for more than one JWT secret file. With that in place, multiple JWT secrets can be valid at the same time, allowing for a smooth transition from one secret to another in case the secret needs to be changed on multiple servers, as it is the case in cluster setups.

Additionally, the /_admin/server/jwt API can be used to reload the JWT secrets of a local arangod process without having to restart it (hot-reload). This can be used to roll out new JWT secrets throughout an ArangoDB cluster without having to take down nodes for restarting them. See documentation.

TLS key and certificate rotation

The TLS secret key, as well as the public certificates, can be queried and changed at run time using the new /_admin/server/tls endpoint. See documentation.

Retiring MMFiles

The RocksDB storage engine has been introduced in ArangoDB 3.2. Since then, it has been adopted by the overwhelming majority of our users.

With the limitations of the MMFiles engine becoming more and more apparent and almost no new deployments using it (to the best of our knowledge), we already deprecated it in the previous stable release, ArangoDB 3.6.

The 3.7 Alpha 1 is the first ArangoDB release that retires the old MMFiles storage engine, meaning that creating new deployments using the MMFiles engine is not possible anymore.

More features

We plan to release at least one more alpha version of ArangoDB 3.7 before 3.7.0 will enter the stabilization phase. A few things to expect from future 3.7 alphas are:

  • ArangoSearch will get many important functionality and performance improvements:
    • Search
      • Wildcard search
      • Long-awaited fuzzy search based on Levenshtein distance
      • N-Gram based fuzzy search
      • Enhanced phrase and proximity search
    • Query optimization
      • Improved late document materialization for Views with stored values
      • Covering Views (fulfilling requests using View indexes without touching the storage engine)
    • Performance
      • Improved SIMD-based index format for much faster queries
  • AQL subquery performance improvements
    We started working on subquery performance improvements about half a year ago, and this work is now nearing completion. In the final version we expect all subqueries to be executed in the most performant way, which will speed up queries considerably in the cluster.
  • Graph traversal performance improvements
    There is some work ongoing right now to improve the performance of graph traversals. Several types of traversal queries should benefit from this change, but it is a bit too early yet to go into details.
  • Document validation
    We are currently working on document validation functionality, which will help enforce certain schemas/contents for documents. Invalid documents can be rejected automatically by the database, making it easy to maintain data quality.

Download the Alpha 1 ArangoDB 3.7 Community Edition or Enterprise Edition and give it a spin. We greatly appreciate any feedback you might have, please get in touch via Community Slack#feedback-3-7 channel. Happy testing!