Dgraph是一个为 web大规模的生产环境构建的开源图形数据库,完全用 Go 编写。
Dgraph 有助于以更有效的方式处理相互关联的数据。Dgraph v0.8 及更高版本使用Badger,这是一个用纯 Go 编写的持久键值存储。Dgraph 构建为可水平扩展,同时保持操作高效,以支持实时运行任意复杂的查询。这样我们就可以高效地执行分布式连接、过滤和排序,这是一个难题。
Dgraph的主要特点
- 分片再平衡: Dgraph 自动平衡分片之间的数据,并管理最大的资源管理以实现高性能。
- 高可用: Dgraph 在复制时自动同步数据,因此丢失硬盘或服务器不会影响服务。
- 用户界面: Dgraph 在 JSON 之上提供了用户界面,方便管理数据。我们可以轻松地验证数据并将数据查看到 Graph 形成中。
- 事务性: Dgraph 提供分布式 ACID 属性,以便我们可以执行事务性操作而无需担心任何其他事情。
- 灵活模式: Dgraph 不适用于硬模式。它工作在灵活模式的顶部,因此用户可以获得更好的体验。随着项目的发展,我们可以更改架构。
- 分布式: Dgraph 在分布式环境中工作。它可以在数百台服务器上增加。
- 快速: Dgraph 像搜索引擎一样工作。它将查询划分为子查询,然后在并发上执行,以实现低延迟和高吞吐量。
- 专为 SSD 设计: Dgraph 内部将数据存储到键值存储中,Badger 旨在减少 RAM 使用并依赖 SSD 来提高性能。那又快又便宜。
这些是 Dgraph 的主要关键特性,有助于实现目标并以更好的方式轻松构建应用程序。
地位
Dgraph的版本为 v21.03.0,并且可以投入生产。除了庞大的开源社区之外,它还被多家财富 500 强公司以及 Intuit Katlas和VMware Purser用于生产。
Dgraph 集群
Dgraph 集群由三个不同的节点组成,每个节点的工作方式与其他节点不同。三个节点如下:
- Dgraph Zero:此节点控制 Dgraph 集群并分配服务器以重新平衡和分组服务器组之间的数据。
- Dgraph 服务器:此节点托管数据的谓词和索引。
- Dgraph Ratel:该节点提供用于运行查询、突变和更改模式的 UI。
开始使用
Dgraph 图数据库适用:
- 互连数据,例如需要连接的 SQL 表
- 高级搜索
- 模式检测
- 网络,如计算机、道路和电信
- 流程,例如业务和生物流程
- 事件和它们之间的因果关系或其他联系
- 公司或市场的结构
- 推荐引擎
Dgraph 是我的正确选择吗?
- 您是否有超过 10 个通过外键连接的 SQL 表?
- 您是否有不适合 SQL 表的稀疏数据?
- 您是否想要一个简单而灵活的模式,随着时间的推移它是可读和可维护的?
- 您是否关心大规模的速度和性能?
如果上述答案是肯定的,那么 Dgraph 将非常适合您的应用程序。Dgraph 提供类似 NoSQL 的可扩展性,同时提供类似 SQL的事务以及选择、过滤和聚合数据点的能力。它将其与分布式连接、遍历和图形操作相结合,这使得使用它构建应用程序变得容易。
Dgraph 与其他图形数据库的比较
特征 |
图形 |
Neo4j |
Janus 图 |
建筑学 |
分片和分布式 |
单个服务器(+ 企业中的副本) |
位于其他分布式数据库之上 |
复制 |
一致性 |
社区版中没有(仅在企业版中可用) |
通过底层数据库 |
重平衡 |
自动的 |
不适用(所有数据位于每台服务器上) |
通过底层数据库 |
语言 |
GraphQL inspired |
Cypher, Gremlin |
Gremlin |
协议 |
Grpc / HTTP + JSON / RDF |
Bolt + Cypher |
网络套接字/HTTP |
事务 |
分布式 ACID 事务 |
单服务器 ACID 事务 |
非传统ACID |
全文检索 |
原生支持 |
原生支持 |
通过外部索引系统 |
常用表达 |
原生支持 |
原生支持 |
通过外部索引系统 |
地理搜索 |
原生支持 |
仅限外部支持 |
通过外部索引系统 |
License |
Apache 2.0 |
GPL v3 |
Apache 2.0 |