2009-05-27 14 views
11

मेरे पास एक उत्पाद कैटलॉग है। प्रत्येक श्रेणी में उपश्रेणियों के अलग-अलग संख्या (गहरे) होते हैं। स्तर (गहरा) की संख्या अज्ञात है, लेकिन मुझे पूरा यकीन है कि यह 5,6 स्तर से अधिक नहीं होगा। डेटा परिवर्तन बहुत दुर्लभ रूप से पढ़ता है तो पढ़ता है।पदानुक्रमित डेटा मॉडल: विज्ञापन सूची बनाम नेस्टेड सेट

सवाल यह है कि इस तरह की स्थिति के लिए किस प्रकार का पदानुक्रमित डेटा मॉडल अधिक उपयुक्त है। यह परियोजना Django ढांचे पर आधारित है और इसकी विशिष्टताओं (व्यवस्थापक i-face, मॉडल हैंडलिंग ...) पर विचार किया जाना चाहिए।

बहुत धन्यवाद!

उत्तर

4

Nested sets प्रदर्शन के लिए बेहतर हैं, यदि आपको लगातार अपडेट या पदानुक्रमित क्रम की आवश्यकता नहीं है।

यदि आपको या तो पेड़ अपडेट या पदानुक्रमित क्रम की आवश्यकता है, तो parent-child डेटा मॉडल का उपयोग करना बेहतर है।

यह आसानी से नहीं इतनी आसानी से (लेकिन अभी भी संभव है) MySQL में Oracle और SQL Server 2005+ में निर्माण है, और।

4

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

सौभाग्य से Django इस के लिए एक महान पुस्तकालय उपलब्ध है, django-mptt। मैंने इसे कई परियोजनाओं में बहुत सफलता के साथ उपयोग किया है। django-treebeard भी है जो कई वैकल्पिक एल्गोरिदम प्रदान करता है, लेकिन मैंने इसका उपयोग नहीं किया है (और यह एमपीटी के रूप में लोकप्रिय नहीं लगता है)।

+4

नोट: MPTT और "नेस्टेड सेट" इसी अवधारणा के लिए अलग अलग नाम हैं। – jwfearn

4

इन लेखों के अनुसार:

http://explainextended.com/2009/09/24/adjacency-list-vs-nested-sets-postgresql/ http://explainextended.com/2009/09/29/adjacency-list-vs-nested-sets-mysql/

"MySQL जो नेस्टेड सेट के लिए बिग फोर (MySQL, Oracle, SQL सर्वर, PostgreSQL) का केवल प्रणाली है मॉडल सभ्य प्रदर्शन दिखाता है और संग्रहित पदानुक्रमित डेटा पर विचार किया जा सकता है। "

+1

गोश ... की तुलना में क्या? मैंने पाया है कि नेस्टेड सेट प्रतिस्पर्धा से दरवाजे को बहुत ज्यादा उड़ाते हैं। अपवाद ओरेकल में कनेक्ट की कार्यक्षमता होगी। –

0

विज्ञापन सूची को बनाए रखना बहुत आसान है और नेस्टेड सेट क्वेरी के लिए बहुत तेज़ हैं।

समस्या हमेशा रहा है कि नेस्टेड सेट करने के लिए एक संलग्नता सूची परिवर्तित एक बहुत बुरा "पुश ढेर" विधि कि RBAR के साथ भरी हुई है करने के लिए लंबे समय के लिए धन्यवाद करने के लिए जिस तरह से ले लिया है। तो लोग नेस्टेड सेट में कुछ वास्तव में कठिन रखरखाव कर रहे हैं या उनका उपयोग नहीं कर रहे हैं।

अब, आप अपना केक ले सकते हैं और इसे भी खा सकते हैं! आप 4 सेकंड से कम 100,000 नोड्सिन पर और एक मिनट से भी कम समय में दस लाख पंक्तियों पर रूपांतरण कर सकते हैं! टी-एसक्यूएल में सभी तरह से! कृपया निम्नलिखित लेख देखें।

Hierarchies on Steroids #1: Convert an Adjacency List to Nested Sets

Hierarchies on Steroids #2: A Replacement for Nested Sets Calculations

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