क्या यह Neo4j RDBMS निष्पादन समय की तुलना सही है?


10

पृष्ठभूमि: पुस्तक ग्राफ डेटाबेस से निम्नलिखित है , जो किताब 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 दोस्तों के साथ नोड होते हैं; ऐसा लगता है जैसे " अमीर हो अमीर " मॉडल सामाजिक नेटवर्क के लिए अधिक स्वाभाविक होगा, हालांकि गलत हो सकता है।)
  • अनुकरण की स्वाभाविकता के बावजूद, परिणाम बंद होने या अप्रतिष्ठित होने का विश्वास करने का कोई कारण है?

जवाबों:


8

फेसबुक के एनाटॉमी नामक इस दस्तावेज़ को देखकर मैं ध्यान देता हूं कि माध्यिका 100 है। संचयी फ़ंक्शन प्लॉट को देखते हुए मैं शर्त लगा सकता हूं कि औसत 200 से अधिक है, इसलिए 50 यहाँ सबसे अच्छी संख्या नहीं है। हालाँकि मुझे लगता है कि यह यहाँ मुख्य मुद्दा नहीं है।

मुख्य मुद्दा डेटाबेस का उपयोग कैसे किया गया था, इस बारे में जानकारी की कमी है।

यह उचित लगता है कि विशेष रूप से ग्राफ संरचनाओं के लिए डिज़ाइन किया गया डेटा संग्रहण पारंपरिक RDBMs की तुलना में अधिक कुशल है। हालाँकि, भले ही RDBM पसंद के डेटा संग्रहण के रूप में नवीनतम रुझानों में नहीं हैं, ये सिस्टम डेटा सेट आयामों के साथ एक दौड़ में लगातार विकसित हुए। विभिन्न प्रकार के संभावित डिजाइन, डेटा को अनुक्रमित करने के विभिन्न तरीके, संगामिति से संबंधित सुधार आदि हैं।

निष्कर्ष निकालने के लिए मुझे लगता है कि प्रतिलिपि प्रस्तुत करने योग्यता के बारे में, अध्ययन में डेटाबेस स्कीमा को कैसे डिज़ाइन किया गया था, इसका समुचित वर्णन नहीं है। मुझे उम्मीद नहीं है कि इस तरह के पूछताछ के राजा पर एक डेटाबेस हावी हो सकता है, हालांकि मैं उम्मीद करूंगा कि एक अच्छी तरह से तैयार डिजाइन के साथ मतभेद इतने बड़े पैमाने पर नहीं होंगे।


4

RDBMS में ग्राफ़ को मॉडल करने के लिए अच्छे / तेज़ तरीके हैं, और गूंगे / धीमे तरीके हैं।

  • कुछ ने तेज अनुक्रमणिका और स्टोर्ड प्रोक्स का उपयोग किया, तेजी से ग्राफ रिट्रीवल गति के लिए रैम डिस्क पर सीपीयू लोड और ट्यून्ड टेम्प टेबल का व्यापार किया।

  • कुछ पूर्वनिर्मित ग्राफ़ पथों का उपयोग करते हैं (यह सामाजिक नेटवर्क परिदृश्य में कम संभव हो सकता है, लेकिन एक पेड़ में अधिकांश नोड्स लीफ नोड्स होते हैं, यह एक बहुत अच्छा ट्रेडऑफ़ स्पेस-फॉर-टाइम है

  • कुछ बस एक लूप में गणना करते हैं, जो बिना-अनुक्रमित टेम्प टेबल का उपयोग करते हैं। लेख में फेंके गए # नोटों से, उनके द्वारा की गई बदबू (30 सेकंड- प्रदर्शन काफी छोटे डेटा सेट पर)

    उदाहरण के लिए, मेरी अपनी पेड़ की संगणना है।

    • यह एक उच्च-संग्रहित संग्रहित खरीद में संलग्न है

    • जब यह एक एंटरप्राइज़-आकार-हार्डवेयर Sybase ASE15 डेटासेवर में चल रहा होता है, तो उस सर्वर को अन्य सभी एंटरप्राइज़ ऐप्स के डेटा के एक जोड़े टेराबाइट्स के साथ साझा किया जाता है , कुछ और अधिक डेटा मेरा से भूखा होता है; और मेरे प्रश्नों को निष्पादित करने के लिए पूरी तरह समर्पित नहीं है।

    • मेरे पास मुख्य स्पीडअप उपकरण, एक रैम डिस्क पर एक अस्थायी तालिका तक पहुंच नहीं थी ।

    • डेटा का एक प्रतिनिधि सेट जो मैं प्राप्त कर रहा था कि लगता है कि उनका कोई मेल हो रहा है, उन्हें 2.5M नोड पूर्ण फ़ॉरेस्ट डेटासेट (पेड़ की असीमित गहराई, जो कि 5 और 15 के बीच भिन्न होती है, की तुलना में 150,000 नोड सबट्री मिल रही है, लेकिन किसी दिए गए नोड की तुलना में छोटे औसत एरिटी से अधिक है) प्रयोग में सूचीबद्ध 50 मित्र)

    • मैंने इसे इस बिंदु पर बताया कि यह क्वेरी ~ 30-45 सेकंड। यह निश्चित रूप से घातीय मंदी का प्रदर्शन नहीं करता है कि प्रश्न में आंकड़े उनके आरडीबीएमएस प्रदर्शन पर इंगित करते हैं, जो अतिरिक्त डबल अजीब है, क्योंकि परिणाम सेट में कोई घातीय वृद्धि नहीं है (जो मेरे लिए बिना ट्यून-इंडेक्स के पुन: जारी करता है) व्यक्तिगत अनुभव से अस्थायी तालिका)।

इसलिए, यह तुलना सबसे अधिक गलत है और खराब आरडीबीएमएस साइड डिज़ाइन पर आधारित है, हालांकि जैसा कि पिछले उत्तर में उल्लेख किया गया है, उनके बिना यह पता लगाना असंभव है कि उनके कोड और टेबल परिभाषाओं का 100% सोर्सिंग खुला है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.