PostgreSQL: एक तालिका स्वत: विभाजन - एल्गोरिदम, postgresql, डेटाबेस विभाजन

मेरे पास एक विशाल डेटाबेस है जिसमें संख्याओं (ए, बी) के जोड़े हैं, प्रत्येक 0 से 10,000 तक हैं और फ्लोट के रूप में संग्रहीत हैं।

उदाहरण के लिए,

(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...

चूंकि पोस्टग्रेएसक्यूएल टेबल जो इन जोड़ों को स्टोर करती है, काफी बड़ी हो गई है, मैंने फैसला किया है इसे सब-टेबल विरासत में विभाजित करें। मैं 100 ऐसी टेबल बनाने का इरादा रखता हूं, प्रत्येक 1000x1000 की एक श्रृंखला संग्रहीत करता है।

समस्या यह है कि ये संख्याएं आती हैंपास के नंबरों के बड़े हिस्से। इसका मतलब है कि भविष्य में, कुछ टेबल लगभग खाली हो जाएंगे और कुछ डेटाबेस का एक बहुत बड़ा हिस्सा रखेंगे। दुर्भाग्यवश, भविष्य के जोड़े का वितरण अभी तक अज्ञात है।

मैं स्वचालित रूप से एक रास्ता तलाश रहा हूँमेरी मेज को दोबारा विभाजित करें। इसका अर्थ यह है कि यदि एक निश्चित उप-वर्ग में जोड़े की एक विशिष्ट संख्या से अधिक होता है, तो इसे स्वचालित रूप से चार उप-उप तालिकाओं में विभाजित किया जाएगा, और इसी तरह।

मेरे प्रश्न हैं:

  • PostgreSQL 8.3 में रिकर्सिव विभाजन और विरासत संभव है? क्या इंडेक्स और क्वेरी प्लान इसे समझेंगे?
  • एक बार बड़े पैमाने पर बढ़ने के बाद सबटेबल को विभाजित करने का सबसे अच्छा तरीका क्या है? मुझे यह इंगित करना चाहिए कि यह एक लाइव डेटाबेस नहीं है, इसलिए हर सप्ताह कुछ घंटों का डाउनटाइम पूरी तरह से स्वीकार्य है।
  • अद्यतन करें: मैं विरासत में टेबल को विभाजित कर सकता हूंचार टेबल जो मूल को प्रतिस्थापित करेंगे (यानी, सीधे मास्टर टेबल से प्राप्त होते हैं)। मैं एक से अधिक स्तर की विरासत से बचने से बचूंगा, लेकिन हजारों लोग हैं जो टेबल को सीधे एक टेबल से विरासत में लेते हैं। इस दृष्टिकोण के पेशेवरों और विपक्ष क्या हैं?

अग्रिम में धन्यवाद,

एडम

उत्तर:

जवाब के लिए 2 № 1

सबसे पहले, यदि टेबल पहले से बड़े हैं, तो क्या आप वाकई भविष्य के अनुमानों के लिए विश्वसनीय नहीं हैं? क्या आज एक हिस्टोग्राम बेकार होगा?

मुझे लगता है कि अगर रिकर्सिव विरासत संभव है, तो यह रखरखाव और योजनाकार दोनों के लिए मॉडल के लिए अनावश्यक जटिलता को जोड़ता है।

जब आप इसे 100 टेबल पर विभाजित करते हैं, तो मुझे उम्मीद है कि आप विभाजन उत्पन्न करेंगे और नियम / ट्रिगर्स को स्वचालित रूप से अपडेट / अपडेट करेंगे।

डेटा की प्रतिलिपि बनाने का सबसे आसान तरीका हो सकता हैएक विभाजन को अस्थायी तालिका में छोड़ दें, इसे छोड़ दें, इसके स्थान पर 4 विभाजन बनाएं और डेटा को कॉपी करें। मुझे नहीं लगता कि यह ऑपरेशन रिकर्सिव विभाजन से अधिक कठिन होगा।

आप PostgreSQL मेलिंग सूचियों पर लोगों से भी पूछ सकते हैं। मूल डेवलपर्स समेत वे सबसे अच्छे विशेषज्ञ हैं जिन्हें आप संभवतः प्राप्त कर सकते हैं।


संबंधित सवाल
सबसे लोकप्रिय