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?
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 https://github.com/jschoch/trabant 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.
there is also: https://github.com/florinpatrascu/bolt_sips; a newer version of Neo4j.Sips, focusing on using the Bolt protocol. Where Bolt is: Neo4j’s newest network protocol, designed for performance. HTH
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
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.
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
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.
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.