मैं एक ऐसे एप्लिकेशन पर काम कर रहा हूं, जिसमें डेटाबेस में अपडेट / सेलेक्टेड क्वेरीज़ का बहुत उच्च निष्पादन शामिल है।
मेरे पास एक बेस टेबल (ए) है, जिसमें एक दिन के लिए एक इकाई के लिए लगभग 500 रिकॉर्ड होंगे। और सिस्टम के प्रत्येक उपयोगकर्ता के लिए, उपयोगकर्ता की कुछ प्राथमिकताओं के आधार पर इस इकाई का एक रूपांतर बनाया जाता है और उन्हें किसी अन्य तालिका (B) में संग्रहीत किया जाता है। यह एक क्रॉन जॉब द्वारा किया जाता है जो हर रोज आधी रात को चलता है।
इसलिए यदि तालिका ए में 10,000 उपयोगकर्ता और 500 रिकॉर्ड हैं, तो उस दिन तालिका बी में 5M रिकॉर्ड होंगे। मैं हमेशा इन तालिकाओं में एक दिन के लिए डेटा रखता हूं और आधी रात को मैं ऐतिहासिक डेटा को HBase में संग्रहीत करता हूं। यह सेटअप ठीक काम कर रहा है और मेरे पास अब तक कोई प्रदर्शन समस्या नहीं है।
हाल ही में व्यावसायिक आवश्यकताओं में कुछ बदलाव हुए हैं और अब आधार तालिका ए (15 - 20 रिकॉर्ड के लिए) में कुछ विशेषताएँ हर 20 सेकंड में बदल जाएंगी और इसके आधार पर मुझे तालिका बी में उन सभी विविध रिकॉर्डों के लिए कुछ मूल्यों को फिर से समझना होगा। सभी उपयोगकर्ताओं। भले ही केवल 20 मास्टर रिकॉर्ड बदलते हैं, लेकिन मुझे 200,000 उपयोगकर्ता रिकॉर्ड को पुनर्गणना और अद्यतन करने की आवश्यकता है जो 20 सेकंड से अधिक समय लेता है और तब तक अगला अपडेट होता है जिसके परिणामस्वरूप सभी चुनिंदा प्रश्नों को कतारबद्ध किया जाता है। मुझे ऑनलाइन उपयोगकर्ताओं से लगभग 3 प्राप्त अनुरोध / 5 सेकंड मिल रहे हैं, जिसके परिणामस्वरूप 6-9 चुनिंदा प्रश्न होते हैं। एक एपीआई के अनुरोध का जवाब देने के लिए, मैं हमेशा टेबल बी में खेतों का उपयोग करता हूं।
मैं अधिक प्रोसेसिंग पावर खरीद सकता हूं और इस स्थिति को हल कर सकता हूं, लेकिन मैं ठीक से स्केलेड सिस्टम होने में दिलचस्पी रखता हूं जो एक मिलियन उपयोगकर्ताओं को भी संभाल सकता है।
क्या यहां कोई बेहतर विकल्प सुझा सकता है? क्या nosql + संबंधपरक डेटाबेस यहाँ मेरी मदद करता है? क्या ऐसे कोई प्लेटफ़ॉर्म / डेटास्टोर्स हैं जो मुझे बिना लॉक किए बार-बार डेटा अपडेट करने देंगे और साथ ही मुझे एक इकाई में विभिन्न क्षेत्रों पर चुनिंदा प्रश्नों को चलाने की सुविधा देंगे?