JanusGraph for Compose


JanusGraph Deprecation

As of September 2019, Compose will soon no longer support JanusGraph on the platform. Provisioning of new JanusGraph deployments is disabled.

JanusGraph is a distributed graph database that allows for the storage and retrieval of data as a series of nodes and relationships, referred to as edges. Its architecture enables users to separately scale their compute and data layers to handle higher workloads, throughput, or storage needs.

JanusGraph for All is a general introduction to JanusGraph on Compose.

Are you wondering what you'll get, or can get, with a Compose JanusGraph deployment? Want to know what you'll need to do to manage it? Check out some of the implementation features and details down in JanusGraph for Ops and Admins.

Just deployed JanusGraph and want to get coding with it? Developing an application or want to try a new stack? Then see the JanusGraph for Developers section for resources on how to connect from different languages, command line tools and more information to get you started.

JanusGraph for All

JanusGraph allows for the storage and retrieval of edges and vertices in a graph, with all entities having properties - the combination is called a property graph. It allows complex relationships to be modeled with a data-rich graph.

There are two components to a JanusGraph deployment: Engines and Storage. The JanusGraph Engines are configured with the Apache TinkerPop framework and provide the interface to create, configure, traverse, and persist the graph model onto the JanusGraph Storage layer. The JanusGraph Storage layer on Compose is implemented with the Scylla database. This combination allows for high-availability, partition tolerance, and eventual consistency.

Apache TinkerPop allows for connecting to the graph using HTTP or WebSocket connections and writing graph queries using the Gremlin query language. Users can also interact with the database through the Gremlin console.

JanusGraph On Compose

When deployed on Compose, JanusGraph comes with the standard Compose features.

Compose Configurations

All JanusGraph Deployments are high-availability clusters comprised of two JanusGraph Engine nodes, backed by a three node Storage cluster powered by Scylla. Access is provided by two TCP HAProxy portals.

Expansion Options

JanusGraph can be both vertically and horizontally scaled. Vertical scaling allows you to add memory to the JanusGraph Engines (for more complex workloads), and horizontal scaling allows you to add additional Engines (for more throughput). The JanusGraph Storage cluster can be manually scaled as your data set grows. Auto-scaling is not currently available for JanusGraph.

For more information, see the JanusGraph Resources and Scaling page.

Datacenter Availability

See Compose Datacenter Availability for current location availability.

Billing and Costs

JanusGraph deployments are billed based on disk usage for the storage layer and total memory allocation for the engine layer. Your JanusGraph deployment usage is measured hourly. It is then grouped into a single monthly billing cycle. This means that any scaling or add-on usage will be charged from when the new resource was provisioned — not for the month. You can see your deployment's usage in the Overview panel, under Current Usage.

For Ops and Admins

High-availability and Failover Details

JanusGraph clusters consist of two JanusGraph Engines, backed by a three-node JanusGraph Storage cluster running the Scylla database. The two JanusGraph Engine nodes are configured to be redundant and are isolated from each other. The Scylla database nodes are equally important replicas and there is no concept of master/primary; instead, all Scylla nodes know about each other and replicate data between each other. The Scylla replication factor is set to 3, replicating each row over three nodes within the cluster.

Access to the JanusGraph deployment is provided by two TCP Haproxy portals. The TCP Haproxy portals direct queries to the JanusGraph Engine nodes in a round-robin pattern, seeking an even distribution of load. Nodes will automatically be added to and removed from the round-robin list when nodes fail and return.


JanusGraph Storage backups are created by backing up the Scylla database nodes. Scylla backups are taken using the Scylla snapshot utility, backing up all the on-disk data files stored in the data directory. The snapshot can run while your databases are on-line. Incremental backups are not enabled on Compose deployments (which is also the default for Scylla), so any one backup can be used to make a full restore of your deployment.

Should something happen to your current deployment; JanusGraph backups can be restored directly into a new JanusGraph deployment. The Backups panel has all the available daily, weekly, monthly, or on-demand backups for you to restore from. It is also possible to trigger a restore operation from the Compose API.

General information on backup schedules, downloading, and restoring can be found on the Backups page.

For Developers

Connecting to JanusGraph

The Overview panel of the Compose UI provides the basic information you need to get connected to your databases. In the section Connection info you will find Credentials and Connection Strings for your application, including a CURL command for connecting. For more information, including examples, see the Connecting to JanusGraph page.

Additional Resources and Related Articles

The full list of documentation for JanusGraph is in the side-bar, in addition to all things Compose.

For more than just help docs, check out Compose Articles for more how-to's and information on JanusGraph on Compose.

Still Need Help?

If this article didn't solve things, summon a human and get some help!

What’s Next