Arango logo

ArangoDB v4.x is under development and not released yet.

This documentation is not final and potentially incomplete.

Deprecated and removed features

Features listed in this section should no longer be used, because they are considered obsolete and may get removed in a future release

Features listed on this page should no longer be used because they have been deprecated and may get removed in a future release, or have been removed already and are thus no longer available.

Deprecated features are still available for backward compatibility, but you should update your applications to prepare for upgrades of ArangoDB that may remove the features. There are usually alternatives to replace the old features with.

This page only lists significant obsolete features but not minor API changes. See the Release notes of the respective versions for detailed information about breaking changes before upgrading.
  • Aardvark web interface:
    The web interface served by the ArangoDB server (arangod), also known as Aardvark, has been removed. The server executable no longer offers a built-in web interface.

    • If you use the Arango Contextual Data Platform, there is a new, integrated web interface also known as the platform UI.
    • If you use ArangoDB standalone, there is a new web interface you can run alongside the server also known as the core UI.
  • JavaScript Transactions:
    Submitting single-request transactions that leverage ArangoDB’s JavaScript API to run complex operations is no longer supported.

    For rather simple transactions, you might be able to use AQL queries instead. Subqueries and the ternary operator are useful tools for this. You can read from multiple collections as well as write to multiple collections, but you cannot perform reads after writes for a given collection.

    To port more complex transactions, you may use Stream Transactions. The main operations they support are document CRUD and AQL queries. Unlike with JavaScript Transactions, you can start a Stream Transaction, then issue individual operations, and eventually decide whether to abort or commit the transaction with all its operations. You can therefore put logic on the client-side if it’s too complex to port to AQL.

  • Foxx microservices:
    The Foxx microservice framework including tasks/queues, the related startup options, JavaScript modules, and HTTP API endpoints have been removed. The foxx-cli tool has been discontinued as well.

    You may use Node.js together with the arangojs driver to work with ArangoDB from the outside using JavaScript as your language.

    You can rewrite existing Foxx services or create new user-defined services for the Arango Contextual Data Platform. See the Container Manager to learn how to bring your own code and containers.

  • User-defined AQL functions (UDFs):
    The ability to register custom functions for the AQL query language written in JavaScript has been removed.

  • Emergency console:
    The ArangoDB server process could be started in an interactive command-line mode (JavaScript REPL) with the --console option. This was primarily used for debugging purposes in the development of arangod. This option and feature have been removed.

  • arangobench:
    The benchmark and test tool arangobench has been removed. It was primarily used internally in the development of ArangoDB.

  • Native Windows and macOS support:
    Starting with v3.12, the native platform support for the Windows and macOS operating systems has been removed and ArangoDB packages for Windows and macOS are not provided anymore. You can use the official Docker images  instead, to run ArangoDB in Linux containers.

  • Active Failover deployment mode:
    Running a single server with asynchronous replication to one or more passive single servers for automatic failover is no longer supported from v3.12.0 onward. You can use cluster deployments instead, which offer better resilience and synchronous replication.

  • Datacenter-to-Datacenter Replication (DC2DC):
    The Datacenter-to-Datacenter Replication for cluster deployments including the arangosync tool is no longer supported from v3.12 onward.

  • LDAP authentication:
    ArangoDB user authentication with an LDAP server in the Enterprise Edition is no longer available starting with v3.12.0.

  • VelocyStream protocol:
    ArangoDB’s own bi-directional asynchronous binary protocol VelocyStream is no longer supported. VelocyPack remains as ArangoDB’s binary storage format and you can continue to use it in transport over the HTTP protocol, as well as use JSON over the HTTP protocol.

  • Standalone Agency and Agency HTTP API:
    The Standalone Agency deployment mode and the corresponding Agency HTTP API are no longer available starting with v3.12.0.

  • Little-endian on-disk key format for the RocksDB storage engine:
    The little-endian on-disk key format for the RocksDB storage engine is deprecated and support is removed in v3.12.0.

    Only deployments that were set up with the RocksDB storage engine using ArangoDB v3.2 or v3.3 and that have been upgraded since then are affected.

    See Incompatible changes in ArangoDB 3.12 for details.

  • Pregel:
    The distributed iterative graph processing (Pregel) system is no longer supported from v3.12 onward. All Pregel graph algorithms, the Pregel JavaScript API and HTTP API, and everything else related to Pregel has been removed. All other graph features including AQL graph traversals and path finding algorithms are unaffected.

  • Telemetrics:
    ArangoDB gathered anonymous information on its usage and feature utilization since v3.11.0 unless disabled. Telemetrics have been removed in v3.12.10.

  • Cloud Migration Tool:
    The arangosync-migration tool to move from on-premises to the cloud is not available anymore.

  • Self-compiling:
    The features formerly exclusive to the Enterprise Edition are included in the Community Edition from v3.12.5 onward, but only in the prebuilt packages and official container images. The source code of these features is not public. For instructions to compile the public code, see CONTRIBUTING.md  in the arangodb/arangodb repository.

  • Fast cluster restore procedure:
    The procedure for speeding up arangorestore in a cluster environment has been removed from the documentation because the tool supports threading more multiple collections (from version 3.3 onward) as well as single collections (from version 3.8 onward using the non-enveloped format). For even faster restoration with zero downtime, you can use arangobackup for Hot Backups.

  • C# / .NET driver:
    The arangodb-net-standard  driver is not an official ArangoDB driver anymore but may still be maintained by the community.

  • Leader/Follower Deployment Mode:
    The Leader/Follower deployment mode is deprecated and already removed from documentation. OneShard databases in clusters are a better alternative.

  • Skiplist and hash indexes:
    Skiplist and hash indexes have been deprecated in 3.9 and are removed in ArangoDB v4.0. They were merely aliases for the persistent index type with the RocksDB storage engine.

  • Bundled NPM modules:
    The bundled NPM modules aqb, chai, dedent, error-stack-parser, graphql-sync, highlight.js, i (inflect), iconv-lite, joi, js-yaml, lodash, minimatch, qs, semver, sinon, and timezone have been deprecated in 3.9 and will be removed in a future version of ArangoDB.

  • Batch Requests API:
    The batch request REST API with the /_api/batch endpoint was deprecated in v3.8.0 and has been removed in v3.12.3. Instead of using this API, please use the HTTP interface for documents that can insert, update, replace or remove arrays of documents.

  • PUT method in Cursor API:
    The HTTP endpoint PUT /_api/cursor/<cursor-id> in the Cursor REST API is deprecated and will be removed in a future version. Please use the drop-in replacement POST /_api/cursor/<cursor-id> instead. The POST endpoint is functionally equivalent to the PUT endpoint, but does not violate idempotency requirements prescribed by the HTTP specification .

  • Fulltext indexes:
    The fulltext index type was deprecated from version 3.10 onwards and is removed in ArangoDB v4.0. It is recommended to use ArangoSearch for advanced full-text search capabilities.

  • Simple Queries:
    Idiomatic interface in arangosh to perform trivial queries, with corresponding endpoints on the server-side (/_api/simple/*). They are superseded by AQL queries, which can also be run in arangosh. AQL is a language on its own and way more powerful than Simple Queries could ever be. In fact, the still supported methods in the JavaScript API use AQL internally because of better performance and reduced maintenance complexity. The /_api/simple/* HTTP API endpoints have been removed in ArangoDB v4.0.

  • Accessing collections by ID instead of by name:
    Accessing collections by their internal ID instead of accessing them by name is deprecated and highly discouraged. This functionality may be removed in future versions of ArangoDB.

  • Old metrics REST API:
    The old metrics API under /_admin/metrics is deprecated and replaced by a new one under /_admin/metrics/v2 from version 3.8.0 on. This step was necessary because the old API did not follow quite a few Prometheus guidelines for metrics.

  • Statistics REST API:
    The endpoints /_admin/statistics, /_admin/statistics-description, /_admin/cluster/nodeStatistics, and /_admin/cluster/statistics are deprecated and removed in ArangoDB 4.0 in favor of the new metrics API with the endpoint GET /_admin/metrics. The metrics API provides a lot more information than the statistics endpoints, so it is much more useful and uses the standard Prometheus format.

  • Database target version REST API:
    The GET /_admin/database/target-version endpoint is deprecated in favor of the more general version API with the endpoint GET /_api/version. The endpoint is removed in ArangoDB v4.0.

  • Replication logger-follow REST API:
    The endpoint /_api/replication/logger-follow is deprecated since 3.4.0 and removed in ArangoDB v3.12.10. Client applications should use the REST API endpoint /_api/wal/tail instead, which is available since ArangoDB v3.3.

  • Replication REST API:
    Various endpoints related to asynchronous replication like the global applier have been removed in ArangoDB v3.12.10. These endpoints provided the low-level mechanisms for the user-managed Leader/Follower Replication and the Agency-managed Active Failover deployment modes, both for single servers.

    A few obsolete endpoints related to the write-ahead log have been removed, too.

    See API changes in ArangoDB 4.0 for details.

  • Loading and unloading of collections:
    The JavaScript functions for explicitly loading and unloading collections, db.<collection-name>.load() and db.<collection-name>.unload() and their REST API endpoints PUT /_api/collection/<collection-name>/load and PUT /_api/collection/<collection-name>/unload were deprecated in 3.8 and are removed in ArangoDB v4.0. The load/unload functionality was only useful with the MMFiles storage engine, which is not available anymore since 3.7.

  • Actions:
    Snippets of JavaScript code on the server-side for minimal custom endpoints. Since the Foxx revamp in 3.0, it became really easy to write Foxx Microservices, which allowed you to define custom endpoints even with complex business logic.

    From v3.5.0 onward, the system collections _routing and _modules are not created anymore when the _system database is first created (blank new data folder). They are not actively removed, they remain on upgrade or backup restoration from previous versions.

  • Legacy geo-spatial AQL functions:
    The following AQL functions are deprecated since v3.4.0 and removed in ArangoDB v4.0:

    • IS_IN_POLYGON
    • NEAR
    • WITHIN
    • WITHIN_RECTANGLE

    See Geo functions for substitutes.

  • bfs option in AQL graph traversal:
    Using the bfs attribute inside traversal options is deprecated since v3.8.0 and it is removed in ArangoDB v4.0. The preferred way to start a breadth-first traversal is by using the new order attribute, and setting it to a value of bfs.

  • overwrite option:
    The overwrite option for insert operations (either single document operations or AQL INSERT operations) is deprecated and removed in ArangoDB v4.0 in favor of the overwriteMode option, which provides more flexibility.

  • minReplicationFactor collection option:
    The minReplicationFactor option for collections has been renamed to writeConcern. You can no longer use minReplicationFactor as an alias for writeConcern from ArangoDB v4.0 onward.

  • Outdated startup options:
    The following arangod startup options are deprecated and will be removed in a future version:

    • --database.old-system-collections (no need to use it anymore)
    • --server.jwt-secret (use --server.jwt-secret-keyfile)
    • --arangosearch.threads / --arangosearch.threads-limit (use the following options instead):
      • --arangosearch.commit-threads
      • --arangosearch.commit-threads-idle
      • --arangosearch.consolidation-threads
      • --arangosearch.consolidation-threads-idle
    • --rocksdb.exclusive-writes (was intended only as a stopgap measure to make porting applications from MMFiles to RocksDB easier)
    • --network.protocol: network protocol to use for cluster-internal communication. The protocol will be auto-decided from version 3.9 onwards.
    • --query.allow-collections-in-expressions: allow full collections to be used in AQL expressions. This option defaults to false from version 3.9 onwards and will be removed in a future version. It is only useful to enable it when migrating from older versions.

    The following options are deprecated for arangorestore:

    • --default-number-of-shards (use --number-of-shards instead)
    • --default-replication-factor (use --replication-factor instead)

    The following startup options are deprecated in arangod and all client tools:

    • --log (use --log.level instead)
    • --log.use-local-time (use --log.time-format instead)
    • --log.use-microtime (use --log.time-format instead)
    • --log.performance (use --log.level instead)
  • Obsoleted startup options:
    Any startup options marked as obsolete can be removed in any future version of ArangoDB, so their usage is highly discouraged. Their functionality is already removed, but they still exist to prevent unknown startup option errors.

  • arangoimp executable:
    The arangoimport client tool was originally named arangoimp. ArangoDB release packages and container images up to v3.12 include the arangoimp executable or symlink as an alias for arangoimport. From ArangoDB v4.0, arangoimp is no longer included and you need to use arangoimport.

  • HTTP and JavaScript traversal APIs:
    The HTTP traversal API as well as the @arangodb/graph/traversal JavaScript traversal module were deprecated since version 3.4.0 and have been removed in version 3.12.0. You can traverse graphs with AQL instead.

  • Specialized index creation methods in JavaScript API:
    The following JavaScript methods for creating indexes from the ArangoShell (arangosh) or from within Foxx are deprecated:

    • collection.ensureHashIndex(...)
    • collection.ensureUniqueConstraint(...)
    • collection.ensureSkiplist(...)
    • collection.ensureUniqueSkiplist(...)
    • collection.ensureFulltextIndex(...)
    • collection.ensureGeoIndex(...)
    • collection.ensureGeoConstraint(...)

    Instead of using these methods, you should use the generic collection.ensureIndex(...) method, which provides a superset of all the deprecated methods. Also see Creating an index.