Magento की अनुक्रमण केवल भावना में डेटाबेस-स्तर अनुक्रमण के समान है। जैसा कि एंटोन कहते हैं, यह किसी साइट के तेजी से संचालन की अनुमति देने के लिए असामान्यकरण की प्रक्रिया है। मैं Magento डेटाबेस संरचना के पीछे के कुछ विचारों को समझाने की कोशिश करता हूँ और क्यों यह अनुक्रमण को गति से संचालित करने के लिए आवश्यक बनाता है।
अधिक "विशिष्ट" MySQL डेटाबेस में, कैटलॉग उत्पादों को संग्रहीत करने के लिए एक तालिका कुछ इस तरह संरचित की जाएगी:
PRODUCT:
product_id INT
sku VARCHAR
name VARCHAR
size VARCHAR
longdesc VARCHAR
shortdesc VARCHAR
... etc ...
यह पुनर्प्राप्ति के लिए तेज़ है, लेकिन यह ईकामर्स सॉफ़्टवेयर के एक टुकड़े के लिए एक मूलभूत समस्या छोड़ देता है:जब आप अधिक विशेषताएँ जोड़ना चाहते हैं तो आप क्या करते हैं? क्या होगा यदि आप खिलौने बेचते हैं, और आकार कॉलम के बजाय, आपको age_range
. की आवश्यकता है ? ठीक है, आप एक और कॉलम जोड़ सकते हैं, लेकिन यह स्पष्ट होना चाहिए कि एक बड़े स्टोर में (उदाहरण के लिए, वॉलमार्ट के बारे में सोचें), इसके परिणामस्वरूप 90% खाली पंक्तियाँ होंगी और नई विशेषताओं को बनाए रखने का प्रयास करना लगभग असंभव है।
इस समस्या से निपटने के लिए, मैगेंटो टेबल को छोटी इकाइयों में विभाजित करता है। मैं इस उत्तर में संपूर्ण ईएवी प्रणाली को फिर से बनाना नहीं चाहता, इसलिए कृपया इस सरलीकृत मॉडल को स्वीकार करें:
PRODUCT:
product_id INT
sku VARCHAR
PRODUCT_ATTRIBUTE_VALUES
product_id INT
attribute_id INT
value MISC
PRODUCT_ATTRIBUTES
attribute_id
name
अब product_attributes
. में नए मान दर्ज करके अपनी इच्छानुसार विशेषताओं को जोड़ना संभव है और फिर पास के रिकॉर्ड को product_attribute_values
. में डालना . यह मूल रूप से मैगेंटो करता है (डेटाटाइप के लिए थोड़ा अधिक सम्मान के साथ मैंने यहां प्रदर्शित किया है)। वास्तव में, अब दो उत्पादों के समान फ़ील्ड होने का कोई कारण नहीं है, इसलिए हम संपूर्ण उत्पाद प्रकार बना सकते हैं विशेषताओं के विभिन्न सेटों के साथ!
हालाँकि, यह लचीलापन एक कीमत पर आता है। अगर मैं color
खोजना चाहता हूं मेरे सिस्टम में एक शर्ट की (एक तुच्छ उदाहरण), मुझे खोजने की जरूरत है:
product_id
आइटम का (उत्पाद तालिका में)attribute_id
color
. के लिए (विशेषता तालिका में)- आखिरकार, वास्तविक
value
(विशेषता_मान तालिका में)
मैगेंटो इस तरह काम करता था, लेकिन यह बहुत धीमा था। इसलिए, बेहतर प्रदर्शन की अनुमति देने के लिए, उन्होंने एक समझौता किया:एक बार जब दुकान के मालिक ने अपनी इच्छित विशेषताओं को परिभाषित कर लिया, तो आगे बढ़ें और शुरुआत से ही बड़ी तालिका तैयार करें। जब कुछ बदलता है, तो उसे अंतरिक्ष से परमाणु और फिर से उत्पन्न करें। इस तरह, डेटा मुख्य रूप से हमारे अच्छे लचीले प्रारूप में संग्रहीत किया जाता है, लेकिन एक ही तालिका से पूछताछ की जाती है।
ये परिणामी लुकअप टेबल Magento "इंडेक्स" हैं। जब आप पुन:अनुक्रमित करते हैं, तो आप पुरानी तालिका को उड़ा रहे हैं और इसे फिर से बना रहे हैं।
आशा है कि यह चीजों को थोड़ा स्पष्ट करता है!
धन्यवाद, जो