dgraph-io / dgraph

The high-performance database for modern applications
https://dgraph.io
Other
20.43k stars 1.5k forks source link

Hasura vs Dgraph comparison #3997

Closed rrjanbiah closed 5 years ago

rrjanbiah commented 5 years ago

Experience Report

Apologies, this is sort of question + feature request.

What you wanted to do

Overall, it seems to me that Hasura, Cayley, Prisma, PostGraphile, Graphile, even PostgREST and pREST all can be used for same use case: creating quick GraphQL backend

Dgraph is having very good documentation on comparing with Cayley (but missing other counterparts). But, if the comparison can cover other software, it will be very helpful

Any external references to support your case

Similar ticket in https://github.com/hasura/graphql-engine/issues/2883

martinmr commented 5 years ago

Dgraph is a database while Hasura, and Prisma are not so it's not really possible to compare them in a meaningful way.

We are actually working on a new feature that would allow users to create GraphQL backends using Dgraph but that feature is not ready to release. Once it is, a comparison between this tool and Hasura and others would make more sense. We are hoping that Dgraph's native graph capabilities would make writing a GraphQL backend easier than it's with Postgres or another SQL database.

Closing this issue for now since there's not a lot more to discuss until that feature is out but feel free to continue the conversation if you have more questions.

PS: the best place for this type of topics would be our discuss forum at http://discuss.dgraph.io

rrjanbiah commented 5 years ago

@martinmr

Thank you so much for your reply. Forgive me if I'm wrong... Cayley also looks not a real database in that sense. So, since you've compared it against Cayley, may be you can add other counterparts too--at least in marketing perspective. At least for me, Dgraph looks more than a graph database (again, I may be wrong though)

martinmr commented 5 years ago

Cayley calls itself a graph database. I don't know a lot about it to know how accurate that is but from the README of their repo that seems to be the case. Thus, it makes sense to compare Dgraph and Cayley.

manishrjain commented 5 years ago

Perhaps once we have built out our GraphQL layer, it might make more sense to do some performance benchmarks. But, Hasura is just a GraphQL layer on top of PostGres, which only runs on one server. Dgraph is designed to scale horizontally. So, running Dgraph on just one server to compare against PostGres might not be a great use case for Dgraph.

rrjanbiah commented 5 years ago

@manishrjain Thanks a lot for your additional notes. AFAIK, horizontal scaling is possible in Postgres through CitusDB. As Hasura has support for Citus (https://github.com/hasura/graphql-on-various-pg/tree/master/citus ) , horizontal scaling might be possible. But, you seem to be right as Hasura didn't offer any official word yet on that https://github.com/hasura/graphql-engine/issues/1183

Edit: Fixed Hasura's Citus link

rrjanbiah commented 5 years ago

@manishrjain Sorry, one more thing....

Perhaps once we have built out our GraphQL layer

But https://docs.dgraph.io/master/query-language/ claims to support GraphQL+-. So, are there any known limitations of GraphQL+-?

(Apologies for using GitHub... but hope this will be useful for the person who will do the documentation)

fungilation commented 4 years ago

Perhaps once we have built out our GraphQL layer, it might make more sense to do some performance benchmarks. But, Hasura is just a GraphQL layer on top of PostGres, which only runs on one server. Dgraph is designed to scale horizontally. So, running Dgraph on just one server to compare against PostGres might not be a great use case for Dgraph.

That's wrong. Postgresql since v11 has added official partitioning and sharding capabilities that used to be unofficial extensions.

And with https://graphql.dgraph.io/ (official graphql interface, not just graphql+- as "inspired" but not actual graphql), I think this discussion should be restarted. I'm evaluating BE tech for a largish tech company with many microservices. For new product verticals, I'm evaluating whether something like Dgraph makes sense, being its own database and designed from the start with sharding scalability in mind, or Hasura + Pgsql (with sharding as an afterthought and harder to setup/support for devops).

Direct comparison between the 2 (Dgraph, Hasura+Pgsql) would be much appreciated, as database solutions to fit within a larger Graphql BE with schema stitching. Dgraph looks great, but I'm concerned about proven scalability (being new), reliability and docs for devops in production.