2009-12-07 14 views
6

पर अपलोड की गई छवियों का संस्करण नियंत्रण Storing Images in DB - Yea or Nay? पढ़ने के बाद मुझे लगता है कि फ़ाइल सिस्टम छवियों को संग्रहीत करने के लिए सही जगह है। लेकिन मैं जानना चाहता हूं कि आप अपने अलग-अलग वातावरण (dev/stage/prod) में अपलोड किए गए चित्रों के बैकअप/संस्करण नियंत्रण को कैसे प्रबंधित करते हैं और नेटवर्क लोड संतुलन के लिए कैसे?फाइल सिस्टम

डेटाबेस के साथ काम करते समय इन समस्याओं को संभालना बहुत आसान है। उत्पादन पर्यावरण से बैकअप बनाने और विकास पर्यावरण में डीबी बहाल करने के लिए।

अपलोड की गई फ़ाइलों के संस्करण नियंत्रण को संभालने के लिए उदाहरण गिट के उदाहरण के लिए आप क्या सोचते हैं?

उत्पादन पर्यावरण:

  • एक छवि वेब सर्वर पर किसी साझा फ़ोल्डर में अपलोड की गई है।

    • बाहर स्रोत कोड चेकों:
    • मेटा डेटा डेटाबेस
    • छवि स्वचालित रूप से एक Git भंडार काम पर

    डेवलपर को जोड़ा जाता है में संग्रहित है।

  • डेटाबेस को पुनर्स्थापित करने के लिए एक स्क्रिप्ट चलाता है।
  • नवीनतम छवियां प्राप्त करने के लिए एक स्क्रिप्ट चलाता है।

मुझे लगता है कि उपरोक्त समाधान डेवलपर के लिए बहुत आसान है, छवियां संस्करण नियंत्रण में होंगी और वातावरण एक-दूसरे से अलग किए जा सकते हैं।

+0

एक अच्छा विचार की तरह लगता है। – grenade

+0

"स्रोत कोड से पूरी तरह से विभाजित एक भंडार का उपयोग करें": यह सबमिशन दृष्टिकोण के साथ असंगत नहीं है: विचार स्रोत कोड रेपो के लिए छवियों रेपो की किसी दिए गए प्रतिबद्धता को संदर्भित करने के लिए रहता है, लेकिन बाद वाला (छवियां रेपो) अभी भी है एक "पूरी तरह से अलग" रेपो। – VonC

उत्तर

2

हमारे लिए, संस्करण नियंत्रण वितरण के रूप में उतना महत्वपूर्ण नहीं है। मेटा डेटा वेब व्यवस्थापक के माध्यम से जोड़ा जाता है और छवियों को व्यवस्थापक सर्वर पर गिरा दिया जाता है। रुपयेसीएनसी स्क्रिप्ट उन क्लस्टर को धक्का देती हैं जो प्रोड छवियों की सेवा करती हैं। Dev/test के लिए, हम सिर्फ prod मास्टर सर्वर से dev सर्वर पर rsync।

आरएसआईएनसी लोड संतुलन और वितरण के लिए बहुत अच्छा है। यदि आप व्यवस्थापक/मास्टर सर्वर के लिए गिट में उप हैं, तो आपके पास एक बहुत अच्छा समाधान है।

यदि आप बैकअप के साथ ठीक हैं जो बैकअप के समय फ़ाइल इतिहास को संरक्षित करता है (प्रत्येक संशोधन के साथ संस्करण नियंत्रण के विपरीत), तो इसका कुछ अनुकूलन मदद कर सकता है: Automated Snapshot-style backups with rsync

+0

प्रतिक्रिया के लिए धन्यवाद और मुझे लगता है कि वितरण और बैकअप संस्करण के मुकाबले हमारे लिए अधिक महत्वपूर्ण है। – orjan

2

यह काम कर सकता है, लेकिन मैं उन छवियों को एक गिट भंडार में संग्रहीत करूंगा जो स्रोत कोड के साथ submodule of the git repo होगा।
इस तरह, कोड और छवियों के बीच एक मजबूत संबंध मौजूद है, भले ही छवियां अपने स्वयं के रेपो में हों।
प्लस, यह git gc या git prune के साथ बड़ी संख्या में बाइनरी फ़ाइलों के साथ कम कुशल होने के साथ समस्याओं से बचाता है: यदि छवियां अपने स्वयं के रेपो में हैं, और उनमें से प्रत्येक के लिए कुछ भिन्नताओं के साथ, उस रेपो पर रखरखाव काफी हल्का है। जबकि स्रोत कोड रेपो खेल में सामान्य गिट रखरखाव कमांड के साथ, अधिक गतिशील रूप से विकसित हो सकता है।

+0

गिट के बारे में प्रतिक्रिया के लिए धन्यवाद।मेरा पहला विचार स्रोत कोड से पूरी तरह से विभाजित एक भंडार का उपयोग करना था, लेकिन submodules एक और विकल्प प्रतीत होता है। मुझे बहुत आश्वस्त लगता है कि यह संभव है कि यह देखने के लिए एक स्पाइक चलाने के लायक होगा। – orjan

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