"NoSQL" अंतरिक्ष में रहने के कई वर्षों के बाद, अब मुझे एक समस्या है जो इसके स्वभाव में काफी "संबंधपरक" है। आज मैं पहले की तुलना में काफी अलग आँखों के साथ डेटा स्टोर देखता हूं। रीक जैसी चीजों ने मुझे इस तरह बिगाड़ दिया है कि मैं असफलता के एक भी बिंदु को बर्दाश्त नहीं कर सकता, "रखरखाव के लिए नीचे" आदि। यह एक व्यक्तिगत परियोजना है जो काफी नहीं है (या अभी तक) बेहद उच्च आवश्यकताएं हैं।
अधिकांश शार्डिंग सॉल्यूशंस मुझे वह नहीं देते हैं जो मैं चाहता हूं (कम से कम एक झलक पर), शायद इसलिए कि मेरी समस्या को हल करने के लिए काफी "आसान" है। कम से कम वैचारिक स्तर पर (आरडीबीएम खुद मेज पर लाए जाने वाले प्रतिबंधों की अनदेखी करते हुए)।
मेरे पास "साझा" डेटा की थोड़ी मात्रा है, जिसे स्वतंत्र रूप से दोहराया जा सकता है। इसमें कठिन संगति की आवश्यकताएं नहीं हैं। यह एक डायनामो-जैसे डेटाबेस में संग्रहीत किया जा सकता है और असीम पैमाने पर होगा। लेकिन मैं फिर भी यदि संभव हो तो एक ही डेटाबेस के साथ जाना चाहूंगा।
मेरे पास "प्रति-उपयोगकर्ता" डेटा बहुत सारे हैं। यह है - बहुत सारे उपयोगकर्ता, हर उपयोगकर्ता के पास बिल्कुल उचित आकार का डेटा है, वास्तव में एक पोस्टग्रेएसक्यूएल नोड पर संग्रहीत होने के लिए फिट है। हम अधिकतम पर हजारों रिकॉर्ड के 10 के बारे में बात कर रहे हैं।
मुझे क्रॉस-उपयोगकर्ता को क्वेरी करने की आवश्यकता नहीं है और मुझे क्रॉस-उपयोगकर्ता परमाणु की आवश्यकता नहीं है।
यह प्राप्त करने के लिए बेहद आसान लगता है। कम से कम जब मैं इसे अपनी "NoSQL आँखों" के साथ देख रहा हूँ।
यहाँ मेरे भोले स्टार्टर विचार हैं:
बहुत चरम पर, मैं पूरे उपयोगकर्ता को Riak में एक एकल कुंजी / मान के रूप में अनुक्रमित कर सकता था। बेशक, कई मेगाबाइट डेटा का निरंतर डी / क्रमांकन धीमा होगा और इसीलिए मैं PostgreSQL का उपयोग करने पर विचार कर रहा हूं। Riak K / Vs का एक बहुत कुछ नहीं है, क्योंकि मुझे प्रत्येक उपयोगकर्ता के डेटा के भीतर परमाणु / लेनदेन की आवश्यकता है।
मैं प्रति उपयोगकर्ता एक SQLite डेटाबेस का उपयोग कर सकता हूं, और अतिरेक / उपलब्धता के लिए GlusterFS जैसी किसी चीज का उपयोग कर सकता हूं। यह संभवत: समाधान है जिसे मैं चुनने जा रहा हूं यदि मुझे PostgreSQL का उपयोग करके समान रूप से कुछ अच्छा नहीं मिल रहा है। पेशेवरों: नीचे / ऊपर पैमाने पर वास्तव में अच्छी तरह से कर सकते हैं; विपक्ष: मैं PostgreSQL के प्रकार और SQLite पर सख्ती करना पसंद करेंगे
तो, मैं आदर्श रूप से एक PostgreSQL शार्किंग समाधान से क्या अनुरोध करूंगा:
- हर उपयोगकर्ता के डेटा की कई प्रतियाँ स्वचालित रूप से (विभिन्न मशीनों पर) आसपास रखें। प्रति उपयोगकर्ता / शार्प (यदि पिछले मास्टर नीचे जाता है) प्रति मास्टर नोड को गतिशील रूप से स्विच करने में सक्षम हो।
- सर्वर नोड्स को जोड़ / हटाकर, गतिशील रूप से ऊपर / नीचे पैमाने पर सक्षम हो। ज्यादातर जैसे रयाक ही कर पाता है।
- यह जानने के लिए कि कौन सी नोड्स से बात करनी है और कब नहीं।