2015-01-30 11 views
5

मैं अपने ग्राफ को संग्रहीत करने के लिए नवीनतम समुदाय नियो 4j (2.2.0-M03) का उपयोग कर रहा हूं। मुझे पायथन से इसे एक्सेस करने में दिलचस्पी है। आधिकारिक नियो 4j documentation के मुताबिक, कई विकल्प हैं।2015 में पायथन से नियो 4j का उपयोग करने का सबसे उपयुक्त तरीका

डॉक्स की जांच करके, थोड़ा सा खेलकर, और this post की जांच करके, मैंने पाया है कि py2neo नियो 4j 2 (और लेबल) का समर्थन करने वाला एकमात्र है। हालांकि, अगर मैं Neo4j पर विशिष्ट एल्गोरिदम लिखना और चलाने के लिए चाहता हूं, तो मुझे बल्ब के माध्यम से Gremlin का उपयोग करना चाहिए, हालांकि यह Neo4j 2 का समर्थन नहीं करता है।

अब, मैं कुछ कस्टम एल्गोरिदम का उपयोग करना चाहता हूं जो वर्तमान में नहीं है Neo4j में, सक्रियण फैलाने की तरह। जावा में नियो 4j में सीधे एल्गोरिदम लिख रहा है और उन्हें पाइथन से साइबर कमांड का उपयोग करके py2neo के माध्यम से केवल एकमात्र विकल्प है? क्या मैं कुछ भूल रहा हूँ?

चीयर्स

पीएस। मैं उद्धृत सभी सॉफ़्टवेयर के लिंक पोस्ट करना चाहता था लेकिन दुर्भाग्यवश मुझे 2 से अधिक लिंक पोस्ट करने के लिए कम से कम 10 प्रतिष्ठा की आवश्यकता है ...

+0

क्या आप "एल्गोरिदम लिखने" के द्वारा अपना क्या मतलब बता सकते हैं? किस प्रकार? हाँ सामान्य रूप से py2neo जाने का रास्ता है, लेकिन अगर आप यह निर्दिष्ट नहीं करते कि आप क्या करने की कोशिश कर रहे हैं तो आपको सलाह देना मुश्किल होगा। – FrobberOfBits

+0

धन्यवाद @FrobberOfBits, मैंने सवाल संपादित किया। मैं कस्टम एल्गोरिदम का उपयोग करना चाहता हूं, उदाहरण के लिए सक्रियण फैलाना। – redsk

+0

यह होगा "जावा में नियो 4j में सीधे एल्गोरिदम लिख रहा है और उन्हें केवल एकमात्र विकल्प के माध्यम से पायथन से चला रहा है?" –

उत्तर

4

यह एक बहुत ही कठिन सवाल है, ऐसा लगता है कि आपको डिज़ाइन मार्गदर्शन की आवश्यकता नहीं है, एक त्वरित neo4j प्रश्न । सक्रियण फैलाने का उपयोग करने के तरीके के आधार पर, सर्वर को संशोधित करना बेहतर नहीं हो सकता है, लेकिन मैं यह नहीं बता सकता क्योंकि आपका उपयोग केस शायद शामिल है। ध्यान रखें कि आप हमेशा ग्राफ स्टोर के रूप में neo4j का उपयोग कर सकते हैं, और उसके बाद सर्वर में नहीं, अपने एप्लिकेशन कोड में सक्रियण फैलाने जैसी उच्च-स्तरीय अवधारणाएं डाल सकते हैं।

प्रश्न प्रस्तुत करता है कि मुझे लगता है कि आप इसे सर्वर में रखना चाहते हैं। तो, विकल्प क्या हैं? व्यापक रूप से, आप एक सर्वर प्लगइन लिख सकते हैं और रीस्टफुल एपीआई (जो आपको py2neo के साथ मदद नहीं करेगा) का विस्तार कर सकता है, दूसरी तरफ, मुझे नहीं लगता कि आपके अपने कस्टम साइफर फ़ंक्शन को परिभाषित करना अभी समर्थित है, इसलिए आप जरूरी नहीं कर सकते साइफर भाषा को स्वयं संशोधित करें, फिर एक फैंसी नए साइफर फ़ंक्शन का उपयोग करने के लिए py2neo बाइंडिंग का उपयोग करें। Advice given elsewhere सुझाव देता है कि आप सक्रियण फैलाने के लिए unmanaged extension पर विचार करना चाहेंगे। यदि आपने ऐसा किया, तो एक बार फिर, मुझे नहीं पता कि py2neo आपकी मदद कैसे करेगा।

लघु अवधि के, मुझे लगता है कि आप पर विचार करना चाहिए नहीं ही neo4j को संशोधित करने, बल्कि यह है कि हो सकता है py2neo का उपयोग करता अजगर कोड में अपने प्रसार सक्रियण डाल। दीर्घकालिक, यदि neo4j साइफर उपयोगकर्ता परिभाषित कार्यों (यूडीएफ) करने के तरीके के साथ आता है जो मैं समझता हूं कि विकास रोडमैप (शायद?) पर है तो यह एक बेहतर विकल्प हो सकता है, लेकिन मैं इसे कई के बिना अनुशंसा नहीं करता अधिक आवश्यकताओं और विवरण।

+0

धन्यवाद @FrobberOfBits। मैं वास्तव में यह पता लगाने की कोशिश कर रहा था कि मेरे आवेदन के लिए एक अच्छा डिजाइन तैयार करने के लिए मैं कौन सा विकल्प ले सकता हूं। नियो 4 जे अप्रबंधित एक्सटेंशन वास्तव में एक अच्छा सुझाव है। – redsk

+0

एक संभावित विकल्प [Gremlin] (https://github.com/tinkerpop/gremlin/wiki) ग्राफ भाषा का उपयोग करेगा (शायद [tinkerpop3] (http://www.tinkerpop.com/) के माध्यम से (इसके लिए तैयार नहीं है Neo4j 2.2 afaik)। इस मामले में, p2neo एक [विशिष्ट एक्सटेंशन] (http://py2neo.org/2.0/ext/gremlin.html) के माध्यम से Gremlin स्क्रिप्ट को कॉल करने का समर्थन करता है। – redsk

+0

अंत में, जैसा कि आपने सुझाव दिया था, सक्रियण (या अन्य ग्राफ एल्गोरिदम) फैलाना सीधे पाइथन (हालांकि py2neo, शायद) में लागू किया जा सकता है। इस मामले में, हालांकि, मैं संभवतः प्रदर्शन को थोड़ा कम करने की अपेक्षा करता हूं क्योंकि एल्गोरिदम के प्रत्येक चरण ने नियो 4j से पाइथन एप्लिकेशन तक डेटा को आगे और आगे भेज दिया होगा। – redsk

संबंधित मुद्दे