Dgraph Product Roadmap 2021

Features

Enterprise Features

GraphQL Features

  • GraphQL Upserts [Dgraph 21.03] (2021-Q1)
  • Optimise the JSON parsing for GraphQL [Dgraph 21.03] (2021-Q1)
  • Multiple Unique @id fields [Dgraph 21.03] (2021-Q1)
  • Lambda hooks on GraphQL Upserts [Dgraph 21.03] (2021-Q1)
  • Improvements to custom DQL [Dgraph 21.03] (2021-Q1)
  • Lambda should continue to resolve GraphQL
  • Field-level Auth
  • Remote authorization hooks
  • Auth on Union type
  • Pre/post auth hooks for update mutation
  • Global auth rules
  • Replacing types in GraphQL schema: show left over data

Dgraph Features

  • Support GraphQL variables in mutations (2021-Q2)
  • Query Planner
  • String transformation functions
  • Webhooks on add/update/delete mutations [Dgraph 21.03] (2021-Q1)
  • TF-IDF scoring on full-text search [Dgraph 21.07]
  • Hot tablet moves [Dgraph 21.07]
  • Pick random node [Dgraph 21.07]
  • Support for JSON blob
  • Support for BigInt, BigFloat (P4 - see if this is still needed)

Integrations with Ecosystem

  • Apollo Federation [Dgraph 21.03] (2021-Q1)
  • Integration with Kafka
  • Integration with KeyLines
  • Support for Gremlin
  • Integration with BI Tools (e.g. Tableau)
  • Import Neo4j json or CSV
  • ORM for top-3 languages ( JS/TS, Py, Java )
  • Load/stream data directly from SQL to Dgraph Cloud
  • Load/stream data directly from MongoDB to Dgraph Cloud
  • Load/stream data directly from Elastic to Dgraph Cloud

Performance and Optimization

  • LDBC benchmark (2021-Q1)
  • Continuous benchmarks (2021-Q2)
  • Backups should work with 8 GB [Dgraph 21.03] (2021-Q1)
  • Scale to 50 TBs of data
  • Roaring Bitmap (2021-Q3)

Monitoring

  • Transaction Metrics [Dgraph 21.03] (2021-Q1)
  • Metrics for leadership status and leadership election [Dgraph 21.03] (2021-Q1)
15 Likes

I think it would be nice to see this roadmap separated by topics. Like GraphQL, Slash/Cloud GraphQL, Dgraph Core, Tools(third party).

5 Likes

Kafka is made with Java, same as Neo4j.

Since one of the plus point of Dgraph is itā€™s written in Golang. Why not use a message queue that is written in Golang?

Checkout NATS being Incubated by Cloud Native Computing Foundation.

P.S. I feel like Dgraph team already knows this, but still I thought I would put it out here.

5 Likes

Kafka and RabbitMQ are very popular in their area. If the implementation is fine, I donā€™t see why not support it in the future for RabbitMQ or NATS. The language which they were built, doesnā€™t matter much. What matters is whether many of our users are using it. For example, if we have, for some crazy reason, several users using SOAP. Why not? it would be really crazy to implement, but ā€œif it is popular, why not?ā€.

5 Likes

:heart_eyes: String Functions in DQL

:partying_face: The Need for Update auth after logic

:sunglasses: Using @auth on individual fields?

:nerd_face: Can predicate add a unique indexļ¼Ÿ - #3 by amaster507

:cowboy_hat_face: JSON (blob) as a scalar - #10 by amaster507

:star_struck: :100: :exploding_head: :sparkling_heart: :boom: :scream: :smiling_face_with_three_hearts: I fully 1,000% support this idea. This sounds similiar to what @mrjn mentioned in his latest podcast appearance about Dgraph supporting subscriptions for updates. This would really help with syncing with 3rd party tools or doing any kind of data migration between two systems.

I wouldā€™ve liked to seen Proposal Nested Object Filters for GraphQL rewritten as var blocks in DQL but I can work around it myself for now. Taking a brief look at Gremlinā€¦ if that gets implemented then maybe there would be possible workarounds using some gremlin as a custom resolver. It appears to be more object-oriented language based and I would assume it would get implemented with itā€™s own endpoint interpreted by custom go functions and not rewritten to DQL. It seems like a functional language like that would be better implemented directly to itā€™s correlating Go functions.

7 Likes

Hi, bro. will u guys let dgraph support multi edge? for example: Alice and Mary was univesity classmate, but except that, they also was primery school classmate and high school classmate. and these relationship both belongs to classmate.

Excited for CDC. I the realize first pass is targeting the biggest target (kafka), but would love if the team considers building that in a pluggable way. Weā€™ve gone cloud native and ditching kafka for PubSub was a great decision for us :slight_smile:

1 Like

Regarding Keylines, I recently integrated both Keylines and vis.js with dgraph (via VueJS). Iā€™m happy to share my lessons learned with the team as you tackle this.

3 Likes

@matthewmcneely That would be great! Could you share what you did in a separate Discuss topic?

Regarding ā€œIntegrations with Ecosystemā€, what does ā€œLoad/stream data directly from SQL to Dgraph Cloudā€ mean for the community version, does it mean we can ā€œLoad/stream data directly from SQL to Dgraph Cloudā€ or does it mean ā€œLoad/stream data directly from SQL to Dgraph Cloud including on Premises installationsā€? Thanks for clarifying!

Please add this to the roadmap:

Support GraphQL over Websocket

Sorry if this is a longer post - let me know if this is not the right place to ask these questions, and I can move this post elsewhere.

Weā€™re evaluating dgraph (v/s postgres) for our upcoming project. Since a lot of value in our schema is in entity relationships, I think a native graph db is a better fit.

Iā€™ve gone through fair bit of documentation. Iā€™m wondering about roadmap status of the following features.

  • Graphql advanced query features - currently Graphql is supported but a few key features are missing like (recursive) graph traversals, arbitrary group bys etc. Really donā€™t want my team to learn both Graphql and DQL. And at first glance, Graphql seems to have cleaner syntax - esp in declaring the schema.

  • On the question of group bys. Can we group by on multiple predicates? Did not see this in the documentation.

  • Composite unique fields. This is currently not supported. How about composite indices?

  • Edge predicates or properties - I know of facets - but did not see an example in Graphql documentation. Is there support in Graphql schema?

  • Atomically mutating multiple unrelated things in a transaction. Is this possible? Maybe I missed an example.

  • Some kind of ORM support in Python ala SQLAlchemy.

Hi @na-ka-na welcome to the Dgraph forums! Let me walk you through some of your questions:

  1. DQL is like GraphQL. I would advise starting with GraphQL. Once you are familiar with GraphQL, DQL comes immediately. Check out dgraph.io/learn for more information
  2. Yes. You can group on multiple predicate
  3. Composite uniques are coming! As for indices, well, indices in Dgraph are a bit different from the SQL world. If you mean RDBMS style composite indices, you may not need them.
  4. No, GraphQL (in their spec) does not support edge predicates
  5. Yes. You can have multiple mutation blocks that do different things in each block.
  6. Hmmā€¦ not sure on thatā€¦

I think many people stumble when they come from a SQL world. I suggest going through this course and if you want I can also jump on a call to provide some help with your schema and other questions.

Some DQL features like recurse arenā€™t possible as far as I know in GraphQL context. Due to its hard Typed Schema model. You canā€™t do arbitrary queries without building an arbitrary Schema on the fly.

Iā€™m not so sure about this. Unless we have added this support lately.

What is Edge predicates? Isnā€™t Facets anyway? We donā€™t use this terminology. Maybe Edge properties to indicate Facets. But using this can confuse sometimes in a conversation.

Hi! I see Gremlin on the 2021 roadmap (and on the 2020 roadmap before that). Where would be a good place to track/petition for support for Gremlin?

Thereā€™s a few comments by @mrjn in #8479 and thereā€™s this closer from @chewxy #9554, and there is some discussion from ancient threads (2016-2019). These donā€™t seem like the right place.


Why, if itā€™s of use:

I had dreams of Dgraph being a true graph backend-as-a-service, where GraphQL is the database. With facets in the wind and no plan for recursive traversals itā€™s becoming clear to me that that isnā€™t a practical reality any time soon.

So now Iā€™m back to making the technology decisions Iā€™d make with any graph DB, and one of those is query language. If Iā€™m going to write some custom resolvers that hit my DB, Iā€™d pick Gremlin over DQL. Itā€™s standard, familiar, and portable (andā€“while this is purely preferenceā€“itā€™s actually a bit harder on me for DQL to be like-but-not-quite-the-same as GraphQL. Iā€™m constantly confusing functions and directives!). I should probably even throw SPARQL in here.

5 Likes

Is this roadmap up to date?

There are several adoption blockers listed, but no indicators where in priority they are, or if theyā€™re being actively worked on/due for release in 21.07; It looks like the original post with the list was last updated on Jan 13th.

1 Like

(it was originally posted January 13th, last edited May 18. If you click the pencil by the Jan 13 date on the original post you can see the edits.)

To echo the point though, can we get this updated with current understandings of timelines?

3 Likes

Thanks for the clarification, I didnā€™t realize the edit history was available under the pencil.

LDBC benchmark (2021-Q1)

Hi, Dgraph,
Recently, I am doing some experiments based on ldbc_snb benchmark.
I want to know if you have implemented ldbc_snb benchmark for Dgraph? Could you please provide me a solution to run ldbc_snb benchmark on Dgraph?

Thanks for your kindly support and Iā€™m looking forward to your early reply!

2 Likes