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