ArangoDB Closes 2.2M Euro Investment Led by Target Partners
arangodb.com
arangodb.com
My team just spent 3 weeks investigating document stores and ultimately settled on arangoDB because: 1. Graph functionality, 2. Read after write consistency, 3. Partial updates, 4. Efficient joins across shards, 5. The (limited) text search features, 6. AQL is just pretty sweet. There was a whole spreadsheet matrix but that's what I can remember without pulling it up.
We really liked RethinkDB for its change feeds. We are probably going to use Elastic for search, because we want to expose Lucene to our users, so we'll probably have to write some foxx endpoints to manage the data replication. I like the idea of foxx but really hate that it's JavaScript based. I'm planning on looking into using ScalaJS if possible.
It should be possible to use ScalaJS with Foxx as long as it is transpiled in advance and produces node-compatible modules (i.e. something that can be consumed by and can consume other node modules using `require`). I've heard of other people successfully using Babel, TypeScript and even ClojureScript with Foxx.
If it makes sense to take off thread, my email is daniel.porter@pwc.com. Thanks so much for sharing your knowledge!
We have a dedicated #cluster channel were you will probably have better luck getting detailed answers to technical questions. :)
I see a number of reasons why ArangoDB might be more interesting than Rethink:
1) Arango is a multi model database with graph, noSQL, and key-value pairs. Even if Rethink has joins and complex queries, it will never be as flexible for general data modelling.
2) Foxx is a logical layer on top of the database. While it's limited compared to a classic server side application it offers way more flexibility than Rethink could ever.
3) Arango (or Foxx) don't offer realtime data like Rethink or Firebase, but quite frankly there are few cases where such feature is needed.
On our project we are probably going to use DreamFactory instead of Arango because we are more comfortable with SQL dbs and it has a number of other valuable features over Arango.
Meteor also has something called "reactive data sources" although Meteor is not really a DB.
As far as realtime and multi-model (graph) I work on https://github.com/amark/gun , which is also distributed and offline-first.
For graph DBs, I've found nothing easier to setup and more efficient than Arango. The team there is very receptive and determined too.
I'd love it if Arango had a changes feed, but realistically it's really easy to just pipe the data into a stream from whereever gets confirmed writes to the database. This is how I've always done it outside of Couch/Rethink. It helps decouple the stream from the db concept in case more data sources or sinks are added later (very common in my experience).
[0]: https://www.arangodb.com/2016/05/getting-closer-arangodb-3-0...
[1]: https://github.com/arangodb/jepsen/commit/2b79809df73ca6c755...
How will it get the performance of a Neo4J,Titan et al. with this model? Does it index them specially?
Seems odd to ignore Gremlin and OpenCypher just to have a proprietary / "yet another standard" graph query language.
One major difference is that ArangoDB has full support of transactions across collections. Also while MongoDB now has limited graph functionality, ArangoDB is actually optimized for graph queries and can do arbitrary traversals and joins very efficiently.
The problem with Gremlin/OpenCypher is that they are primarily designed as graph query languages. ArangoDB takes a multi-model approach and many ArangoDB users focus on documents first and add in graph queries as an optimization step as their products mature. AQL is designed to be very easy to learn and mixes the document and graph paradigms seamlessly, embracing the multi-model nature of the database.
Personally I think that starting with a blank slate was the right choice compared to other multi-model databases that have found it necessary to extend a subset of a standard query language with their own proprietary additions to achieve the same goals.
We did a benchmark that shows you the performance regarding Neo4J. Before you shout that it made by us have a look, please. It's all open source. The data, the scripts and so on. Everything we use for it, we described in detail.
AQL is much more than a graph query language; therefore, Gremlin and OpenCypher aren't alternatives.
The only alternative to that is to just kind of pretend that it all works without doing the hard work to verify. You saw how that ended up for a lot of other systems that Kyle has tested.
PS: I only started using ArangoDB recently for the first time on a client project and it was refreshing to say the least. Being able to do complex joins, coming from a Mongo environment feels so much better.
We're currently using Arango and it gets tedious to call foxx-manager replace every time I'm doing a change on the db
We're constantly trying to improve the developer experience of Foxx, though, and the partial rewrite of Foxx for ArangoDB 3.0 was a big part of that, hopefully reducing the need for debugging by making the API easier to reason about.
During development I would recommend trying out the development mode and syncing your changes to the deployed service on the file system. For debugging queries it can also be helpful to run them from the web interface first and then use `aql` template strings in JavaScript instead of constructing the queries piece by piece.
Is there plan to support gremlin query natively ?
Does it do something new, or is it just another neat query language on top of the same old storage algos? The "3-in-one" pitch doesn't fly for me unless the underlying storage tech does something special.