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)
11 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.

3 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?”.

4 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.

6 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.

2 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.