Dgraph

From Dgraph Wiki
Jump to: navigation, search

Dgraph is a distributed, low-latency, high throughput, native graph database. It's written from scratch in Go[1] language, with concurrency and scalability in mind.

Status

Dgraph is currently under heavy development and should not be considered production-ready before the release of 1.0. Though, we encourage you to use Dgraph for personal projects and small sized startups. To know the currently supported features, please refer the product roadmap[2].

Principles

Distributed

Dgraph is designed from ground up to be a distributed graph database. It is also designed to provide resilience against storage failures, server crashes, or partial data center collapses. Dgraph aims to scale from a single laptop all the way to hundreds of machines in or across data centers.

Low-Latency

Dgraph strives to provide low latency query execution, but more importantly a consistent latency despite the number of results or size of the cluster. This is achieved by minimizing the number of network calls, which in turn reduces the number of machines that need to be touched to process a query.

High-Throughput

Dgraph aims for high concurrency in both read and write operations. It cares deeply about machine utilization, and effectively using all the available CPU cores. To keep concurrency high, it avoids acquiring high-level locks, instead acquiring very granular locks to allow many read or write operations to proceed concurrently.

Open Source

Dgraph embraces open source principles and believes that any backend infrastructure that a user would trust their data with, must be open source, and compatible with most popular data formats for ease of data porting. To that effect, Dgraph uses the liberal Apache License, Version 2.0[3] in it's open core offering, targeted towards backend engineers.

Robust

Whereas many graph databases tend to be used as a supplement to a main SQL/NoSQL database, Dgraph's motivation is to be robust and reliable enough to be the primary database in the user stack.

Minimalism

Dgraph core focusses on simplicity and minimalism. It weighs one feature against another similar one, picks one which has a simpler design or fewer drawbacks, and implements it. It strives to keep the design and implementation simple and avoid any unnecessary functionality within the core.

Clean Design

Dgraph aims for a clean and elegant design and implementation.

Dgraph avoids doing cheap tricks like query caching to achieve performance. It believes that query caching is best handled outside the database, depending upon user needs.

The team does strict code reviews to ensure that we maintain high-quality code, which fits into the overall architecture well. There is a very high emphasis on refactoring to remove unnecessary code or simplify the complicated logic.

History

Manish Rai Jain, an Indian programmer, began playing with the idea of Dgraph in July 2015, coding in October 2015 and released v0.1 early December 2015. The inspiration for Dgraph came from his experience at Google, where he was one of the leads for a project to unite all structured data at Google, to serve from a graph system right behind web search. The system had to do low-latency query execution and provide high throughput to be able to attempt a significant chunk of the web search query traffic.

Press Coverage

2016

References

  1. https://golang.org/
  2. https://github.com/dgraph-io/dgraph/issues/1
  3. http://www.apache.org/licenses/LICENSE-2.0