# Removal of \_predicate\_ keyword

**URL:** <https://discuss.dgraph.io/t/removal-of-predicate-keyword/5520>\
**Category:** Dgraph\
**Created:** [November 26, 2019, 9:34am UTC](https://discuss.dgraph.io/t/removal-of-predicate-keyword/5520 "2019-11-26T09:34:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![kundan59](https://yyz1.discourse-cdn.com/flex007/user_avatar/discuss.dgraph.io/kundan59/32/2284_2.png) [@kundan59](https://discuss.dgraph.io/u/kundan59)\
**Post date:** [November 26, 2019, 9:34am UTC](https://discuss.dgraph.io/t/removal-of-predicate-keyword/5520/1 "2019-11-26T09:34:57Z")

</div>

In dgraph v1.1.0 _predicate_ keyword is removed. I am just curious to know the exact reason behind this. The reason mentioned in the [blog](https://blog.dgraph.io/post/release-v1.1.0/): due to long-standing performance and transactional concerns around `_predicate_` is not much clear. Can you please elaborate more?

---

<div class="post-metadata">

**Author:** ![martinmr](https://yyz1.discourse-cdn.com/flex007/user_avatar/discuss.dgraph.io/martinmr/32/1408_2.png) [@martinmr](https://discuss.dgraph.io/u/martinmr)\
**Post date:** [November 27, 2019, 7:51pm UTC](https://discuss.dgraph.io/t/removal-of-predicate-keyword/5520/2 "2019-11-27T19:51:01Z")

</div>

Sure, I can expand on this.

Basically, you can consider `_predicate_` to be a predicate of type `[string]` that was internally maintained by Dgraph. Every time a node was updated, so was this predicate. Usually, when an update is made, it has to go through our consensus protocol (RAFT) to make sure our consistency guarantees are met. However, since this predicate is updated for every node that is touched by a mutation, guaranteeing the consistency of `_predicate_` is very costly. So the decision was made to make an exception for this predicate.

The other performance concern is that we need to store this predicate for every node in the graph so a lot of storage is spent for this purpose. Ultimately, the lack of consistency and the storage costs caused us to drop support for this when we introduced an alternative way to do expand queries (the type system introduced in version 1.1).

Hope this helps.
