Any experiences with GraphDB's

I’m planning my next project. I want to use Phoenix very much but I have few doubts. First and the most important is how Elixir can communicate with GraphDB’s, if able.
Because there is no decision about proper DB to use, the best if there will be possibility to use Tinkerpop’s Gremlin directly from code.

Do you have any experiences with GraphDB’s or gremlin?


Not exactly a reply to your question, but this thread might contain some posts you might find interesting:

Neo4j has a REST API and there are elixir wrappers like

if you do not want to use it directly. Gremlin runs on JVM so unless someone
decides to port it (there are people experimenting with similar ideas obviously not ready for production use). GraphDB that will not be a fun stack to support. Another thing to consider is there a need for Graph database in the first place while in theory they should perform better then RDBMSes in reality depending on dataset and types of queries it’s often not the case.


I have only used OrientDB with Python but there are two libraries for it in Elixir: marco_polo and ex_orient. I hope that helps.


Both, OrientDB and Neo4j are the options, so thanks for sharing the links.

there is also:; a newer version of Neo4j.Sips, focusing on using the Bolt protocol. Where Bolt is: Neo4j’s newest network protocol, designed for performance. HTH


Does anyone know if any Elixir / Erlang libraries exist for connecting to TitanDB or a Gremlin server?


We have been using ArangoDb for a graph store and queries too. That has worked fine just using the plain HTTP API. We have also used it for a domain document store for our DDD aggregates, commands and events (as documents) and their associations/ causality stored as graphs.


Would you like to collaborate to build a good HTTP API for ArangoDB? I have been using Xarango. I think we can borrow some design features from elixir-rethinkdb

1 Like

Has Xarango been working? When I looked today an issue in the repository suggested that it wasn’t working with newer versions of ArangoDB. Looks like a nice library and fit for Elixir, though.

Only a few tests fail. That repo needs maintenance. Generally, it works fine.

1 Like

We have forked the project and are supporting it on best efforts basis. Being a 2 members developer team we cannot devote the required time to build all the features. However, some mission-critical features have been corrected.

By Mar 2019, we hope to have all the necessary features available and documented.

Can you please contribute in the project referenced above and help it grow? Thus, allowing you to get involved with the Elixir community.

You can help by doing the following:
0: Implement missing/incomplete features
1: Code review
2: Write docs
3: Identifying bugs
4: Miscellaneous tasks


Awesome! Hopefully I will be up-to-speed enough to contribute soon.

1 Like

I’ve used Neo4J outside of Elixir and can speak highly of my experience. I can be used with or without a schema. The Cypher query language, which it appears the drivers above use, is familiar and powerful. If you ever need to step outside of Elixir, the desktop front-end is easy to use and offers some nice graphical presentations.

Sadly we cannot support Xarango project anymore due to some issues faced with ArangoDB. We have released 0.7.0 which fixes some bugs in 3.3.x and prepares the package for all the new features coming up in 3.4.x-RC.

We have migrated to CouchDB because of easier replication and FOSS community.

I saw this a few days ago. What happened?

At 8hoot we received some GCP credits and needed to replicate data from old infrastructure to the new GCP ones. And apparently, replication between different zones is only supported in Enterprise edition. Add to that that even after setting up multiple clusters in dev, staging, and prod, it never became my second nature to spin up new clusters. Once you do something repetitively then it becomes your second nature. Like iex -S mix or mix phx.server they quickly became second nature but ArangoDB didn’t. So we thought it to be best to switch over to something saner.

If you do have to replicate data between infrastructure from different cloud providers then set up an IPSec VPN using LibreSWAN or StrongSWAN. Using LIbreSWAN we replicated the data and quickly switched to CouchDB.


1 Like