Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

इन्वेंट्री प्रबंधन प्रणाली के लिए SQL बनाम NoSQL

<ब्लॉककोट>
  1. प्रत्येक चैनल के लिए इन्वेंट्री अपडेट प्रबंधित करने के लिए कतारें।

यह जरूरी नहीं कि एक डेटाबेस मुद्दा है। बेहतर होगा कि आप एक मैसेजिंग सिस्टम (जैसे RabbitMQ) देखें

<ब्लॉककोट>
  1. इन्वेंटरी तालिका जिसमें प्रत्येक चैनल पर आवंटन का सही स्नैपशॉट है।
  2. सत्र आईडी और अन्य तेज़ एक्सेस डेटा को कैश में रखना।

सत्र डेटा शायद कार्य के लिए अधिक उपयुक्त एक अलग डेटाबेस में रखा जाना चाहिए (उदाहरण के लिए memcached, redis, आदि) कोई भी आकार-फिट-सभी डीबी नहीं है

<ब्लॉककोट>
  1. विक्रेता को यथाशीघ्र अपडेट रखने के लिए एक फेसबुक जैसा डैशबोर्ड (एक्सएमपीपी) प्रदान करना।

मेरी बाधाएं हैं:1. इन्वेंट्री अपडेट को खोया नहीं जा सकता.

इस प्रश्न का उत्तर देने के 3 तरीके हैं:

  1. यह सुविधा आपके आवेदन द्वारा प्रदान की जानी चाहिए। डेटाबेस गारंटी दे सकता है कि एक खराब रिकॉर्ड को अस्वीकार कर दिया गया है और वापस ले लिया गया है, लेकिन यह गारंटी नहीं है कि प्रत्येक क्वेरी दर्ज की जाएगी। ऐप को एक त्रुटि होने पर पहचानने और फिर से प्रयास करने के लिए पर्याप्त स्मार्ट होना होगा।

  2. कुछ डीबी मेमोरी में रिकॉर्ड स्टोर करते हैं और फिर मेमोरी को डिस्क पर नियमित रूप से फ्लश करते हैं, इससे बिजली की विफलता के मामले में डेटा हानि हो सकती है। (उदाहरण के लिए मोंगो डिफ़ॉल्ट रूप से इस तरह से काम करता है जब तक कि आप जर्नलिंग सक्षम नहीं करते हैं। कॉच डीबी हमेशा रिकॉर्ड्स में संलग्न होता है (यहां तक ​​​​कि एक डिलीट भी रिकॉर्ड में जोड़ा गया ध्वज है, इसलिए डेटा हानि बेहद मुश्किल है))

  3. कुछ डीबी बेहद विश्वसनीय होने के लिए डिज़ाइन किए गए हैं, भले ही भूकंप, तूफान या अन्य प्राकृतिक आपदाएं आती हैं, वे टिकाऊ रहते हैं। इनमें Cassandra, Hbase, Riak, Hadoop, आदि शामिल हैं

आप किस प्रकार के टिकाऊपन की बात कर रहे हैं?

<ब्लॉककोट>
  1. नौकरी कतारों को क्रम से निष्पादित किया जाना चाहिए और अधिमानतः कभी नहीं खोया जाना चाहिए।

अधिकांश नोएसक्यूएल समाधान समानांतर में चलना पसंद करते हैं। तो आपके पास यहां दो विकल्प हैं।1. एक डीबी का उपयोग करें जो प्रत्येक क्वेरी (धीमी) 2 के लिए पूरी तालिका को लॉक करता है। अपने ऐप को अधिक स्मार्ट या घटनापूर्ण बनाने के लिए बनाएं (क्लाइंट साइड सीक्वेंशियल क्यूइंग)

<ब्लॉककोट>
  1. आसान/तेज़ विकास और भविष्य में रखरखाव।

आम तौर पर, आप पाएंगे कि एसक्यूएल पहले विकसित करने के लिए तेज़ है, लेकिन परिवर्तनों को लागू करना कठिन हो सकता हैनोएसक्यूएल को थोड़ी अधिक योजना की आवश्यकता हो सकती है, लेकिन तदर्थ प्रश्नों या स्कीमा परिवर्तनों को करना आसान है।

शायद आपको अपने आप से जो प्रश्न पूछने चाहिए, वे कुछ इस प्रकार हैं:

  1. "क्या मुझे गहन प्रश्नों या गहन विश्लेषण की आवश्यकता होगी कि नक्शा/कम करने के लिए बेहतर अनुकूल है?"

  2. "क्या मुझे अपना स्कीमा बार-बार बदलना होगा?

  3. "क्या मेरा डेटा अत्यधिक संबंधपरक है? किस तरह से?"

  4. "क्या मेरे चुने हुए डीबी के पीछे विक्रेता के पास जरूरत पड़ने पर मेरी मदद करने के लिए पर्याप्त अनुभव है?"

  5. "क्या मुझे भू-स्थानिक अनुक्रमण, पूर्ण पाठ खोज, आदि जैसी विशेष सुविधा की आवश्यकता होगी?"

  6. "मुझे रीयलटाइम के कितने करीब अपने डेटा की आवश्यकता होगी? अगर 1 सेकंड बाद तक मुझे अपने प्रश्नों में नवीनतम रिकॉर्ड दिखाई नहीं देते हैं तो क्या यह चोट पहुंचाएगा? विलंबता का कौन सा स्तर स्वीकार्य है?"

  7. "असफल होने के मामले में मुझे वास्तव में क्या चाहिए"

  8. "मेरा डेटा कितना बड़ा है? क्या यह मेमोरी में फिट होगा? क्या यह एक कंप्यूटर पर फिट होगा? क्या प्रत्येक व्यक्तिगत रिकॉर्ड बड़ा या छोटा है?

  9. "मेरा डेटा कितनी बार बदलेगा? क्या यह एक संग्रह है?"

यदि आपके पास अपने स्वयं के इन्वेंट्री स्कीमा के साथ कई ग्राहक (चैनल?) होने जा रहे हैं, तो दस्तावेज़ आधारित डीबी के फायदे हो सकते हैं। मुझे याद है एक बार मैंने इन्वेंट्री के साथ एक ईकॉमर्स सिस्टम को देखा था और इसमें लगभग 235 टेबल थे! फिर, यदि आपके पास कुछ रिलेशनल डेटा है, तो SQL सॉल्यूशन के वास्तव में कुछ फायदे भी हो सकते हैं।

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस व्यस्त लोड में कनेक्ट करने में असमर्थ

  2. रेडिस के लिए C#/.NET क्लाइंट

  3. लुआ स्क्रिप्ट और रेडिस - किसी भी मूल्य के लिए परीक्षण कैसे करें

  4. क्या .NET Core 3 में Redis कैश को स्टैक एक्सचेंज पैकेज के उपयोग की आवश्यकता है?

  5. डेटाफ़्रेम से RDD [(स्ट्रिंग, स्ट्रिंग)] रूपांतरण