कैसे सबसे "लोकप्रिय" (MySQL, Postgres ...) डेटाबेस सिस्टम लाइव उत्पादन डेटाबेस (जैसे जोड़ने, हटाने या कोलम के प्रकार को बदलने) पर तालिकाओं को बदलने का काम करता है?
मुझे पता है कि सही तरीका यह है कि सब कुछ शेड्यूल डाउनटाइम पर बैकअप करें और फिर बदलाव करें।
लेकिन ... क्या कोई भी मौजूदा डेटाबेस सिस्टम इन चीजों को "ऑन-लाइन" बिना किसी चीज को रोकने का समर्थन करता है? (शायद उन प्रश्नों में देरी करना जो एक स्तंभ को संदर्भित करते हैं जो अभी बदला जा रहा है / हटा दिया गया है)
और क्या होता है जब मैं सिर्फ ALTER TABLE...
एक जीवित डेटाबेस पर करता हूं ? क्या ऐसा होने पर सब कुछ रुक जाता है? क्या डेटा दूषित हो सकता है? आदि।
फिर से, मैं ज्यादातर पोस्टग्रेज या MySQL का जिक्र कर रहा हूं क्योंकि ये वही हैं जिनका मैं सामना करता हूं।
(और, हाँ, कभी भी मुझे ऐसा करने से पहले मुझे यह करना पड़ा "यह सही तरीका है", चीजों को बैक अप करना, डाउनटाइन को शेड्यूल करना आदि ... लेकिन मैं यह जानना चाहता हूं कि क्या यह संभव है और इस तरह से "त्वरित"। गंदा "या यदि कोई DB प्रणाली है जो वास्तव में" त्वरित, लाइव और गंदे "स्कीमा परिवर्तन के लिए समर्थन करती है)
किसी ने सुझाव दिया फेसबुक स्क्रिप्ट से MySQL के लिए ऑनलाइन स्कीमा बदलें (एक ट्यूटोरियल के साथ यहाँ और स्रोत यहाँ ) ... एक अच्छा तरीका "hacky" यह करने के लिए तरीके का एक सेट स्वचालित करने के लिए की तरह लगता है ... क्या कभी किसी ने यह प्रयोग किया जाता है कुछ उत्पादन जैसा दिखता है?
pg_reorg
अधिक कठिन परिदृश्यों के साथ मदद का उपयोग ।