簡體   English   中英

Neo4j在存儲具有較大屬性的節點時出現問題

[英]Neo4j problems storing nodes with large properties

我嘗試通過CYPHER在Java Neo4j中創建一些節點,更具體地說是使用JSON和http://hostname:7474/db/data/transaction/commit創建節點。

我的測試應使用以下CYPHER語句創建一些節點:

MERGE (a:LABEL1 { name: 'nameNNN', version: 1001 })
SET a.PROP1='<data>'
RETURN id(a)

只要很小,例如一個或多個總和小於1kB的屬性,一切都會起作用。 如果嘗試編寫具有較大屬性的節點(例如,編碼為10MB二進制數據庫base64),則測試將創建9或10個節點:

{errors=[], results=[{"data":[{"row":[10009]}],"columns":["id(a)"]}]}
{errors=[], results=[{"data":[{"row":[10010]}],"columns":["id(a)"]}]}
...
{errors=[], results=[{"data":[{"row":[10011]}],"columns":["id(a)"]}]}

然后開始返回:

{errors=[], results=[]}

如果重新啟動測試,我會立即得到空結果。 如果重新啟動Neo4j Server,則可以更新這9或10個節點,也可以使用不同的名稱創建9或10個節點,然后再次得到空結果。

據我了解,每個語句都是單個事務(我對每個服務器請求執行一個合並)。

這是錯誤還是社區版本(2.1.6)的限制,或者我有什么問題嗎?

對於Neo4j來說,這是在屬性中存儲大塊Blob數據的極少數反模式之一。 推薦的方法是將那些移動到適合大型Blob(例如Amazon S3等)的數據存儲中,並將對它們的URI引用保留在Neo4j中。

因此,表示blob內容的節點具有uri屬性,該屬性指向外部blob存儲。

如果我在查詢中使用參數而不是數據,則不會發生此問題。 感謝您的提示!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM