2010-08-06 15 views
9

अभी मैं Django परिनियोजन के लिए गिट का उपयोग कर रहा हूं जो मुझे संतुष्ट लगता है। मेरी एकमात्र समस्या अभी भी डेटाबेस में डेटा को सही तरीके से कैसे संभालना है। उदाहरण के लिए। मुझे स्थानीय रूप से प्रोड्यूशन साइट से आने वाले डेटा को संपादित करने और उत्पादन साइट पर डेटा वापस रखने की आवश्यकता है (कृपया ध्यान दें कि मैं डेटा परिवर्तनों के बारे में बात कर रहा हूं और स्कीमा माइग्रेशन नहीं!)। मुझे लगता है कि वर्कफ़्लो निम्न प्रकार की तरह होना चाहिए: उत्पादन साइट पर डेटा डंप करें> डेटा डाउनलोड करें> डीबी में डेटा लोड करें> स्थानीय रूप से परिवर्तन करें> डेटा डंप करें> डेटा के लिए भिन्न बनाएं> अपलोड करें & उत्पादन साइट पर परिवर्तन लागू करें।Django परिनियोजन: डेटाबेस में डेटा को संभालना

मेरे लिए महत्वपूर्ण हो सकता है कि यह भी मौजूदा डेटाबेस पंक्तियाँ, विलोपन आदि में परिवर्तन के लिए काम करता है ...

तो अगर मुझे लगता है कि अपने दम पर के साथ प्रयोग शुरू: 1. विल से किसी के साथ इस काम डेटा डंप प्रारूप प्रदान करता है? 2. कोई और ऐसा काम कर रहा है, हो सकता है कि पहले से तैयार होने के लिए कुछ (कपड़े) स्क्रिप्ट समाधान हो?

+2

क्या आपके पास एक ही समय में सर्वर पर स्थानीय रूप से संशोधित डेटा को बदलने का मौका है? क्या आप एक इंटरफ़ेस बना सकते हैं जो आपको सीधे उत्पादन सर्वर पर डेटा संपादित करने की अनुमति देता है? –

उत्तर

6

जिन टेबलों को मैं डंप/बदल/पुनर्स्थापित करना चाहता हूं वे काफी छोटे हैं और वे केवल सार्वजनिक इंटरफ़ेस के माध्यम से पढ़े जाते हैं। निम्नलिखित दृष्टिकोण का उपयोग किया जाता है:

  1. डेटा सर्वर पर .manage.py dumpdata कमांड के साथ डंप किया गया है।
  2. फिर परिणाम फ़ाइल सर्वर पर वीसीएस के लिए प्रतिबद्ध है।
  3. मैं परिवर्तन खींचता हूं और निष्पादित करता हूं ./manage.py loaddata।
  4. परिवर्तन किए जाने के बाद ./manage dumpdata को स्थानीय रूप से निष्पादित किया जाता है।
  5. परिणाम फ़ाइल VCS के लिए प्रतिबद्ध है और सर्वर से पीछे धकेल दिया है
  6. ./manage loaddata आदेश सर्वर पर निष्पादित किया जाता है

यह कपड़ा के साथ स्वचालित किया जा सकता है, जैसे

1 + 2 + 3 = fab dump_data:cities, 4 + 5 + 6 = fab push_data:cities

डीसीएस द्वारा आंतरिक रूप से डिफ का उत्पादन किया जाता है। यह दृष्टिकोण सबकुछ के लिए काम नहीं करेगा लेकिन मुझे सरल मामलों के लिए यह उपयोगी लगता है।

+0

तो आप किसी भी मुद्दे के बिना वीसीएस के साथ डंप किए गए (JSON) डेटा को विलय कर रहे हैं? मैं एक ऐसे दृष्टिकोण की तलाश में हूं जो मुझे उदाहरण के लिए सक्षम बनाता है। उस समय सर्वर पर डेटा बदल दिया जब उत्पादन प्रणाली पर भी परिवर्तन किया गया? मुझे लगता है कि जेएसओएन डेटा विलय करने के सिद्धांत में काम करना चाहिए - अगर कोई इसे इस तरह से संभाला है तो मैं उत्सुक हूं! –

+0

मैंने यह कोशिश नहीं की क्योंकि मेरी टेबल शायद ही कभी बदलती है। लेकिन यह वास्तव में काम कर सकता है: स्थानीय परिवर्तनों को धक्का देने से पहले डंप और प्रतिबद्ध करें और खींचें और फिर से विलय करें। –

2

1) मैं समझता हूं कि आप स्कीमा माइग्रेशन के बारे में बात नहीं कर रहे हैं। हालांकि डेटा माइग्रेशन जैसी कोई चीज़ है। मैंने आपके द्वारा वर्णित उत्पादन डेटा में परिवर्तन करने के लिए South का उपयोग किया है। इसकी जांच करने के लिए आपके समय के लायक हो सकता है।

2) आईएमएचओ एक अंतर लागू करना डेटाबेस डंप संशोधित करने के बारे में जाने का सबसे अच्छा तरीका नहीं है। डिफ और विलय स्रोत कोड/टेक्स्ट पर डेटाबेस डंप के मुकाबले अधिक लागू होते हैं। उस ने कहा कि मुझे यह जानकर उत्सुकता है कि क्या किसी ने डेटाबेस डंप पर सफलतापूर्वक diff/पैच/विलय किया है।

+0

1) हां, मैं अब तक स्कीमा माइग्रेशन के लिए दक्षिण का उपयोग कर रहा हूं, इसे डेटा के लिए केवल थोड़ा ही अवांछित पाया गया। 2) ठीक है, यह बिल्कुल मेरी बात है, कभी कोशिश नहीं की लेकिन उत्सुक होने पर अगर एक अंतर जेसन/एक्सएमएल के साथ काम करेगा जो भी डंप! (निश्चित रूप से एसक्यूएल के साथ नहीं)। और "diff" न केवल यूनिक्स भावना में :) –

+0

2) मेरा मानना ​​है कि एक्सएमएल diffs और ऐसे के लिए उपकरण उपलब्ध हैं। हालांकि कभी उनका इस्तेमाल नहीं किया। अगर आपको कुछ ऐसा लगता है जो यहां काम करता है तो यहां पोस्ट करें! –

1

यदि आपका डेटाबेस बैकएंड SQL सर्वर है, तो Red-Gate में एक डेटा तुलना टूल है जिसका आप उपयोग कर सकते हैं। सुनिश्चित नहीं है कि एसक्यूएल सर्वर दुनिया के बाहर avaiobale क्या उपकरण हैं।

2

यदि आप डाउनलोड> संशोधित> संपूर्ण डंप अपलोड करते हैं तो आपको डेटा हानि के लिए तैयार रहना होगा। संशोधित डेटा डाउनलोड करने, संशोधित करने या अपलोड करने के दौरान उत्पादन पर बनाया गया/संशोधित कोई भी डेटा खो जाएगा।

सर्वश्रेष्ठ अभ्यास से बचने के लिए कि आप उत्पादन डेटाबेस पर डेटा को संशोधित कर सकते हैं अगर होगा:

  1. स्थानीय संशोधन के आधार पर SQL स्क्रिप्ट बना सकते हैं और उत्पादन डेटाबेस पर निष्पादित,
  2. डाटा परिवर्तन से निपटने के दृश्य बनाने के और यह उत्पादन वेबसर्वर

पर निष्पादित या, यदि आप उत्पादन डेटाबेस पर डेटा को संशोधित नहीं कर सकते हैं:

  • बनाने डंप, डाउनलोड और स्थानीय स्तर पर यह लोड,
  • स्थानीय रूप से डेटा को संशोधित,
  • स्थानीय डंप बनाने के लिए,
  • तुलना स्थानीय डंप और साथ दूरस्थ डंप बनाने डंप केवल संशोधित युक्त/रिकॉर्ड कहा,
  • यह और लोड अपलोड

इस मामले में अपलोड और लोड हिस्सा बहुत तेजी से होगा, लेकिन आप चाहते हटाना अन्य तरीकों को संभालना होगा।

संबंधित मुद्दे