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