2015-02-10 71 views

回答

6

ArangoDB中的圖形建立在文檔和邊緣之上。

邊緣集合具有_from_to上的自動索引,可以高效檢索任何已連接的文檔。由於數據仍然存儲在常規(文檔和邊緣)集合中,因此您也可以在非圖形查詢中使用這些集合。

圖形在數據之上添加了一些功能(即查詢方法,遍歷)。你可以在ArangoDB中有多個。可以將「圖形」視爲對部分或全部數據進行分組的手段,並使其可在查詢中進行訪問。

2

這是一個優勢:

{ 
    "_id": "edges/328701573688", 
    "_from": "nodes/150194180348", 
    "_to": "nodes/328668871224", 
    "_rev": "3680146597", 
    "_key": "328701573688", 
    "type": "includes" 
} 

這是一個文件:

{ 
    "_id": "nodes/328668871224", 
    "_rev": "3610088613", 
    "_key": "328668871224", 
    "name": "Gold-edged Gem", 
    "type": "species" 
} 

正如你可以看到有沒有根本的區別。他們都是文件。邊緣集合僅適用於使用Arango的圖形數據庫功能。

據我所知,將集合類型設置爲「邊緣」的要點告訴Arango它應該確保所有存儲在那裏的文檔具有最低限度的_to和_from屬性,以便文檔可以作爲兩個其他文檔之間的連接器

一旦您有一個文檔集合,其文檔通過邊緣集合中的一堆邊緣文檔進行連接,現在您有一個圖形。

+0

我不同意'邊緣集合只對圖形有用。例如,有AQL函數可以跟蹤邊,但它們直接與集合一起工作,不需要一般圖。如果你想有效地遍歷一個高度互連的圖,並且使用某種算法,那麼確實需要一個通用圖。使用什麼取決於你的數據結構和用例。 – CoDEmanX 2015-02-13 18:06:29

+0

我開始意識到可以使用Arango作爲一個直接的文檔存儲庫,比如MongoDB。對於那樣使用它的人來說,邊緣集合可以被安全地忽略。 – mikewilliamson 2015-02-17 18:09:31

+0

邊緣集合也是文檔:)唯一的區別是'_to'和'_from'屬性存在並且有索引。 – CoDEmanX 2015-02-17 22:14:52