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的一部分