2016-08-03 15 views
7

मैं पहले से ही चल रहा है TitanDB सर्वर से ग्राहक के रूप में जावा में Tinkerpop3 का उपयोग कर ग्राफ़ वस्तु प्राप्त करने के लिए कोशिश कर रहा हूँ करने के लिए कनेक्ट (मैं सर्वर बनाने के लिए नहीं करना चाहते हैं)।Tinkerpop3 दूरस्थ TitanDB सर्वर

दूसरे शब्दों में, मैं इस तरह के कार्य को लागू करने की कोशिश कर रहा हूं: सार्वजनिक ग्राफ प्राप्तग्राफ (स्ट्रिंग सर्वरआईपी, स्ट्रिंग ग्राफ़नाम);

मैं यहाँ की तरह यह करने के लिए कोशिश कर रहा था: AWS Lambda + Tinkerpop/Gremlin + TitanDB on EC2 + AWS DynamoDB in cloud

लेकिन जैसा कि मैं समझता हूँ, TitanFactory.open() सर्वर शुरू होता है, और मैं यह करने के लिए नहीं करना चाहते हैं - मैं सिर्फ मौजूदा सर्वर से कनेक्ट करना चाहते हैं।

प्रलेखन के साथ-साथ इंटरनेट का उपयोग में सबसे अधिक सामग्री में स्मृति उदाहरण के लिए रेखांकन, और मैं नहीं मिल सकता है, पता चलता है कि कैसे:

  • नया ग्राफ बना सकते हैं और दूरस्थ सर्वर

  • पर सहेजें
  • दूरस्थ सर्वर

  • अद्यतन तरह के दूरदराज के ग्राफ़ से मौजूदा ग्राफ पुनः प्राप्त है, इसलिए जोड़ने/करने से परिवर्तन

  • किनारों हटाने के बाद 0
  • पूरे ग्राफ

मैं दुष्टात्मा भाषा (स्ट्रिंग्स) के माध्यम से सामान ऊपर करने के लिए नहीं करना चाहते हैं हटा सकते हैं, लेकिन जावा एपीआई के माध्यम से (TinkerpopBlueprins)। यह लड़का मुझे जो चाहिए वह करीब आ रहा है: Add vertices to TitanDB Graph in Java हालांकि, उसकी विधि पहले ही ग्राफ को तर्क के रूप में लेती है।

मैंने इंटरनेट पर कई स्थानों पर देखा है, कि GraphFactory.open() को गुण फ़ाइल के पथ मिलते हैं, हालांकि मैंने ऐसी फ़ाइल की सामग्री का उदाहरण नहीं देखा है, खासकर टाइटनडीबी प्रासंगिक डेटा के साथ, इसलिए मैं उपयोग करना पसंद करूंगा विन्यास वस्तु।

ग्राफ़ ग्राफ = GraphFactory.open (नई BaseConfiguration())

कहते हैं, कोई gremlin.graph संपत्ति नहीं है।

कॉन्फ़िगरेशन कॉन्फ़िगरेशन = नया बेस कॉन्फ़िगरेशन(); config.setProperty ("gremlin.graph", "titan");

ग्राफ ग्राफ = GraphFactory.open (कॉन्फ़िगरेशन);

कहते GraphFactory नहीं पा सके [टाइटन] - सुनिश्चित करें कि जार classpath

में है वहाँ मानचित्र के बजाय enums और स्थिरांक के साथ किसी भी स्थिर टाइप किया बिल्डर है, कि मुझे बता देगा, क्या गुण मैं करने के लिए है प्रदान करें और उनका प्रकार क्या है? क्या कोई ओपन सोर्स प्रोजेक्ट है, जो रिमोट टाइटनडीबी सर्वर पर क्लाइंट के रूप में कनेक्ट करने के लिए टिंकरपॉप 3 का उपयोग करता है, जिसे मैं उदाहरण के रूप में उपयोग कर सकता हूं?

बाहरी कॉन्फ़िगरेशन के साथ इन-मेमोरी के बजाय, मैं पूरी तरह से काम कर रहा उदाहरण देखना चाहता हूं।

+0

http://s3.thinkaurelius.com/docs/titan/1.0.0/storage-backends.html –

उत्तर

7

यहां एक टाइटन ड्राइवर प्रोग्राम का एक उदाहरण है जो चल रहे टाइटन सर्वर से जुड़ता है। https://github.com/pluradj/titan-tp3-driver-example जैसा कि आपने नोट किया है, यह रिमोट टाइटन सर्वर के लिए स्ट्रिंग के रूप में Gremlin को पास करेगा।

यदि आप ऐसा नहीं करना चाहते हैं क्योंकि आप सीधे जावा एपीआई का उपयोग करना चाहते हैं, तो आपको अपने ग्राफ से सीधा कनेक्शन बनाने के लिए TitanFactory.open() का उपयोग करना चाहिए। TitanFactory.open()TitanGraph उदाहरण बनाता है कि आप अपने ग्राफ़ एपीआई कॉल को निष्पादित कर सकते हैं। यह एक टाइटन सर्वर शुरू नहीं करता है। कवर के तहत, यह बैकएंड स्टोरेज और इंडेक्स के लिए क्लाइंट कनेक्शन बनाता है।

आप टाइटन सर्वर के बिना एक टाइटन जावा प्रोग्राम के लिए इस उदाहरण का उल्लेख कर सकते https://github.com/pluradj/titan-tp3-java-example

आप इस एक गुण फ़ाइल (यहाँ एक example configuration कैसेंड्रा और Elasticsearch उपयोग कर रहा है) या कोड के माध्यम से एक Configuration वस्तु का निर्माण करके का उपयोग कर कॉन्फ़िगर कर सकते हैं (मूल रूप से वही कुंजी-मान जोड़े सेट करना जो गुण फ़ाइल में हैं)।

  • ग्राफ़ आपकी प्रारंभिक कनेक्शन से पहले मौजूद नहीं है, टाइटन Elasticsearch में कैसेंड्रा में ग्राफ keyspace और सूचकांक पैदा करेगा।

  • storage.hostname और पर ध्यान दें क्योंकि ये क्रमशः आपके कैसंद्रा और लोचदार खोज समूह हैं। ये अनिवार्य रूप से आपका "ग्राफ सर्वर" हैं। आपको एक अलग टाइटन सर्वर चलाने की आवश्यकता नहीं है।

  • टाइटन में बैकएंड स्टोरेज से ग्राफ़ को हटाने के लिए कोई एपीआई नहीं है। पूरे ग्राफ को हटाने के लिए, आपको Java client driver के माध्यम से कैसंद्रा से कनेक्ट करने की आवश्यकता होगी, और कुंजीपटल को छोड़ने के लिए एपीआई निष्पादित करना होगा। इसी तरह, आपको Elasticsearch से Indices API के माध्यम से कनेक्ट करने की आवश्यकता होगी, और अनुक्रमणिका हटाएं।

+0

यह सादा दुष्टात्मा का उपयोग करता है - "जी.वी.() hasLabel ('सॉफ्टवेयर') (है '।। नाम ', एन) .इन (' बनाया ')। मूल्यों (' नाम ') "। मैं बिना किसी प्रश्न के सर्वर के साथ संवाद करना चाहता हूं, जेपीए के करीब कुछ। अधिक जानकारी के साथ – spam

+1

अद्यतन उत्तर। उम्मीद है की यह मदद करेगा। –

+0

हाँ, यह थोड़ा सा मदद करता है, क्योंकि मुझे अंत में यकीन है कि TitanFactory.open() सर्वर शुरू नहीं करता है (दस्तावेज अस्पष्ट है, कम से कम मेरे लिए)। हालांकि, मुझे नहीं पता कि भंडारण के लिए मूल्य के रूप में क्या लिखना चाहिए। बैकएंड - सरल "टाइटन" और "टाइटैंडब" काम नहीं करता है। – spam

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