मैंने इस समस्या को थोड़ा सा भी सोचा है। मेरे मामले में, मैं प्रतिनिधित्व करने के लिए राज्य था:
- शुरू
- IN_PROGRESS
- प्रस्तुत
- पूरा
कुल मिलाकर नोड + रिश्ता दृष्टिकोण है कि केवल एक ही रिश्ते में और अधिक आकर्षक लग रहा है संदर्भ को स्ट्रिंग स्ट्रिंग की बजाय हर बार बनाए रखने की आवश्यकता होती है और आपको अतिरिक्त अतिरिक्त इंडेक्स स्कैन करने की आवश्यकता नहीं होती है जिसे संपत्ति पर बनाए रखा जाना चाहिए (स्मृति और प्रदर्शन सहजता से बी ई इस दृष्टिकोण के पक्ष में)।
एक अन्य लाभ यह है कि यह आसानी से कई "विशेष नोड्स" से जुड़े नोड की क्षमता का समर्थन करता है। यदि आप ऐसी स्थिति की पूर्ववत करते हैं जहां यह आपके मॉडल में संभव हो, तो यह संपत्ति सरणी (और "इन" का उपयोग करके खोज करने) से बेहतर है।
प्रैक्टिस में मैंने पाया कि समस्या तब बन गई, आप इन विशेष नोड्स को हर बार कैसे एक्सेस करते हैं। या तो आप कुछ प्रकार के स्थिरांक संदर्भ बनाए रखते हैं जहां आपके पास इन विशेष नोड्स का नोड आईडी है जहां आप अपने स्टार्ट स्टेटमेंट में यह सही ढंग से कूद सकते हैं (यह हम करते हैं) या आपको विशेष की संपत्ति के विरुद्ध खोज करने की आवश्यकता है प्रत्येक बार नोड (नाम, शायद) और उसके बाद इसके रिश्तों को पार करें। यह साइफर प्रश्नों के सबसे सुंदर के लिए नहीं बनाता है।
मैं वास्तव में अपने विचार संबंध प्रकार के रूप में मूल्य का उपयोग करना चाहते: इस ब्लॉग पोस्ट इस नए Neo4j 2.0 सुविधा के लिए एक अच्छा परिचय है। तो मुझे इन नए रिश्तों के साथ इंगित करने के लिए कोई डेटा नहीं होने के साथ केवल 1 बेकार नोड की आवश्यकता है। एक और सवाल यह होगा: क्या एक एकल नोड के साथ 1 मिलियन रिश्तों के साथ कोई प्रदर्शन समस्या होगी? मैं उस नोड से केवल कोई खोज नहीं करूँगा, केवल इसके लिए। इसके अलावा, क्या इसके लिए रूट नोड का उपयोग करना समझ में आता है? – Martynas
जब तक आप केवल उस नोड पर जाते हैं वहां कोई प्रदर्शन जुर्माना नहीं होता है। यदि आप दूसरी दिशा में जाते हैं, तो आपको पाठ्यक्रम के 1 मिलियन रिश्तों को स्कैन करना होगा। –
मैं रूट नोड का उपयोग करने की अनुशंसा नहीं करता।शायद इसके लिए रूट नोड से जुड़ा एक नया नोड बनाएं। अन्यथा आप रूट नोड को कई अलग-अलग अवधारणाओं के साथ पॉप्युलेट कर सकते हैं जो मेरी राय में खराब मॉडलिंग रणनीति है। –