Dgraph vs Datomic vs Neo4j etc

I am evaluating databases for a project which will have data that I feel is best represented as a graph.

Can anyone comment on the advantages of choosing dgraph over some other available graph databases like datomic or neo4j?

I noticed in the dgraph tutorial there are some nice querying mechanisms which seem like they would be really useful however its hard to tell how well these things will mesh with my needs until I get deeper into an implementation.

However if there are some major pros or cons between dgraph and others then that might be a good way to narrow the choice down to begin with.

Does anyone have any experience with other solutions like datomic or neo4j and how they compare?
I presume that dgraph might be faster in some ways but lets assume the performance isnt the primary deciding factor what else would be an advantage in dgraphs corner?

pro:
dgraph supports distributed storage and execution while neo4j don’t, so the former supports much larger datasets.

con:
neo4j supports graph indexing thus substructure matching is considerably faster, dgraph has no such implementation as far as I know.

the query style also differs: a neo4j query starts with pattern matching, while a dgraph query starts with node searching.

In Dgraph, Data is sharded and replicated across servers, using consensus for writes. Sharding feature is not available in Neo4j.

Dgraph is Horizontal Scalable and Neo4j is not. Dgraph add servers to cluster on the fly to distribute data better, whereas, Neo4j only supports full data replicas.

Communication using clients over binary feature is available in both. Dgraph uses GRPC and Neo4j uses bolt protocol.

In Dgraph you can load arbitrarily connected RDF data using dgraphloader. Neo4j supports only loading relational data in CSV format using the loader.

Dgraph supports Geospatial Queries.

For interwined reads & writes, Dgraph is atleast 3 to 6 times faster as compared to Neo4j.

Dgraph is much faster to load graph data when compared to Neo4j.

DGraph is used because of its better functionality as in it allows you to create Arbitrary deep joins, saves time in Traversing and allow you to query across entire database without any table limitations.

We could add the old “Java Vs Go Lang” https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go

Having idea that Neo4J uses JVM (JAVA) and Dgraph is pure Go lang. We have lower CPU usage, memory and more efficiency. Apart from all the features already mentioned.

and Neo4j is certainly more mature then Dgraph and Datomic has some very interesting features, but the first thing you may want to consider is licensing/pricing vs. freely available features.
I’m not saying Dgraph is the best solution, in fact I am currently leaning towards AragngoDb and I think if you are starting a commercial project this should be a primary concern. For me, licencing eliminated both Neo4j and Datomic even though I’m a Lisper/Sceemer(PLT aka Racket) at heart and really like Clojure.

dgraph is faster than dgraph?

1 Like

@rgupta Thank you for correcting me. Updated it in my post. :slight_smile:

1 Like

Any thoughts on comparison between Dgraph and Tiger Graph ?

Apart from licensing?

Dgraph Provides consistency.
Dgraph supports Multi-Master replication using RAFT and also supports all of the following languages:

C# 
C++ 
Go
Java
JavaScript (Node.js)
PHP
Python
Ruby

whereas Tiger graph supports only C++ and Java