我有一個大的二分向有向圖數據集(〜2000萬個元素)。在目前的使用中,我運行的遍歷算法每次運行約有500,000個節點。這些算法可以工作,但歷史上運行的是從文本文件加載到內存的數據。用於高效大規模圖遍歷的數據庫
文本文件看起來很糟糕,所以我將數據作爲一個鄰接列表傳輸到mongoDB中,即。
{ _id: 1, children: [2, 3] }
{ _id: 2, children: [4] }
{ _id: 3, children: [5, 6, 7] }
這有效,但我覺得模型效率低下,我正在做的事情。在僞代碼,對於廣度優先搜索查詢結構從_ ID開始:1會是什麼樣子:
children = getChildren(_id = 1)
for child in children
grandchildren = getChildren(_id = child)
// etc., either recursively or as a nested loop
我與數據庫中的問題是,有沒有邏輯連接節點。每個查詢都必須遍歷索引樹,如果我沒有弄錯的話,它是O(log N)。加載後文本文件的方法是O(1),因爲我可以使一些簡單的查找規則直接指向節點子節點。
TL; DR有沒有辦法在O(1)時間使用數據庫遍歷大型網絡?
這正是我需要的!謝謝(你的)信息。 – PattimusPrime