2009-07-21 16 views
20

कुछ hype around graph databases है। मैं सोच रहा हूँ क्यों।ग्राफ डेटाबेस के चारों ओर हाइप ... क्यों?

ग्राफ डेटाबेस का उपयोग करके हल किए जा सकने वाले संभावित माहौल में किस संभावित समस्या का सामना किया जा सकता है? और शास्त्रीय अनुप्रयोगों के लिए उपयुक्त ग्राफ डेटाबेस हैं, यानी एक रिलेशनल डेटाबेस के लिए ड्रॉप-इन प्रतिस्थापन के रूप में उपयोग किया जा सकता है? तो वास्तव में यह एक में दो प्रश्न हैं।

संबंधित:Has anyone used Graph-based Databases (http://neo4j.org/)?

उत्तर

20

रेखांकन से कई रिलेशनल अभ्यावेदन सभी कार्यों आप प्रदर्शन करने के लिए चाहते हो सकता है के लिए विशेष रूप से सक्षम नहीं हैं।

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

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

+0

ट्रांजिटिव क्लोजर एसक्यूएल मानक का हिस्सा नहीं हो सकता है (और सामान्य मामले में लागू करने के लिए संभवतः कठिन है, या अधिक विक्रेताओं ने इसे किया होगा) लेकिन संग्रहित प्रक्रियाओं का उपयोग करके किसी विशिष्ट एप्लिकेशन के लिए इसे लागू करना मुश्किल नहीं है। – finnw

+3

निश्चित रूप से; लेकिन संग्रहित प्रक्रियाओं के रूप में विज्ञापन-संबंधी प्रश्न लिखना आपके शैली में एक चिड़ियाघर डाल सकता है। –

+3

@finnw समस्या यह करने में सक्षम नहीं है, समस्याएं दक्षता और प्रदर्शन हैं। अच्छे पढ़ने के प्रदर्शन को प्राप्त करने के लिए आपको डालने के प्रदर्शन और कचरे के बहुत सारे डिस्क स्थान को त्यागना होगा। यह आलेख: http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx यह बताता है कि रीड के लिए आवेषण और सामान्य एसक्यूएल के लिए संग्रहीत प्रक्रियाओं का उपयोग करके यह कैसे किया जा सकता है। – nawroth

3

मेरी राय में, सोशल नेटवर्किंग साइटें ग्राफ डेटाबेस से लाभान्वित हो सकती हैं क्योंकि ग्राफ उपयोगकर्ताओं के बीच कनेक्शन संग्रहीत करने का एक प्राकृतिक तरीका है।

2

Q1 के लिए Answwer: मार्ग

10

आप इन दो stackoverflow धागे में कुछ जवाब मिल जाएगा:

शास्त्रीय क्षुधा के बारे में, इस Neo4j विकि पृष्ठ सकता है ब्याज की हो: Domain Modeling Gallery (मैंने इसे लिखा)।