2011-05-24 6 views
5

Django n00b यहां। मैं सोच रहा था, क्या django फिक्स्चर डेटाबेस को बैकअप लेने के बजाय, मेरे डेटा का बैकअप लेने का एक विश्वसनीय तरीका है? क्या होगा यदि मेरा डेटाबेस बहुत बड़ा है?क्या django फिक्स्चर एक विश्वसनीय डेटाबेस बैकअप हैं?

धन्यवाद।

उत्तर

4

फिक्स्चर का उद्देश्य डेटा बनाने का इरादा है जिसे एक नया मॉडल/संपूर्ण ऐप जोड़ा जाने के बाद डेटाबेस में पॉप्युलेट किया जाना चाहिए। यह वास्तव में विकास से उत्पादन तक आपके कोड की अपरिहार्य गति के लिए है, जहां आपको डेटाबेस को सिंक करने के तुरंत बाद उपलब्ध उसी डेटा की आवश्यकता होगी।

अब, इस फ़ंक्शन के आधार पर, संभवतः आप मूल रूप से डेटाबेस बैकअप से युक्त आधार स्थिरता बना सकते हैं, लेकिन वास्तव में यह नहीं है कि फिक्स्चर का उद्देश्य क्या है।

आपकी सबसे अच्छी शर्त क्रॉन या कुछ अन्य शेड्यूलिंग ऐप के उपयोग के माध्यम से अपने डेटाबेस के निरंतर और लगातार SQL बैकअप रखने के मानक अभ्यास का पालन करना है।

+0

और दक्षिण आपके द्वारा उपयोग किए जाने वाले उपयोग के मामले में भी फिक्स्चर की आवश्यकता को दूर करता है ('syncdb' के बाद डीबी को दोहराया जाता है)। – hobs

0

फिक्स्चर का उपयोग करना आपके डीबी बैकअप के रूप में तब तक काम करेगा जब तक आपका डीबी छोटा न हो। फिक्स्चर के साथ समस्या यह है कि उन्हें डंप और लोड करने में काफी समय लगता है। यदि आपके मॉडल और ऐप्स प्रवाह में हैं, तो इसका मतलब है कि प्रत्येक सिंकडब को आपके सभी ऐप्स के लिए अपना डेटा पुनः लोड करना होगा। आप उन्हें फिक्स्चर निर्देशिका में नहीं डालकर इससे बच सकते हैं। और फिर आपको चुनिंदा (मैन्युअल रूप से) फिक्स्चर लोड करना होगा जब आप अपने मॉडल बदलते हैं। इसलिए बड़े डेटाबेस या परियोजनाओं के लिए जहां आपके मॉडल गहन रूप से बदल रहे हैं, आपके माइग्रेशन को प्रबंधित करने और डेटाबेस रीलोड से बचने के लिए south का उपयोग करना बेहतर है, चाहे आप अपने बैकअप को फिक्स्चर या एसक्यूएल डंप में बनाए रखें या नहीं।

और Django में 1.4 datadump और dataload भी संभव है जब तक कि अपने मॉडल (टेबल्स) से प्रत्येक के लिए डेटा अपनी संपूर्णता है, जो आप शायद इसका मतलब है वैसे भी अपने डाटाबेस के लिए स्थायी भंडारण का उपयोग नहीं किया जाएगा में रैम में फिट सकता नहीं थे ।

उदाहरण के लिए, यदि आप क्रिस पैट के दृष्टिकोण का उपयोग करते हैं और आपका डीबी पोस्टग्रेज़ है, तो मेरे लिए pg_dumpall 6 जीबी डेटाबेस पर 30 सेकंड से भी कम समय लेता है। datadump आपके पास पर्याप्त RAM नहीं है तो घंटों के लिए स्वैप के माध्यम से फेंक देगा।