पृष्ठभूमि: पुस्तक ग्राफ डेटाबेस से निम्नलिखित है , जो किताब Neo4j इन एक्शन में उल्लिखित एक प्रदर्शन परीक्षण शामिल है :
एक ग्राफ में संबंध स्वाभाविक रूप से पथ बनाते हैं। क्वेरी करना, या ट्रैवर्स करना, ग्राफ़ में निम्नलिखित पथ शामिल हैं। डेटामॉडल की मूल रूप से पथ-उन्मुख प्रकृति के कारण, पथ-आधारित ग्राफ़ डेटाबेस संचालन के बहुमत को उस तरीके से अत्यधिक संरेखित किया जाता है, जिसमें डेटा निर्धारित किया जाता है, जिससे वे अत्यधिक कुशल हो जाते हैं। अपनी पुस्तक में Neo4j इन एक्शन, पार्टनर और Vukotic एक रिलेशनल स्टोर और Neo4j का उपयोग करके एक प्रयोग करते हैं।
तुलना से पता चलता है कि ग्राफ डेटाबेस एक रिलेशनल स्टोर की तुलना में कनेक्टेड डेटा के लिए काफी तेज है। पर्टनर और वॉटोटिक के प्रयोग सामाजिक नेटवर्क में दोस्तों-दोस्तों को पांच की अधिकतम गहराई तक ढूंढना चाहते हैं। यादृच्छिक रूप से चुने गए किसी भी दो व्यक्तियों को देखते हुए, क्या कोई ऐसा रास्ता है जो उन्हें जोड़ता है जो कि अधिकतम पांच रिश्तों में है? लगभग 50 दोस्तों के साथ प्रत्येक के साथ 1,000,000 लोगों वाले सामाजिक नेटवर्क के लिए, परिणाम दृढ़ता से सुझाव देते हैं कि ग्राफ़ डेटाबेस कनेक्टेड डेटा के लिए सबसे अच्छा विकल्प है, जैसा कि हम तालिका 2-1 में देखते हैं।
तालिका 2-1। Neo4j में एक कुशल डेटाबेस बनाम कुशल खोज में विस्तारित दोस्त खोजना
Depth RDBMS Execution time (s) Neo4j Execution time (s) Records returned 2 0.016 0.01 ~2500 3 30.267 0.168 ~110,000 4 1543.505 1.359 ~600,000 5 Unfinished 2.132 ~800,000
गहराई से दो (मित्र-से-मित्र) दोनों रिलेशनल डेटाबेस और ग्राफ़ डेटाबेस हमारे लिए ऑनलाइन सिस्टम में उनका उपयोग करने पर विचार करने के लिए पर्याप्त रूप से पर्याप्त प्रदर्शन करते हैं। जबकि Neo4j क्वेरी दो-तिहाई रिलेशनल एक के समय में चलती है, एक एंड-यूज़र दोनों के बीच मिलीसेकंड में अंतर को मुश्किल से देख पाएगा। जब तक हम गहराई तक पहुँचते हैं तीन (दोस्त-से-दोस्त), हालांकि, यह स्पष्ट है कि रिलेशनल डेटाबेस अब क्वेरी से एक उचित समय सीमा में नहीं निपट सकता है: इसे पूरा करने में तीस सेकंड पूरी तरह से अस्वीकार्य होंगे एक ऑनलाइन सिस्टम के लिए। इसके विपरीत, Neo4j की प्रतिक्रिया समय अपेक्षाकृत सपाट रहता है: क्वेरी को पूरा करने के लिए बस एक सेकंड का एक अंश - निश्चित रूप से एक ऑनलाइन सिस्टम के लिए पर्याप्त त्वरित है।
गहराई से चार संबंधपरक डेटाबेस क्रिपलिंग लेटेंसी को प्रदर्शित करता है, जिससे यह ऑनलाइन सिस्टम के लिए व्यावहारिक रूप से बेकार हो जाता है। Neo4j की टाइमिंग थोड़ी खराब हो गई है, लेकिन यहां विलंबता एक उत्तरदायी ऑनलाइन सिस्टम के लिए स्वीकार्य होने की परिधि में है। अंत में, पाँच की गहराई पर, रिलेशनल डेटाबेस क्वेरी को पूरा करने में बहुत लंबा समय लेता है। Neo4j, इसके विपरीत, लगभग दो सेकंड में एक परिणाम देता है। पांच साल की उम्र में, यह लगभग पूरे नेटवर्क को ट्रांसपेर करता है: हमारा दोस्त कई वास्तविक दुनिया के मामलों के लिए, हम परिणाम और ट्रिमिंग की कोशिश करेंगे।
प्रश्न हैं:
- क्या यह उचित परीक्षण है कि किसी को सामाजिक नेटवर्क में खोजने के अलावा क्या हो सकता है? (मतलब वास्तविक सामाजिक नेटवर्क में आमतौर पर उदाहरण के लिए लगभग 50 दोस्तों के साथ नोड होते हैं; ऐसा लगता है जैसे " अमीर हो अमीर " मॉडल सामाजिक नेटवर्क के लिए अधिक स्वाभाविक होगा, हालांकि गलत हो सकता है।)
- अनुकरण की स्वाभाविकता के बावजूद, परिणाम बंद होने या अप्रतिष्ठित होने का विश्वास करने का कोई कारण है?