2011-12-12 9 views
15

हाल ही में कार्यालय में हम बड़ी फ़ाइलों को हमारे टीएफएस भंडार में रखने के बारे में बात कर रहे हैं। फाइलें स्वयं एक्सएमएल हैं, आमतौर पर आकार में 100-200 एमबी, और कभी-कभी 1 जीबी जितनी बड़ी होती हैं। हम उन्हें स्वचालित परीक्षण के लिए डेटा के रूप में उपयोग करते हैं और वे अधिकतर स्थैतिक होते हैं (हर साल एक मामूली चिमटा मिलता है)। वैसे भी, एक धारणा है कि इस तरह की फाइलें भंडार में डालकर नो-नो है क्योंकि वे "बड़े" हैं और इससे चीजें "धीमी" (मूल चेक-इन/आउट के बाहर) बन जाएंगी लेकिन हम वास्तव में नहीं इसे वापस करने के लिए कोई सबूत है।स्रोत नियंत्रण में बड़ी फ़ाइलें (टीएफएस)

तो मेरा सवाल यह है कि बड़ी स्थिर फ़ाइलों को स्रोत कोड भंडार में टीएफएस (या एसवीएन, गिट इत्यादि) जैसे स्रोत कोड में डालने के पेशेवर/विपक्ष/प्रभाव क्या हैं? क्या यह ठीक है? क्या यह "सर्वर भरें" या कुछ और गंभीर परिणाम होगा?

उत्तर

27

टीएल; डी: टीएफएस बड़ी फाइलों को गर्वपूर्वक संभालने के लिए डिज़ाइन किया गया है। फ़ाइलों को अपलोड/डाउनलोड करने के लिए आपको सबसे बड़ी बाधा का सामना करना होगा नेटवर्क बैंडविड्थ। दूसरा मुद्दा सर्वर पर स्टोरेज स्पेस का है। मान लीजिए कि आपने इन दो मुद्दों पर विचार किया है, आपको कोई अन्य समस्या नहीं होनी चाहिए।

नेटवर्क बैंडविड्थ: फाइलों की जांच करने या प्राप्त करने में बहुत कम ओवरहेड है, यह एक सामान्य HTTP अपलोड या डाउनलोड के रूप में तेज़ होना चाहिए। यदि आपके क्लाइंट सर्वर से दूरस्थ हैं, नेटवर्क-वार, डाउनलोड को तेज करने के लिए उन्हें अपने स्थानीय नेटवर्क पर TFS स्रोत नियंत्रण प्रॉक्सी होने से लाभ हो सकता है।

ध्यान दें कि कुछ संस्करण नियंत्रण प्रणालियों के विपरीत, टीएफएस नई सामग्री अपलोड या डाउनलोड करते समय डेल्टा की गणना और संचार नहीं करता है। ऐसा कहने के लिए, यदि किसी ग्राहक के पास बड़ी टेक्स्ट फ़ाइल का संशोधन 4 था, और संशोधन 5 ने अंत में कुछ पंक्तियां जोड़ दी थीं, तो कुछ संस्करण नियंत्रण उपकरण इस अनुभव को केवल बदली गई लाइनों को भेजने के लिए अनुकूलित करते हैं। टीएफएस यह अनुकूलन नहीं करता है, इसलिए यदि आपकी फ़ाइलें अक्सर बदलती हैं, तो ग्राहकों को प्रत्येक बार फ़ाइल की पूरी तरह से डाउनलोड करने की आवश्यकता होगी।

सर्वर संग्रहण: सर्वर पर डिस्क स्थान काफी सरल है - आपको फ़ाइलों को पकड़ने के लिए पर्याप्त स्थान की आवश्यकता होगी, इसके अलावा थोड़ा ऊपर की ओर है। टीएफएस सिर्फ धीमा नहीं होगा क्योंकि आपके भंडार में बड़ी फाइलें हैं।

यदि इन फ़ाइलों को अक्सर संशोधित किया जाता है, तो आपको संशोधन द्वारा उपयोग की जाने वाली डिस्क स्थान के लिए भी खाते की आवश्यकता होगी। टीएफएस फाइल संशोधन के बीच "डेल्टा" स्टोर करता है - यानी, दो संस्करणों के बीच एक बाइनरी अंतर है। इसलिए यदि फ़ाइल की सामग्री पाठ फ़ाइलों के साथ सामान्य उपयोग मामले में संशोधन के बीच न्यूनतम रूप से बदलती है, तो भंडारण लागत सस्ती होनी चाहिए। हालांकि, यदि सामग्रियों की संपूर्णता छवियों या डीएलएल जैसी बाइनरी फ़ाइलों के साथ सामान्य होगी, तो आपको प्रत्येक संशोधन को स्टोर करने के लिए पर्याप्त डिस्क स्थान की आवश्यकता होगी। (बेशक, आप उस स्थान को वापस पाने के लिए destroy पिछले संशोधन कर सकते हैं।)

टीएफएस में डेल्टा पर एक नोट: चेक-इन समय पर ओवरहेड को कम करने के लिए, संशोधन के बीच डेल्टा तुरंत गणना नहीं की जाती है, एक पृष्ठभूमि है " Deltafication "नौकरी जो अंतरिक्ष ट्रिम करने के लिए डेल्टा की गणना करने के लिए रात में चलाता है।उस बिंदु तक, प्रत्येक संशोधन डेटाबेस में पूरी तरह से संग्रहीत किया जाता है। इसलिए यदि आपके पास प्रतिदिन बहुत सारे संशोधन होने के साथ बहुत बड़ी टेक्स्ट फ़ाइल है, तो आपकी डिस्क स्पेस आवश्यकताओं को इसे ध्यान में रखना होगा।

क्लाइंट भंडारण: ग्राहक इन फ़ाइलों को भी शामिल करने के लिए (। हालांकि केवल संशोधन है कि वे डाउनलोड किया है पर) यह आपके कार्यक्षेत्र मैपिंग में कम किया जा सकता पर्याप्त डिस्क स्थान की आवश्यकता होगी ऐसी है कि बड़ी फ़ाइलों को आच्छादित कर रहे हैं (या अन्यथा आपके कार्यक्षेत्र में शामिल नहीं है) यदि उनकी आवश्यकता नहीं है।

चेतावनी: हो रही ऐतिहासिक संस्करण: आप पाते हैं अपने आप को बड़ी फ़ाइलों के ऐतिहासिक संस्करणों का अनुरोध अक्सर (उदाहरण के लिए: मैं एक आईएसओ छवि सात changesets पहले चाहते हैं), तो आप सर्वर डेल्टा श्रृंखला लागू करने जा रहे हैं उस संशोधन पर वापस जाने के लिए। यदि आपके पास एक साथ कई ग्राहक हैं, तो यह आपकी याददाश्त कर सकता है।

+0

आह, यह बहुत गुओ है, वास्तव में पूरी जानकारी है। मुझे लगता है कि टीएफएस सबसे अच्छा विकल्प होगा क्योंकि अब हम जो भी कर रहे हैं वह नेटवर्क नेटवर्क से फ़ाइलों तक लगातार पहुंच रहा है जो उपर्युक्त बैंडविड्थ कारणों के कारण आगे बढ़ता है। –

+7

जोड़ने के लिए एक चीज, 16 एमबी से ऊपर की फ़ाइलों के लिए afaik deltification अक्षम है (जो आपके मामले में सच है)। मुझे http://blogs.msdn.com/b/billheys/archive/2011/05/05/how-tfs-stores-files-and-calculated-deltas-on-versioned-files.aspx – MichalMa

+0

पर इसके बारे में जानकारी मिली @ मिचलमा: अच्छा मुद्दा, मैं इसके बारे में पूरी तरह से भूल गया था। –

3

यदि वे फ़ाइलें लगातार बदल रही थीं & उनके डेल्टा बड़े थे, तो अंततः मैं समग्र टीएफएस प्रदर्शन में जुर्माना की उम्मीद करता।

आप स्पष्ट रूप से बताते हैं कि यह मामला नहीं है, इसलिए, आपके SQL सर्वर में स्टोरेज रखने की क्षमता है, मुझे विश्वास है कि आप बिना किसी प्रभाव के आगे बढ़ने में सक्षम होना चाहिए।

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

+1

ओपी ने निर्दिष्ट किया कि वह इन विचारों के कारणों को नष्ट करने की कोशिश कर रहा है - क्या आप यह समझा सकते हैं कि आप प्रदर्शन दंड की अपेक्षा क्यों करेंगे? – bwerks

2

आपके पास सबसे बड़ी समस्या (असुविधा) आपको इन सभी फ़ाइलों को अपने सभी कार्यक्षेत्रों में डाउनलोड करना होगा, या उन्हें मानचित्रित करना होगा। इसे आसान बनाने के लिए उन्हें एक अलग टीम प्रोजेक्ट में डालने पर विचार करें (जब तक कि आप उन्हें शाखाओं में शामिल नहीं करना चाहते हैं, इस मामले में मैं एक टीम प्रोजेक्ट में सबकुछ रखने का दुरुपयोग करता हूं)

यदि आपके पास XML प्रारूप का नियंत्रण है तो भी उन्हें छोटे बनाने के लिए कुछ tweaks पर विचार करें। इससे स्टोर/ऑपरेशन प्राप्त करने और गति को लोड करने में सुधार होगा ... तत्व को छोटा करें और गुणों को नाम दें, फ़्लोटिंग पॉइंट नंबर आदि के लिए आउटपुट करने वाले दशमलव स्थानों की संख्या को कम करें। आपको खतरे की सरल योजनाएं मिलेंगी जैसे कि कई मेगाबाइट्स जीबी आकार की फ़ाइलों के आकार से बाहर, और फ़ाइलों को त्वरित रूप से नए प्रारूप में बदलने के लिए त्वरित xslt ट्रांसफॉर्म या कोड को दस्तक देना आसान है।

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