SatelliteGraphs in the upcoming ArangoDB 3.7
Disclaimer: SatelliteGraphs are currently only available in the Alpha 2 of the upcoming ArangoDB 3.7 Enterprise Edition. You can download the Alpha 2 preview here.
ArangoDB is a distributed Database allowing it to query large datasets distributed across multiple nodes. Great scale often comes at a price though, in this case network traffic and coordination.
When executing queries involving graph traversals, shortest path, or k-shortest paths computations in an ArangoDB cluster, data has to be exchanged between different servers. In particular graph traversals are usually executed on a Coordinator, because they need global information. This results in a lot of network traffic and slow query execution.
SatelliteGraphs are the natural extension of the concept of SatelliteCollections, improving join operations by replicating a small collection to all nodes, to graphs.
ArangoDB, being a Multi-Model database, is often used for use-cases where one has large amounts of data in collections sharded across multiple database nodes for scalability and performance.
Consider for example the massive amount of sensor data generated by IoT use-cases. The corresponding metadata describing the individual sensors (locations, type, accuracy, …) is stored in a graph allowing simple graph queries retrieving a particular subset of sensors. A simplified version of this use case is shown in the Repl at the bottom of the page.
Without SatelliteGraphs this query would involve a lot of network traffic as the query would need to fetch all data and then execute the Graph traversal.
But as the graph based metadata is small, we can define it as a SatelliteGraph which is synchronously replicated to all DB-Servers that are part of a cluster. DB-Servers can then execute graph traversals, shortest path, and k-shortest paths computations locally. Having all collections defined in the graph stored locally greatly improves performance for such queries, while still maintaining the benefits of a distributed environment.