2015-06-15 5 views
6

कोई यह समझा सकता है कि दस्तावेज़ डेटाबेस ग्राफ डेटाबेस के रूप में कैसे काम करता है?ArangoDB दस्तावेज़ डेटाबेस और एक ग्राफ डेटाबेस भी? यह कैसे संभव है?

ArangoDB और Neo4j के बीच क्या अंतर है?

+0

अरंगो डीबी एक डॉक्टर-उन्मुख डीबी afaik है जिसके साथ आप किसी भी तरह ग्राफों में हेरफेर कर सकते हैं। लेकिन अच्छी तरह से, आप आरडीबीएमएस में ग्राफों को "कुशलतापूर्वक" बना सकते हैं, इसलिए मैं कहूंगा कि यह सिर्फ मार्केटिंग है। – Rolf

उत्तर

6

अस्वीकरण: मैं कोर डेवलपर्स में से एक, ArangoDB से अधिकतम हूं।

सबसे पहले, इस और अन्य संबंधित प्रश्नों की लंबी चर्चा मेरे आलेख Graphs in data modeling - is the emperor naked? में मिल सकती है, लेकिन मैं यहां संक्षेप में दोनों प्रश्नों का उत्तर देने का प्रयास करूंगा।

(1) किसी दस्तावेज़ स्टोर में आलेख संग्रह करना अपेक्षाकृत आसान है (क्योंकि यह एक रिलेशनल डेटाबेस में है), उदाहरण के लिए, प्रत्येक शब्द के लिए "वर्टेक्स-संग्रह" और प्रत्येक के लिए एक दस्तावेज़ में बस एक दस्तावेज़ संग्रहीत कर सकता है एक "एज संग्रह" में बढ़त। केवल एक को यह सुनिश्चित करना होता है कि प्रत्येक एज स्टोर से कौन सी कशेरुक आती है और यह किस कशेरुक पर जाती है। ArangoDB में, हम इसके लिए किनारे दस्तावेज़ में _from और _to विशेषताओं का उपयोग करते हैं।

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

इसलिए, मेरा संक्षिप्त उत्तर "दस्तावेज़ दस्तावेज़ कैसे ग्राफ डेटाबेस हो सकता है?" है: ग्राफ़ को उपरोक्त के रूप में स्टोर करें और डेटा सर्वर की क्वेरी भाषा से सुलभ डेटाबेस सर्वर में आलेख क्वेरी लागू करें। सिद्धांत रूप में, यह एक संबंधपरक डेटाबेस और एसक्यूएल के कुछ महत्वपूर्ण एक्सटेंशन के साथ किया जा सकता है।

अरंगो डीबी के साथ हमने दस्तावेज़, ग्राफ और कुंजी/मूल्य सुविधाओं को एक एकल, सुसंगत क्वेरी भाषा में संयोजित करने में कामयाब रहे हैं। इसलिए हम ArangoDB को "बहु-मॉडल डेटाबेस" कहते हैं, क्योंकि यह इन तीन डेटा मॉडलों को सहजता से जोड़ता है। आप एक ही प्रश्न में डेटा मॉडल भी मिश्रण कर सकते हैं!

यह सवाल करने के लिए अपने जवाब के लिए खत्म ओर जाता है (2), जाहिर है जो थोड़ा पक्षपाती:

ArangoDB है, जो ऊपर अर्थ में एक वितरित बहु मॉडल डेटाबेस है की तुलना में, Neo4j एक शास्त्रीय ग्राफ है डेटाबेस। यह ग्राफ को संग्रहीत करता है, उन्हें "ग्राफी क्वेरीज" से पूछताछ करने की अनुमति देता है और उसके लिए एक स्टोरेज और क्वेरी इंजन है जिसे अनुकूलित किया गया है। Neo4j विशेष रूप से इसके अंतर्निहित क्वेरी भाषा साइफर का उपयोग करके मिलान पथों पर अच्छा है। यह गुणों को किनारों और किनारों पर संलग्न करने की अनुमति देता है, लेकिन यह एक पूर्ण विशेषीकृत दस्तावेज़ स्टोर नहीं है। यह एकाधिक माध्यमिक अनुक्रमणिका का उपयोग कर दस्तावेज़ क्वेरीज को संभालने के लिए अनुकूलित नहीं है और न ही इसमें शामिल होता है। इसके अलावा, नियो 4j वितरित नहीं किया गया है।

Neo4j जावा में लिखा गया है, ArangoDB C++ में लिखा गया है और जावास्क्रिप्ट एक्सटेंशन निष्पादित करने के लिए Google के V8 को एम्बेड करता है।

प्रदर्शन तुलना के लिए this post देखें।

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