10

मैं एक नई परियोजना शुरू कर रहा हूं जिसमें कुछ पदानुक्रमित डेटा है और मैं इस समय डेटाबेस में संग्रहीत करने के लिए सभी विकल्पों को देख रहा हूं ।डेटाबेस में पदानुक्रमित डेटा: पुनरावर्ती क्वेरी बनाम बंद तालिकाओं बनाम ग्राफ डेटाबेस

मैं PostgreSQL का उपयोग कर रहा हूं, जो रिकर्सिव क्वेरीिंग की अनुमति देता है। मैंने closure tables जैसे संबंधपरक डेटाबेस के लिए डिज़ाइन पैटर्न में भी देखा और मुझे ग्राफ डेटाबेस समाधान जैसे neo4j पर एक नज़र डाली।

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

कोई राय/अनुभव की सराहना की जाएगी!

+1

वह बंद करने की तालिका चीज़ वास्तव में बहुत साफ है। अनावश्यक यदि आपके पास पुनरावर्ती प्रश्न हैं, लेकिन अभी भी बहुत साफ है। इसे मेरे संज्ञान में लाने के लिए धन्यवाद। –

उत्तर

8

पूरे बंद तालिका बेमानी है अगर आप पुनरावर्ती प्रश्नों :)

उपयोग कर सकते हैं मुझे लगता है कि यह एक जटिल पुनरावर्ती पूछताछ आप अतिरिक्त आईओ (और डिस्क स्थान के साथ सौदा की तुलना में एक बार यह पता लगाने की है कि करने के लिए ज्यादा बेहतर है) एक अलग मेज और संबंधित ट्रिगर के।

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

+0

धन्यवाद, मैंने सोचा कि यह – tospo

+1

बेंचमार्क के लिए धन्यवाद हो सकता है। –

+0

आम तौर पर सहमत हैं, हालांकि जब आप अभी भी आसन्नता सूची दृष्टिकोण (जहां parent_id एक फ़ील्ड है) के विकल्प का उपयोग करना चाहते हैं, तो एक बार गाइड के लिए बिल करविन के एसक्यूएल एंटीपार्टर्न देखें। – Joffer

2

बंद करने की तालिका का स्तर-क्षेत्र ("गहराई") अनावश्यक है। इसकी गणना करने में केवल एक पुनरावर्ती क्वेरी होती है। यही इसका सारांश है।