Dgraph官方版是一款非常专业的分布式GraphQL数据库,我们可以通过这款软件来实现碎片平衡、分布式ACID事务等多种操作。并且Dgraph数据库还能够为用户提供原生的GraphQL数据库。
dgraph 是可扩展的,分布式的,低延迟的图数据库。DGraph 的目标是提供 Google 生产水平的规模和吞吐量,在超过TB的结构数据里,为用户提供足够低延迟的实时查询。DGraph 支持 GraphQL 作为查询语言,响应 JSON。
ratel:提供用户界面来执行数据查询,数据修改及元数据管理。
alpha:用于管理数据(谓词和索引),外部用户主要都是和 alpha 进行数据交互。
group:多个 alpha 组成一个 group(即图中同色 alpha),group 中的多个 alpha 通过 raft 协议保证数据一致性。
zero:用于管理集群,并在 group 之间按照指定频率去均衡数据。
XID <-> UID
所有实体会被分配一个唯一的64位整型id,即UID。如果某个尸体有一个外部id(external id),即XID,DGraph会取出XID的指纹,并保存对应的UID。如果某个实体没有XID,DGraph只会添加一个新的UID,并标明这个UID已用。所有的posting list都通过UID引用实体。由于UID是8字节的整数,这种数据表示非常高效。在数据导入的时候,我们需要每个唯一的实体有一个唯一的UID。
Edges
典型的数据格式是RDF NQuad:
主语(Subject), 谓语(Predicate), 宾语(Object), 标签(Label), aka
实体(Entity), 属性(Attribute), 另一个实体或值(Other Entity / Value),标签(Label)
两种专门用语在Dgraph的代码里可以交替使用。Dgraph的edge是有向的,例如Subject -> Object。这也是查询执行的方向
可以自动生成一个反向的边。如果用户想按相反的方向执行查询,需要将reverse edge定义为schema的一部分