dgraph README

The project's README from github.com/dgraph-io/dgraph. As one markdown file: README.md.

Dgraph Logo

GitHub Repo stars GitHub commit activity Go Report Card Docker Pulls

Dgraph is a horizontally scalable and distributed GraphQL database with a graph backend. It provides ACID transactions, consistent replication, and linearizable reads. It's built from the ground up to perform a rich set of queries. Being a native GraphQL database, it tightly controls how the data is arranged on disk to optimize for query performance and throughput, reducing disk seeks and network calls in a cluster.

Dgraph's goal is to provide Google production-level scale and throughput, with low enough latency to serve real-time user queries over terabytes of structured data. Dgraph supports GraphQL query syntax, and responds in JSON and Protocol Buffers over GRPC and HTTP. Dgraph is written using the Go Programming Language.

Status

Dgraph is at version v25 and is production-ready. Apart from the vast open source community, it is being used in production at multiple Fortune 500 companies.

Supported Platforms

Dgraph officially supports the Linux/amd64 and Linux/arm64 architectures. In order to take advantage of memory performance gains and other architecture-specific advancements in Linux, we dropped official support for Mac and Windows in 2021, see this blog post for more information. You can still build and use Dgraph on other platforms (for live or bulk loading for instance), but support for platforms other than Linux/amd64 and Linux/arm64 is not available.

Running Dgraph in a Docker environment is the recommended testing and deployment method.

Install with Docker

If you're using Docker, you can use the official Dgraph image.

docker pull dgraph/dgraph:latest

For more information on a variety Docker deployment methods including Docker Compose and Kubernetes, see the docs.

Run a Quick Standalone Cluster

docker run -it -p 8080:8080 -p 9080:9080 -v ~/dgraph:/dgraph dgraph/standalone:latest

Install from Source

If you want to install from source, install Go 1.27+ or later and the following dependencies:

Ubuntu

sudo apt-get update
sudo apt-get install build-essential

Build and Install

Then clone the Dgraph repository and use make install to install the Dgraph binary in the directory named by the GOBIN environment variable, which defaults to $GOPATH/bin or $HOME/go/bin if the GOPATH environment variable is not set.

git clone https://github.com/dgraph-io/dgraph.git
cd dgraph
make setup
make install

Get Started

To get started with Dgraph, follow:

Is Dgraph the right choice for me?

If the answers to the above are YES, then Dgraph would be a great fit for your application. Dgraph provides NoSQL like scalability while providing SQL like transactions and the ability to select, filter, and aggregate data points. It combines that with distributed joins, traversals, and graph operations, which makes it easy to build applications with it.

Dgraph compared to other graph DBs

Features Dgraph Neo4j Janus Graph
Architecture Sharded and Distributed Single server (+ replicas in enterprise) Layer on top of other distributed DBs
Replication Consistent None in community edition (only available in enterprise) Via underlying DB
Data movement for shard rebalancing Automatic Not applicable (all data lies on each server) Via underlying DB
Language GraphQL inspired Cypher Gremlin
Protocols Grpc / HTTP + JSON / RDF Bolt + Cypher Websocket / HTTP
Transactions Distributed ACID transactions Single server ACID transactions Not typically ACID
Full-Text Search Native support Native support Via External Indexing System
Regular Expressions Native support Native support Via External Indexing System
Geo Search Native support External support only Via External Indexing System
License Apache 2.0 GPL v3 Apache 2.0

Users

Developers

Please see Contributing to Dgraph for guidelines on contributions.

Client Libraries

The Dgraph team maintains several officially supported client libraries. There are also libraries contributed by the community unofficial client libraries.

Contact

dgraph (dgraph-io/dgraph)

Searching Database…

21.8K ·GitHub
这是什么?Dgraph 是一个开源的、可横向扩展的分布式图数据库,带有 GraphQL 接口,专为对 TB 级数据进行实时查询而构建。它提供 ACID 事务、一致性复制和线性一致性读取。
它是我部署的数据库服务器,还是嵌入到应用里的库?它是一个独立的服务器,部署后通过网络连接使用——通常以 Docker 集群的方式运行——而不是嵌入式的库。客户端通过 HTTP 和 gRPC 与它通信。
怎么把它跑起来?运行官方的 Docker 镜像——Docker 是官方推荐的测试和部署方式,文档里还介绍了 Docker Compose 和 Kubernetes 的部署方案。
什么情况下我会选 Dgraph 而不是普通的 SQL 数据库?按 README 的说法:当你有 10 张以上通过外键关联的 SQL 表、数据比较稀疏、并且需要在大规模下保持速度时。你能得到类似 NoSQL 的可扩展性加上类似 SQL 的事务,还有分布式关联查询、遍历和图操作。
它能在 macOS 和 Windows 上运行吗,还是只支持 Linux?官方只支持 Linux:Linux/amd64 和 Linux/arm64。对 Mac 和 Windows 的官方支持在 2021 年就已放弃——你仍然可以在其他平台上自己编译,但官方不为这种方式提供支持。
Dgraph 可以用于生产环境吗,还是仍处于实验阶段?可以用于生产环境:它已发展到 v25 版本,多家世界五百强公司都在生产环境中使用它,同时拥有庞大的开源社区。
它和 Neo4j 比怎么样?Dgraph 支持分片和分布式部署,具有一致性复制和自动分片再均衡,而 Neo4j 的社区版只是单台服务器。Dgraph 还提供分布式 ACID 事务、原生的全文检索、正则表达式和地理位置搜索,并且采用 Apache 2.0 而不是 GPL v3 许可证。
我该怎么查询数据?通过 HTTP 或 gRPC 使用受 GraphQL 启发的查询语法;返回结果是 JSON 或 Protocol Buffers 格式。它也支持 RDF 作为数据格式。
有官方客户端库吗,还是我得自己写原始的 API 调用?Dgraph 团队维护着多个官方支持的客户端库,社区也贡献了一些非官方的客户端库。
What are similar projects?tidb, surrealdb, nebula, cayley, tyk, arangodb, etcd, FalkorDB
Creator
dgraph-io
Size
648.2 MB
Stars
21.8K
Age
11y
Commits · 90 Days