All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project will adhere to Semantic Versioning starting v1.0.0.
- Support for removing dead node from quorum.
- Dgraph tries to abort long running/abandoned transactions.
- Fix TLS flag parsing for Dgraph server and live loader.
- Reduce dependencies for Go client.
- Transaction HTTP API has been modified slightly.
start_ts
is now a path parameter instead of a header. For/commit
API, keys are passed in the body.
The latest release has a lot of breaking changes but also brings powerful features like Transactions, support for CJK and custom tokenization.
- Dgraph adds support for distributed ACID transactions (a blog post is in works). Transactions can be done via the Go, Java or HTTP clients (JS client coming). See docs here.
- Support for Indexing via Custom tokenizers.
- Support for CJK languages in the full-text index.
- We have consolidated all the
server
,zero
,live/bulk-loader
binaries into a singledgraph
binary for convenience. Instructions for running Dgraph can be found in the docs. - For Dgraph server, Raft ids can be assigned automatically. A user can optionally still specify an ID, via
--idx
flag. --peer
flag which was used to specify another Zero instance’s IP address is being replaced by--zero
flag to indicate the address corresponds to Dgraph zero.port
,grpc_port
andworker_port
flags have been removed from Dgraph server and Zero. The ports are:
- Internal Grpc: 7080
- HTTP: 8080
- External Grpc: 9080 (Dgraph server only)
Users can set port_offset
flag, to modify these fixed ports.
- Queries, mutations and schema updates are done through separate endpoints. Queries can no longer have a mutation block.
- Queries can be done via
Query
Grpc endpoint (it was calledRun
before) or the/query
HTTP handler. _uid_
is renamed touid
. So queries now need to request foruid
. Example
{
bladerunner(func: eq(name@en, "Blade Runner")) {
uid
name@en
}
}
- Facets response structure has been modified and is a lot flatter. Facet key is now
predicate|facet_name
. Examples for Go client and HTTP. - Query latency is now returned as numeric (ns) instead of string.
Recurse
is now a directive. So queries withrecurse
keyword at root won't work anymore.- Syntax for
count
at root has changed. You need to ask forcount(uid)
, instead ofcount()
.
- Mutations can only be done via
Mutate
Grpc endpoint or via/mutate
HTTP handler. Mutate
Grpc endpoint can be used to set/ delete JSON, or set/ delete a list of NQuads and set/ delete raw RDF strings.- Mutation blocks don't require the mutation keyword anymore. Here is an example of the new syntax.
{
set {
<name> <is> <something> .
<hometown> <is> "San Francisco" .
}
}
Upsert
directive and mutation variables go away. Both these functionalities can now easily be achieved via transactions.
<*> <pred> <*>
operations, that is deleting a predicate can't be done via mutations anymore. They need to be done viaAlter
Grpc endpoint or via the/alter
HTTP handler.- Drop all is now done via
Alter
. - Schema updates are now done via
Alter
Grpc endpoint or via/alter
HTTP handler.
Query
Grpc endpoint returns response in JSON underJson
field instead of protocol buffer.client.Unmarshal
method also goes away from the Go client. Users can usejson.Unmarshal
for unmarshalling the response.- Response for predicate of type
geo
can be unmarshalled into a struct. Example here. Node
andEdge
structs go away along with theSetValue...
methods. We recommend usingSetJson
andDeleteJson
fields to do mutations.- Examples of how to use transactions using the client can be found at https://docs.dgraph.io/clients/#go.
- Embedded dgraph goes away. We haven’t seen much usage of this feature. And it adds unnecessary maintenance overhead to the code.
- Dgraph live no longer stores external ids. And hence the
xid
flag is gone.