2011-11-22 11 views
12

मैं थोड़ा सा उलझन में हूं कि मेरे आवेदन के लिए सबसे अच्छा समाधान क्या है। जैसा कि मैंने अब तक देखा है, मुझे neo4j स्टैंडअलोन (RestGraphDatabase) और एंबेडेडग्राफडेटाबेस (रिमोटग्राफडेटाबेस अभी तक उत्पादन के उपयोग के लिए नहीं है) के बीच चयन करना है।नियो 4 जे सर्वर बनाम एम्बेडेड

पेशेवरों बाकी:

-> विभिन्न सेवाओं neo4j डीबी (नमूना पहुंच सकता है: मैं एक सेवा उस तरह एक के नोड्स के लिए जिम्मेदार है है, बी और सी दूसरी सेवा नोड्स डी और एच के लिए जिम्मेदार है और डी-नोड्स को ए-नोड्स से कनेक्ट कर सकते हैं)। इस तरह मेरे पास स्वच्छ डोमेन संरचनाएं हैं। प्रत्येक सेवा केवल अपने डोमेन नोड्स के लिए ज़िम्मेदार है। मैं प्रत्येक सेवा को अपडेट कर सकता हूं और मेरे पूरे एप्लिकेशन को बंद करने की ज़रूरत नहीं है।

-> मैं अलग-अलग भाषाओं (PHP)

विपक्ष से neo4j डीबी पहुँच सकते हैं: - प्रदर्शन (है कि एक EmbeddedGraphDatabase के रूप में अच्छा नहीं है के बाद से neo4j सर्वर और सेवाओं एक ही मशीन पर कर रहे हैं विलंबता है इतना बड़ा नहीं)। - कोई लेनदेन

मेरे प्रश्न: क्या यह स्टैंडअलोन सर्वर के साथ जाने का एक अच्छा निर्णय है? या मुझे एम्बेडेड एक का उपयोग करना चाहिए और सेवाओं को एक बड़े में मिलाएं? लेनदेन समर्थन के बिना एक बड़ा (जटिल) आवेदन चलाने के लिए संभव है?

उत्तर

8

आप सही हैं कि आरईएसटी सर्वर के साथ प्रदर्शन कम होगा। हालांकि, आपके पास बैच ऑपरेशंस का उपयोग कर आरईएसटी सर्वर के साथ लेनदेन की तरह कुछ हो सकता है; http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html देखें। आप डोमेन विशिष्ट सर्वर प्लगइन्स भी बना सकते हैं जो सर्वर पक्ष पर आपके लेनदेन संबंधी तर्क को निष्पादित करते हैं: http://docs.neo4j.org/chunked/milestone/server-extending.html

यदि आपके आर्किटेक्चर की आवश्यकता है कि आप एकाधिक क्लाइंट मशीनों से डेटाबेस तक पहुंचने में सक्षम हों, तो आपके एकमात्र विकल्प आरईएसटी सर्वर या नियो 4 जे एच (उच्च उपलब्धता) हैं। एचए केवल एक नियो 4 जी एंटरप्राइज़ लाइसेंस के साथ उपलब्ध है।

एप्लिकेशन आर्किटेक्चर को सूचित करें कि कौन से टूल्स का उपयोग किया जाता है, न कि दूसरी तरफ। यदि आप पहले से ही तय कर चुके हैं कि आपका आवेदन अलग-अलग सेवाओं के रूप में सर्वोत्तम है, तो अंतर्निहित दृढ़ता मॉडल का समर्थन करने के लिए उन्हें एक साथ संयोजित न करें। मुझे आपके आवेदन के बारे में कुछ भी पता नहीं है, लेकिन आपके विवरण से, मैं आरईएसटी सर्वर का चयन करूंगा और बैच या सर्वर प्लगइन्स का उपयोग करूंगा।

+0

मैं यह जोड़ना चाहता हूं कि आरईएसटी-एपीआई (दो पायथन लिब्स के साथ परीक्षण) में बड़े डेटा सेट के साथ गंभीर प्रदर्शन समस्याएं हैं (हम 10 जीबी आयात कर रहे थे, इसलिए वास्तव में एक विशाल डेटा सेट भी नहीं)। हमने बैच आयातक का उपयोग किया लेकिन एक निश्चित सीमा के बाद, सर्वर लगभग ब्लॉक करता है। उस समस्या के बारे में खुली चर्चाएं हैं, लेकिन मुझे अभी तक समाधान के बारे में पता नहीं है। सामान्य रूप से मैं सभी भारी उठाने के लिए एम्बेडेड सेटिंग की अनुशंसा करता हूं। – Bouncner

+0

@ बाउंकरर तीन साल, क्या आप जानते हैं कि यह अभी भी मामला है? लगभग उसी समय जब हमने इस प्रदर्शन मुद्दे को भी देखा, लेकिन तब से इसका उपयोग नहीं किया है। –

6

यह सब आपके उपयोग-मामले पर निर्भर करता है। आप पहले से ही प्रो के कुछ और कॉन सूचीबद्ध हैं।

सर्वर के लिए एक अन्य समर्थक वेब-व्यवस्थापक/विज़ुअलाइजेशन है।

आपके पास कुछ और विकल्प हैं। आपके पास उच्च प्रदर्शन के लिए एक एम्बेडेड ग्राफडीबी हो सकती है और केवल कुछ सेवाएं एम्बेडेड हैं, और अन्य सेवाओं के लिए ग्राफ़ डेटाबेस का पर्दाफाश करने के लिए कस्टम, डोमेन केंद्रित रिमोट (REST या अन्यथा) API का उपयोग करें।

ही Neo4j सर्वर का उपयोग और जो भी है कि अपने उपयोग-मामले शायद बेहतर सूट एक कस्टम दूरस्थ एपीआई का पर्दाफाश करने में सक्षम हैं Server-Plugins या Extensions रूप में और अधिक प्रदर्शन महत्वपूर्ण सेवाओं में से कुछ को जोड़ने के द्वारा प्राप्त किया जा सकता है।

यदि आप बाद में अन्य सेवाओं के कुछ अंतराल का खुलासा करना चाहते हैं, तो मैं अपनी सेवाओं को विकसित करने के लिए एम्बेडेड ग्राफ डीबी का उपयोग करना शुरू कर दूंगा, यह नियो 4 जे सर्वर पर स्विच करना काफी आसान है।

आरईएसटी-एपीआई में प्रति अनुरोध एक लेनदेन है, बड़े ऑपरेशन के लिए एपीआई में batch operation है।

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