Dgraph, Microservices, Time series, Scalability and CI/CD

Not natively possible. But you can do custom approaches for that. e.g: Migrating (renaming predicates, etc). You can create scripts for the 5 changes.

You can mark the predicates as deprecated, versioned, etc, manually. You can use either the rename process with upsert block or use facets instead. And all your future queries must take into account facets (which would work as a kind of “metadata”).

e.g using facets with List Type:

username: [string] .

{
  set {
    _:Node0 <username> "Lucas"  (pred_version="1.1") .
    _:Node0 <username> "Lucas Lira"  (pred_version="1.5") .
  }
}

Query and Result

{
  q(func: has(username)){
    username @facets(pred_version)
  }
}
{
  "data": {
    "q": [
      {
        "username|pred_version": {
          "0": "1.5",
          "1": "1.1"
        },
        "username": [
          "Lucas Lira",
          "Lucas"
        ]
      }
    ]
  }
}
{
  q(func: has(username)){
    username @facets(eq(pred_version,"1.1"))
  }
}
{
  "data": {
    "q": [
      {
        "username": [
          "Lucas"
        ]
      }
    ]
  },
}
{
  q(func: has(username)){
    username @facets(eq(pred_version,"1.5"))
  }
}
{
  "data": {
    "q": [
      {
        "username": [
          "Lucas Lira"
        ]
      }
    ]
  }
}

Deleting a specify value from the List Type

{
  delete {
    < 0xd > <username> "Lucas" . #This will also delete the facet.
  }
}