2012-10-19 90 views
11

我想知道爲什麼neo4j有節點和關係的容量限制。對節點和關係的限制是2^35 1,它比「正常」2^32整數「小」一點。通用SQL數據庫例如mysql存儲主鍵爲int(2^32)或bigint(2^64)2。你能向我解釋這個決定的優點嗎?在我看來,這是選擇數據庫時的關鍵決定點。爲什麼neo4j中有節點和關係的容量限制?

+0

他們已經刪除了neo4j 3.0中的所有這些約束條件。看到我的答案[下面](http://stackoverflow.com/a/37033847/1925109)。 – Hassan

回答

11

這是一個人爲限制。儘管我沒有聽說過任何官方的ETA,但他們會在不久的將來將其刪除。

通常情況下,在實際達到此限制之前,您會遇到單臺計算機上的硬件限制。

當前選項是手動將圖形分割到不同的機器上。對某些用例不理想,但在其他情況下可用。將來他們會自動分割數據 - 也就是沒有ETA。

更新: 我已經學習了一些關於neo4j存儲內部的更多信息。限制是什麼的原因是因爲id號在幾個地方作爲指針存儲在磁盤上(節點記錄,關係記錄等)。爲了增加2的冪次,他們需要增加每個節點1個字節和每個關係1個字節 - 它現在被打包,只要它將去,而不需要在磁盤上使用更多的字節。瞭解更多在這個偉大的博客帖子: http://digitalstain.blogspot.com/2010/10/neo4j-internals-file-storage.html

更新2:
我聽說在2.1,他們將圍繞幅度高於他們目前是另一個次序增加這些限制。