पोस्टग्रेज SQL को मशीनों में विभाजित करने का आधुनिक तरीका क्या है, जब डेटा "स्वाभाविक रूप से विभाजन योग्य" है


22

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

अधिकांश शार्डिंग सॉल्यूशंस मुझे वह नहीं देते हैं जो मैं चाहता हूं (कम से कम एक झलक पर), शायद इसलिए कि मेरी समस्या को हल करने के लिए काफी "आसान" है। कम से कम वैचारिक स्तर पर (आरडीबीएम खुद मेज पर लाए जाने वाले प्रतिबंधों की अनदेखी करते हुए)।

  1. मेरे पास "साझा" डेटा की थोड़ी मात्रा है, जिसे स्वतंत्र रूप से दोहराया जा सकता है। इसमें कठिन संगति की आवश्यकताएं नहीं हैं। यह एक डायनामो-जैसे डेटाबेस में संग्रहीत किया जा सकता है और असीम पैमाने पर होगा। लेकिन मैं फिर भी यदि संभव हो तो एक ही डेटाबेस के साथ जाना चाहूंगा।

  2. मेरे पास "प्रति-उपयोगकर्ता" डेटा बहुत सारे हैं। यह है - बहुत सारे उपयोगकर्ता, हर उपयोगकर्ता के पास बिल्कुल उचित आकार का डेटा है, वास्तव में एक पोस्टग्रेएसक्यूएल नोड पर संग्रहीत होने के लिए फिट है। हम अधिकतम पर हजारों रिकॉर्ड के 10 के बारे में बात कर रहे हैं।

  3. मुझे क्रॉस-उपयोगकर्ता को क्वेरी करने की आवश्यकता नहीं है और मुझे क्रॉस-उपयोगकर्ता परमाणु की आवश्यकता नहीं है।

यह प्राप्त करने के लिए बेहद आसान लगता है। कम से कम जब मैं इसे अपनी "NoSQL आँखों" के साथ देख रहा हूँ।

यहाँ मेरे भोले स्टार्टर विचार हैं:

  1. बहुत चरम पर, मैं पूरे उपयोगकर्ता को Riak में एक एकल कुंजी / मान के रूप में अनुक्रमित कर सकता था। बेशक, कई मेगाबाइट डेटा का निरंतर डी / क्रमांकन धीमा होगा और इसीलिए मैं PostgreSQL का उपयोग करने पर विचार कर रहा हूं। Riak K / Vs का एक बहुत कुछ नहीं है, क्योंकि मुझे प्रत्येक उपयोगकर्ता के डेटा के भीतर परमाणु / लेनदेन की आवश्यकता है।

  2. मैं प्रति उपयोगकर्ता एक SQLite डेटाबेस का उपयोग कर सकता हूं, और अतिरेक / उपलब्धता के लिए GlusterFS जैसी किसी चीज का उपयोग कर सकता हूं। यह संभवत: समाधान है जिसे मैं चुनने जा रहा हूं यदि मुझे PostgreSQL का उपयोग करके समान रूप से कुछ अच्छा नहीं मिल रहा है। पेशेवरों: नीचे / ऊपर पैमाने पर वास्तव में अच्छी तरह से कर सकते हैं; विपक्ष: मैं PostgreSQL के प्रकार और SQLite पर सख्ती करना पसंद करेंगे

तो, मैं आदर्श रूप से एक PostgreSQL शार्किंग समाधान से क्या अनुरोध करूंगा:

  1. हर उपयोगकर्ता के डेटा की कई प्रतियाँ स्वचालित रूप से (विभिन्न मशीनों पर) आसपास रखें। प्रति उपयोगकर्ता / शार्प (यदि पिछले मास्टर नीचे जाता है) प्रति मास्टर नोड को गतिशील रूप से स्विच करने में सक्षम हो।
  2. सर्वर नोड्स को जोड़ / हटाकर, गतिशील रूप से ऊपर / नीचे पैमाने पर सक्षम हो। ज्यादातर जैसे रयाक ही कर पाता है।
  3. यह जानने के लिए कि कौन सी नोड्स से बात करनी है और कब नहीं।

हाय लक्स, आपने आखिरकार इस समस्या को कैसे हल किया?
डिकला

कई डेटा स्टोर के साथ अनुप्रयोग स्तर विभाजन। वास्तव में एक गड़बड़ :(। बहुत दुख की बात है कि ऐसा कुछ मौजूद नहीं है ...
7

जवाबों:


5

Postgres-XL 2014 के अनुसार इसे हल करने का प्रयास कर रहा है। वे सीधे PostgreSQL के बड़े डेटा पर लक्ष्य कर रहे हैं, और उनके पास Stado ऑनबोर्ड के डेवलपर्स हैं।


यह सुपर दिलचस्प लग रहा है।
जॉन पॉवेल

और उसके बाद Postgres-XC: sourceforge.net/projects/postgres-xc
a_horse_with_no_name

4

मुझे लगता है, सबसे अच्छा विकल्प pgpool-II है । आपके पास 128 नोड तक और हो सकते हैं

  1. जटिल विभाजन और डेटा वितरण नियमों को सेटअप करना संभव है
  2. "ऑनलाइन प्रावधान" का समर्थन करें। नहीं लिखता पैमाने पर यह स्केलेबल पढ़ा जाता है
  3. निश्चित नहीं है, यदि संभव हो तो आउट-ऑफ-द-बॉक्स। शायद आपको LVS का उपयोग करने की आवश्यकता है

एक अन्य विकल्प स्टैडो हो सकता है

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