ई-कॉमर्स वेबसाइट में एक टोकरी में संगामिति का प्रबंधन करने के लिए सबसे अच्छा अभ्यास


19

उस मामले को प्रबंधित करने के लिए सबसे अच्छा अभ्यास क्या है जहां दो ग्राहक एक ही समय में एक उत्पाद जोड़ते हैं जिसका स्टॉक केवल 1 था?

उसी उत्पाद को जोड़ने के लिए इन 2 ग्राहकों में से एक से बचने के लिए टोकरी के कोड में एक चेक होना चाहिए?

या क्या इस जाँच को भुगतान चरण में किया जाना चाहिए उदाहरण के लिए संबंधित उत्पाद की पुष्टि करने के लिए दूसरी क्वेरी अभी भी स्टॉक में मौजूद है (मतलब समवर्ती ग्राहक द्वारा अभी तक खरीदी नहीं गई है)?


कुछ साइटें, जैसे थिएटर टिकट आरक्षण, आपके लिए आइटम पर एक सीमित समय की पकड़ रखती है, जबकि ऑर्डर संसाधित किया जा रहा है
ब्रैड थॉमस

जवाबों:


11

इस प्रश्न का कोई सटीक उत्तर नहीं है और यह सभी विवरणों पर निर्भर करता है।

पहली 'डिफेंस लाइन' के रूप में मैं ऐसी स्थितियों से बचने की कोशिश करूंगा, केवल उन लेखों को न बेचकर, जो किसी भी संभव हो तो कम हो सकते हैं। यदि यह संभव है तो स्थिति और उस तरह के लेख पर निर्भर हो सकता है जिसे आप बेचना चाहते हैं। जिस कंपनी में मैं काम करता हूं, वहां स्टॉक खत्म होने से पहले ही लेख को वेबसाइट से हटा दिया जाता है। लेकिन हम पूरी बिक्री बेच रहे हैं और कुछ शेष लेख हमारी बिक्री लोगों द्वारा विशेष प्रस्तावों के रूप में बेचे जाते हैं। यह छोटी दुकानों के लिए एक विकल्प नहीं हो सकता है, खासकर जब उच्च कीमत वाले लेख बेचते हैं।

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

इसलिए छोटी नौकरियों के लिए मेरी विनम्र राय में भुगतान से ठीक पहले अंतिम जांच करना है, जब ऑर्डर वास्तव में रखा गया हो। सबसे खराब स्थिति में आपको ग्राहक को बताना होगा कि आप अभी स्टॉक से बाहर हैं (छोटी दुकानों के लिए क्या होगा जो अक्सर नहीं होता है)।


अच्छी पकड़ - स्टॉक में कम और उच्च कीमतों
रोहनगरवाल

5

मुझे लगता है कि सबसे अच्छा अभ्यास यह चुनना है कि नीचे दिए गए विकल्पों में से कौन सा विशेष व्यावसायिक मामले के लिए अधिक उपयुक्त है :

  1. आशावादी ऑफ़लाइन लॉक

    ... इस समस्या ( सत्र संघर्ष की समस्या ) को यह सत्यापित करके हल करता है कि एक सत्र द्वारा किए जाने वाले परिवर्तन दूसरे सत्र के परिवर्तनों के साथ संघर्ष नहीं करते हैं। एक सफल पूर्व-प्रतिबद्ध सत्यापन है, एक अर्थ में, यह दर्शाता है कि रिकॉर्ड डेटा के परिवर्तनों के साथ आगे बढ़ना ठीक है। जब तक सत्यापन और अपडेट एक ही प्रणाली के लेन-देन के भीतर होते हैं, तब व्यापार लेनदेन में स्थिरता प्रदर्शित होगी ...

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


5

यह एक लोगों की समस्या है, साथ ही एक डेटाबेस समस्या है, डेटाबेस लॉकिंग आसान बिट है!

यह देखते हुए कि ग्राहक कभी भी जांच नहीं कर सकता ...

आपके पास दो मूल विकल्प हैं:

  • आप ग्राहक के लिए एक निश्चित समय (20 मिनट) के लिए एक आइटम आरक्षित करते हैं जब उन्होंने इसे टोकरी में जोड़ा है - समय के बाद उन्हें स्टॉक के स्तर को फिर से जाँचना होगा या फिर से शुरू करना होगा। यह अक्सर घटनाओं या एयरलाइन सीटों पर टिकट के लिए उपयोग किया जाता है।

  • या आप ऐसा कुछ कहते हैं जैसे "xxx 24 घंटों में सामान्य हो जाता है ", लेकिन जब वे चेकआउट करते हैं तो स्टॉक को आरक्षित करते हैं, इस मामले में आपको चेकआउट के बाद आदेश को रद्द करने की अनुमति देनी चाहिए यदि कुछ आइटम स्टॉक में हैं लेकिन अन्य नहीं। (ग्रीन, येलो, रेड स्टॉक का स्तर भी अच्छी तरह से काम कर सकता है, या कुछ वेबसाइट का कहना है कि "कम स्टॉक" जब वे 1 या 2 से नीचे होते हैं)


2

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


2

हमारे मामले में, हमने आदेशों को संभालने के लिए संदेश कतार का उपयोग किया और इसे ऐसे कॉन्फ़िगर किया कि यह केवल उसी उत्पाद पर अनुक्रम में एक समय में एक नौकरी की प्रक्रिया करता है, एक फीफो फैशन में।

चेतावनी यह है कि आप पूरे ऑर्डर प्रोसेसिंग में एक नया ओवरहेड जोड़ रहे हैं जो चीजों को थोड़ा विलंबित करता है।


आप केवल एक उपभोक्ता द्वारा उपभोग की जाने वाली कतार को सीमित कर रहे हैं
रोहनगरवाल

1

उपयोगकर्ता के लिए सबसे अच्छा अभ्यास, स्पष्ट रूप से यह सुनिश्चित करने के लिए है कि दूसरा ऐड विफल रहता है। लेकिन यह 0.1% मामले की खातिर आपकी पूरी साइट को धीमा करने वाला है।

सबसे तकनीकी रूप से कुशल समाधान, और बिक्री को अधिकतम करने के लिए, इसे सफल होने के लिए अनुमति देना है और फिर बाद में दोनों आदेशों को पूरा करने की कोशिश करना है - सिर्फ इसलिए कि आपके पास अभी स्टॉक नहीं है, इसका मतलब यह नहीं है कि आप इसे नहीं पा सकते हैं। एक आपात स्थिति में। यदि आप नहीं कर सकते हैं तो किसी को उस उपयोगकर्ता से संपर्क करना होगा जो किस्मत में था और माफी माँगता है। लेकिन वास्तव में इस साल क्रिसमस से पहले इसे लेकर हंगामा हुआ (यह एकमात्र ऐसा लेख नहीं है जो दिखाई दिया, इसलिए सर्वश्रेष्ठ खरीदें के लिए क्षमा याचना की गई लेकिन यह पहली बार मुझे मिला)।

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

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