का उपयोग करते हुए एक neo4j डेटाबेस में नोड्स डालने का सबसे प्रभावी तरीका क्या है I py2neo पायथन का उपयोग करके साइफर कमांड निष्पादित करके एक बड़ी संख्या में नोड्स (~ 500,000) को एक (गैर-एम्बेडेड) neo4j डेटाबेस में डालने का प्रयास कर रहा हूं मॉड्यूल (py2neo.cypher.execute)। आखिर में मुझे py2neo पर निर्भरता को हटाने की जरूरत है, लेकिन मैं इस समय इसका उपयोग तब तक कर रहा हूं जब तक कि मैं साइफर और neo4j के बारे में अधिक नहीं सीखता।साइफर
मेरे पास दो नोड प्रकार ए और बी हैं, और नोड्स का विशाल बहुमत प्रकार ए के हैं। दो संभावित रिश्तों आर 1 और आर 2 हैं, जैसे कि ए- [आर 1] -ए और ए- [आर 2] -बी । टाइप ए के प्रत्येक नोड में 0 - 100 आर 1 रिश्ते होंगे, और टाइप बी के प्रत्येक नोड में 1 - 5000 आर 2 रिश्ते होंगे।
फिलहाल मैं बड़े क्रिएट स्टेटमेंट्स का निर्माण करके नोड्स डाल रहा हूं। उदाहरण के लिए मैं एक बयान
CREATE (:A {uid:1, attr:5})-[:r1]-(:A {uid:2, attr:5})-[:r1]-...
जहां ... एक और 5000 या तो नोड्स और रिश्तों ग्राफ में एक रेखीय श्रृंखला के गठन हो सकता है हो सकता है। यह ठीक काम करता है, लेकिन यह बहुत धीमी है। मैं भी
CREATE INDEX ON :A(uid)
इस्तेमाल करने के बाद मैं सभी प्रकार के एक नोड्स जोड़ने गए इन नोड्स का अनुक्रमण कर रहा हूँ, मैं ग्रुप बी बयान फिर से बनाएँ का उपयोग कर नोड्स जोड़ें। अंत में, मैं की तरह
MATCH c:B, m:A where c.uid=1 AND (m.uid=2 OR m.uid=5 OR ...)
CREATE (m)-[:r2]->(c)
जहां एक बयान का उपयोग कर r2 रिश्तों को जोड़ने के लिए ... कुछ हजार या कथन का प्रतिनिधित्व कर सकता है कोशिश कर रहा हूँ। यह प्रति सेकेंड केवल कुछ रिश्तों को जोड़ने में वास्तव में धीमा लगता है।
तो, क्या ऐसा करने का एक बेहतर तरीका है? क्या मैं यहां पूरी तरह से ट्रैक बंद कर रहा हूँ? मैंने this question देखा लेकिन यह समझ में नहीं आता है कि कैसे नोड्स को कुशलतापूर्वक लोड करने के लिए साइफर का उपयोग करना है। मैं जो कुछ भी देखता हूं वह जावा का उपयोग करता है, वास्तविक साइफर प्रश्नों को दिखाए बिना इस्तेमाल किया जा सकता है।
मैं दूसरे वेस टिप्पणियों को चाहता हूं: पैरामीटर, छोटे कथन, यदि आप 2.0 का उपयोग कर रहे हैं, तो साइफर के लिए लेनदेन संबंधी HTTP एंडपॉइंट का उपयोग करने पर विचार करें, देखें: http://neo4j.org/develop/labels साइफर और आयात के लिए देखें: http: //www.neo4j.org/develop/import और http://jexp.de/blog/2013/05/on-importing-data-in-neo4j-blog-series/ –
सलाह के लिए धन्यवाद। क्या आप जानते हैं कि मैं पाइथन से साइफर क्रिएट स्टेटमेंट के साथ पैरामीटर का उपयोग कैसे कर सकता हूं? सब कुछ जो मैं पैरामीटर के बारे में ढूंढने में सक्षम हूं, जावा हैश मैप्स के बारे में बात कर रहा है। – savagent
py2neo में यह पैराम्स नामक एक शब्दकोश पैरामीटर है। http://book.py2neo.org/en/latest/cypher.html यदि आप HTTP पर कच्चे JSON कर रहे हैं, तो आप क्वेरी के साथ JSON अनुरोध पर एक पैराम जोड़ सकते हैं: {uid: ...}। –