आप बहुत सारी धारणाएं बनाते दिख रहे हैं, संभवतः एसवीएन और सीवीएस के साथ आपके अनुभव के आधार पर।
Git और Mercurial मूल रूप से SVN और CVS जैसे हैं
Git और CVS की तुलना करना iPad और Atari की तुलना करने जैसा है। सीवीएस वापस बनाया गया था जब डिनोउर पृथ्वी पर घूमते थे । तोड़फोड़ मूल रूप से सीवीएस का एक उन्नत संस्करण है। यह मानते हुए कि आधुनिक संस्करण नियंत्रण प्रणाली जैसे कि git और Mercurial उनके जैसे काम बहुत कम समझ में आता है।
एकल-उद्देश्य डेटाबेस की तुलना में एक रिलेशनल डेटाबेस अधिक कुशल है
क्यूं कर? संबंधपरक डेटाबेस वास्तव में जटिल हैं, और एकल-उद्देश्य डेटाबेस के रूप में कुशल नहीं हो सकते हैं। मेरे सिर के ऊपर से कुछ अंतर:
- संस्करण नियंत्रण प्रणालियों को जटिल लॉकिंग की आवश्यकता नहीं है, क्योंकि आप वैसे भी एक ही समय में कई कमिट नहीं कर सकते हैं।
- डिस्ट्रिब्यूटेड वर्जन कंट्रोल सिस्टम बहुत ही स्पेसफुल होने की जरूरत है, क्योंकि लोकल डेटाबेस रेपो की पूरी कॉपी है।
- संस्करण नियंत्रण प्रणाली को केवल कुछ विशिष्ट तरीकों से डेटा देखने की जरूरत है (लेखक द्वारा, संशोधन आईडी, कभी-कभी पूर्ण-पाठ खोज)। अपना स्वयं का डेटाबेस बनाना जो लेखक / संशोधन आईडी खोजों को संभाल सकता है, तुच्छ है और पूर्ण पाठ खोज किसी भी रिलेशनल डेटाबेस में बहुत तेज़ नहीं हैं जो मैंने कोशिश की हैं।
- संस्करण नियंत्रण प्रणालियों को कई प्लेटफार्मों पर काम करने की आवश्यकता होती है। यह एक डेटाबेस का उपयोग करना कठिन बनाता है जिसे सेवा के रूप में स्थापित करने और चलाने की आवश्यकता होती है (जैसे MySQL या PostgreSQL)।
- आपके स्थानीय मशीन पर संस्करण नियंत्रण प्रणाली को केवल तभी चलाने की आवश्यकता होती है जब आप कुछ कर रहे हों (जैसे कमिट)। MySQL की तरह एक सेवा को छोड़ना हर समय जब आप एक कमिट करना चाहते हैं तो बेकार है।
- अधिकांश भाग के लिए, संस्करण नियंत्रण प्रणाली कभी भी इतिहास को हटाना नहीं चाहती है, बस इसे संलग्न करें। इससे विभिन्न अनुकूलन हो सकते हैं, और अखंडता की रक्षा के विभिन्न तरीके हो सकते हैं।
रिलेशनल डेटाबेस सुरक्षित हैं
फिर, क्यों? आपको लगता है कि क्योंकि डेटा फ़ाइलों में संग्रहित है, संस्करण नियंत्रण प्रणाली जैसे git और Mercurial में परमाणु आवागमन नहीं है , लेकिन वे ऐसा करते हैं। रिलेशनल डेटाबेस भी फाइल के रूप में अपने डेटाबेस को स्टोर करते हैं। यहाँ यह उल्लेखनीय है कि CVS परमाणु आवागमन नहीं करता है, लेकिन इसकी संभावना है क्योंकि यह अंधेरे युग से है, इसलिए नहीं कि वे संबंधपरक डेटाबेस का उपयोग नहीं करते हैं।
डेटाबेस में एक बार डेटा को भ्रष्टाचार से बचाने का मुद्दा भी है, और फिर से उत्तर भी यही है। यदि फ़ाइल सिस्टम दूषित है, तो इससे कोई फर्क नहीं पड़ता कि आप किस डेटाबेस का उपयोग कर रहे हैं। यदि फ़ाइल सिस्टम दूषित नहीं है, तो आपका डेटाबेस इंजन टूट सकता है। मैं यह नहीं देखता कि एक संस्करण नियंत्रण डेटाबेस एक रिलेशनल डेटाबेस की तुलना में अधिक क्यों होगा।
मैं तर्क दूंगा कि वितरित नियंत्रण प्रणाली (जैसे git और Mercurial) आपके डेटाबेस को केंद्रीकृत संस्करण नियंत्रण से बचाने के लिए बेहतर हैं, क्योंकि आप किसी भी क्लोन से पूरे रेपो को पुनर्स्थापित कर सकते हैं। इसलिए, यदि आपका केंद्रीय सर्वर अनायास combusts, अपने बैकअप के सभी के साथ, आप इसे चलाकर बहाल कर सकते हैं git init
, तो नए सर्वर पर git push
से किसी भी डेवलपर के मशीन ।
पहिए को फिर से खराब करना बुरा है
सिर्फ इसलिए कि आप किसी भी भंडारण समस्या के लिए एक रिलेशनल डेटाबेस का उपयोग कर सकते हैं इसका मतलब यह नहीं है कि आपको चाहिए । आप रिलेशनल डेटाबेस के बजाय कॉन्फ़िगरेशन फ़ाइलों का उपयोग क्यों करते हैं? जब आप किसी रिलेशनल डेटाबेस में डेटा स्टोर कर सकते हैं तो फाइल सिस्टम पर छवियों को क्यों स्टोर करें? जब आप एक रिलेशनल डेटाबेस में यह सब स्टोर कर सकते हैं तो अपना कोड फाइलसिस्टम पर क्यों रखें?
"यदि आपके पास एक हथौड़ा है, तो सब कुछ एक नाखून जैसा दिखता है।"
तथ्य यह भी है कि जब भी यह सुविधाजनक होता है, तो ओपन-सोर्स प्रोजेक्ट्स व्हील को फिर से मजबूत करने का जोखिम उठा सकते हैं , क्योंकि आपके पास उसी प्रकार के संसाधन की कमी नहीं है जो वाणिज्यिक प्रोजेक्ट करते हैं। यदि आपके पास एक स्वयंसेवक है जो डेटाबेस लिखने में एक विशेषज्ञ है, तो उनका उपयोग क्यों न करें?
क्यों हम संशोधन नियंत्रण प्रणाली के लेखकों पर भरोसा करेंगे यह जानने के लिए कि वे क्या कर रहे हैं .. मैं अन्य वीसीएस के लिए नहीं बोल सकता, लेकिन मुझे पूरा विश्वास है कि लिनुस टॉर्वाल्ड फाइल सिस्टम को समझते हैं ।
कुछ वाणिज्यिक संस्करण नियंत्रण प्रणाली एक संबंधपरक डेटाबेस का उपयोग क्यों करते हैं?
निम्नलिखित में से कुछ के संयोजन की संभावना:
- कुछ डेवलपर्स डेटाबेस लिखना नहीं चाहते हैं ।
- वाणिज्यिक संस्करण नियंत्रण प्रणालियों के डेवलपर्स में समय और संसाधन की कमी होती है, इसलिए जब वे पहले से ही कुछ चाहते हैं, तो वे एक डेटाबेस लिखने का जोखिम नहीं उठा सकते हैं। इसके अलावा, डेवलपर्स महंगे हैं, और डेटाबेस डेवलपर्स (जैसा कि, जो लोग डेटाबेस लिखते हैं) शायद अधिक महंगे हैं, क्योंकि ज्यादातर लोगों के पास उस तरह का अनुभव नहीं है।
- व्यावसायिक संस्करण नियंत्रण प्रणालियों के उपयोगकर्ताओं को संबंध स्थापित करने और चलाने के ओवरहेड के बारे में परवाह करने की संभावना कम होती है, क्योंकि उनके पास पहले से ही एक है।
- वाणिज्यिक संस्करण नियंत्रण प्रणाली के उपयोगकर्ता अपने पुनरीक्षण डेटा का समर्थन करने के लिए एक रिलेशनल डेटाबेस चाहते हैं , क्योंकि यह उनकी प्रक्रियाओं को बेहतर तरीके से एकीकृत कर सकता है (उदाहरण के लिए बैकअप)।