मैं वर्तमान में एक नोड ऐप लिख रहा हूं और मैं स्केलिंग में आगे सोच रहा हूं। जैसा कि मैं समझता हूं, क्षैतिज स्केलिंग अधिक समवर्ती अनुरोधों को संभालने के लिए किसी एप्लिकेशन को स्केल करने के आसान तरीकों में से एक है। मेरी कामकाजी प्रति वर्तमान में बैकएंड पर मोंगो डीबी का उपयोग करती है।एक डेटाबेस के साथ एकाधिक नोड उदाहरण
मेरा प्रश्न इस प्रकार है: मेरे पास एक डेटा संरचना है जो एक लिंक की गई सूची जैसा दिखता है जिसके लिए आदेश को सख्ती से बनाए रखने की आवश्यकता होती है। मेरी (काल्पनिक) चिंता यह है कि जब कई नोड उदाहरणों के माध्यम से डेटाबेस में दौड़ की स्थिति होती है, तो यह संभव है कि लिंक की गई सूची का समाधान गलत होगा।
उदाहरण देने के लिए: इस सूची वाले सर्वर की कल्पना करें-> बी। इंस्टेंस 1 ऑब्जेक्ट सी के साथ आता है और इंस्टेंस 2 ऑब्जेक्ट डी के साथ आता है। यह संभव है कि एक दौड़ की स्थिति है जिसमें दोनों उदाहरण एक-> बी पढ़ते हैं और सूची में अपनी वस्तुओं को जोड़ने का फैसला करते हैं। उदाहरण 1 में कल्पना की जाएगी कि यह ए-> बी-> सी होने का सम्मिलन होगा जबकि उदाहरण 2 लगता है कि यह एक-> b-> d है जब डेटाबेस वास्तव में एक-> b-> c-> d रखता है।
सामान्यतः, यह आशावादी लॉकिंग के लिए नौकरी की तरह लगता है, हालांकि, जैसा कि मैं समझता हूं, न तो मोंगोडीबी या रेडिस (अन्य डेटाबेस जिसे मैं विचार कर रहा हूं) एसक्यूएल तरीके से लेनदेन करता है।
इसलिए मैं सोच भी समाधान नीचे से एक होने की:
झंडे का उपयोग कर MongoDB में अपने खुद के लेन-देन को लागू करें। क्लाइंट लॉक वैरिएबल पर एक ढूँढें और मॉडोडिफाइज़ करता है और यदि सफल होता है, तो ऑपरेशन करता है। यदि असफल, क्लाइंट एक निश्चित टाइमआउट के बाद पुनः प्रयास करता है।
उसी प्रभाव को प्राप्त करने के लिए रेडिस लेनदेन और पबब का उपयोग करें। मुझे बिल्कुल यकीन नहीं है कि यह अभी तक कैसे करें, लेकिन ऐसा लगता है जैसे यह संभव हो सकता है।
कुछ प्रकार के स्मार्ट लोड संतुलन को लागू करें। यदि एकाधिक ग्राहक एक ही आइटम पर काम कर रहे हैं, तो उन्हें उसी उदाहरण पर रूट करें। चूंकि जेएस एकल थ्रेडेड है, इसलिए समस्या हल हो जाएगी। दुर्भाग्यवश, मुझे उसमें एक सीधा समाधान नहीं मिला।
मुझे यकीन है कि ऊपर प्राप्त करने के लिए एक बेहतर, अधिक सुरुचिपूर्ण तरीका मौजूद है, और मुझे कोई समाधान या सुझाव सुनना अच्छा लगेगा। धन्यवाद!
+1 सिर्फ Node.js प्रयोग करने के लिए + MongoDB –
इसके अलावा neo4j को देखो आप डेटा अधिक दस्तावेजों का एक सेट की तुलना में एक ग्राफ की तरह लग रही है, तो ... –
धन्यवाद :) मुझे लगता है कि इस पर एक नज़र भी ले लेंगे । – johncch