As I was lamenting on my Twitter about Fauna being closed source, a follower of mine pointed to ArangoDB as an open source alternative. I’m curious if Fauna’s leadership would be able to explain why Fauna is the better choice between the two. Thanks!
edit: It would also be nice if you added Fauna to this benchmark for a performance comparison.
But pricing seems to be a big one. Fauna has a good free tier, Arrango DB Oasis looks like it starts at $172/mo. That’d be a ‘no go’ for a lot of devs working on side projects. I love the free tier + pay to scale model myself.
I’m obviously a FaunaDB employee, I’m not Fauna’s leadership though so I’m sorry to disappoint you . What I’m going to write is my personal opinion though since comparing databases is incredibly hard, and we prefer not to pick fights with other databases since we believe most databases actively contribute to how the database landscape evolves.
We are providing comparison guides such as the one for MongoDB where we try to be as objective as possible, soon there will be one for DynamoDB. For ArangoDB, we didn’t plan one since until now, nobody compared us to ArangoDB.
I think there is a reason for that since there are quite some differences. We are comparing apples with oranges though since FaunaDB is built to operate as a distributed database and in production FaunaDB only comes as a cloud database so it makes most sense to compare it to ArangoDB Oasis.
Objective comparison (or at least an attempt):
Strong consistency: FaunaDB is strongly consistent across nodes, across collections, across nodes… no matter what. ArangoDB provides strong consistency on a single instance and atomic operations when operating in cluster mode. If we compare cluster mode since FaunaDB, atomic single document operations if a far weaker guarantee than FaunaDB’s consistency guarantees.
Managed vs Zero operations: ArangoDB Oasis talks of a managed service, where you define machine sizes, select a region, and they create the cluster for you. You are essentially setting the limits of your cluster. FaunaDB is zero operations, you don’t care (nor have to care) about machines/memory/CPU. Click on New Database and expect that it’s going to scale for you is a quite different offering.
Multi-region: FaunaDB is multi-region, by default. When you set up an ArangoDB cluster you choose a region. ArangoDB does have an async read-only replication setup to replicate data from cluster A to cluster B in one direction. FaunaDB is truly multi-region and consistent. You can write to any node and another node that executes a query that requires this data will be able to read it as soon as the transaction is confirmed.
Multi-model: both are multi-model but ArangoDB profiles itself much more as a Graph database. FaunaDB has graph-like features but is not built to do queries like: “give me each connection of person X, and that connection should be between 1 and 3 hops”. In that sense, FaunaDB is not a true Graph database but it has similar features. Our references are very similar to index-free adjacency and FQL makes the tree-walking type of queries very efficient (e.g. GraphQL queries). FaunaDB is an OLTP relational indexed document database with some graph-like features and temporal aspects. ArangoDB tries to be a true graph database as well as a document database. As far as I know they do not provide the temporal aspect.
Features: everything between FaunaDB and ArangoDB in terms of features is different, the language is different, the indexes behave different, our dashboard is different. Which one pleases you most is a personal preference.
Open-source/closed source:
Open-source/closed source: as you pointed out, that’s also one of the differences. I do not have any more information than what Evan already mentioned here. Evan or Matt will be the only who can truly answer “why we are closed source”. However, there have been many events in history where a company ran into problems due to being open-source due to loopholes in the license, at least that’s not a risk FaunaDB has. FaunaDB is radically different (inspired by Calvin), developing a new database from scratch is a rather costly and labor intensive endeavor where a lot of factors have to be taken into account (including funding). I won’t go into discussion on this though since I don’t know the exact details of this decision.
Personal experience of 4 years ago:
I worked on some fancy visualization projects and one of those which does not have an example online was built on a Neo4J database provided by a client. For that specific case we had performance problems on one specific query. Hence I looked into OrientDB and ArangoDB (devs of those two databases get into ‘fights’ often on stackoverflow/reddit which are quite interesting). ArangoDB offered something we needed something called vertex-centric indexes which could solve our problem.
I dove in and my personal experience was that the two models were really separate things. You either chose graph … or chose document but trying to do both just didn’t really work well. I got the document-style working first since it looked easier but never got the graph-style working. I recall that indexes were not used when they should be etc. I had high hopes since ArangoDB looked awesome to me but it did not live up to the expectations back then to me. That’s 4 years ago, by now they might be awesome and I truly hope so since I like the product but I didn’t follow up. That said, it’s a completely different offering than FaunaDB.