2011-06-07 13 views
19

हम अक्सर एक परियोजना पर काम कर रहे हैं जहां हमें एक बड़ा डेटा सेट सौंप दिया गया है (कहें, कुछ फाइलें जो 1 जीबी हैं), और इसका विश्लेषण करने के लिए कोड लिख रही हैं।गिट + एक बड़ा डेटा सेट?

सभी विश्लेषण कोड गिट में हैं, इसलिए हर कोई हमारे केंद्रीय भंडार में और बाहर परिवर्तनों की जांच कर सकता है। लेकिन डेटा सेट के साथ क्या करना है कि कोड के साथ काम कर रहा है?

  • उपयोगकर्ताओं को पहले भंडार क्लोन है, डेटा के साथ आना चाहिए:

    मैं भंडार में डेटा चाहते हैं।

  • डेटा 100% केवल पढ़ने योग्य नहीं है; अब और फिर एक डेटा बिंदु सही किया गया है, या एक मामूली स्वरूपण परिवर्तन होता है। यदि डेटा में मामूली परिवर्तन होते हैं, तो उपयोगकर्ताओं को अगले चेकआउट पर अधिसूचित किया जाना चाहिए।

हालांकि, मैं Git भंडार में डेटा नहीं करना चाहती:

  • Git एक अतिरिक्त प्रतिलिपि (ताकि मैं अपने घर निर्देशिका में दो संस्करण) डेटा मैं के कुछ जीबी खींच लेंगे क्लोनिंग पहले से ही है। मैं या तो इसे एक निश्चित स्थान पर रखना चाहता हूं [एक नियम निर्धारित करें कि डेटा ~/डेटा में होना चाहिए] या आवश्यकतानुसार लिंक जोड़ें।
  • भंडार में डेटा के साथ, अंगूठे ड्राइव की प्रतिलिपि असंभव हो सकती है, जो परेशान है जब मैं सिर्फ सौ पंक्तियों पर काम कर रहा हूं।
  • यदि कोई गलत डेटा बिंदु तय किया गया है, तो मैं कभी भी गलत संस्करण को फिर से देखने वाला नहीं हूं। डेटा सेट में परिवर्तन को सादा पाठ फ़ाइल में या उस व्यक्ति द्वारा ट्रैक किया जा सकता है जिसने डेटा प्रदान किया है (या बिल्कुल नहीं)।

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

उत्तर

14

अपने स्रोत कोड से अपनी विशाल फ़ाइलों को अलग करने के लिए submodules का उपयोग करें। कि यहां पर अधिक:

http://git-scm.com/book/en/v2/Git-Tools-Submodules

उदाहरण पुस्तकालयों के बारे में बात है, लेकिन इस परीक्षण, चित्र, मूवी के लिए डेटा के नमूने जैसे बड़े फूला हुआ बातों के लिए काम करता है, आदि

आप जबकि उड़ान भरने के लिए सक्षम होना चाहिए विकासशील, केवल यहां और वहां रुकने पर आपको विशाल डेटा के नए संस्करणों को देखने की आवश्यकता है।

कभी-कभी ऐसी चीजों में परिवर्तनों को ट्रैक करते समय भी यह मूल्यवान नहीं होता है।

डेटा के अधिक क्लोन प्राप्त करने के साथ अपने मुद्दों को हल करने के लिए: यदि आपका गिट कार्यान्वयन आपके ओएस पर हार्ड लिंक का समर्थन करता है, तो यह एक हवा होनी चाहिए।

आपके विशाल डेटासेट की प्रकृति भी खेल में है। यदि आप इसमें से कुछ बदलते हैं, तो क्या आप लाखों लोगों के सेट में विशाल ब्लॉब्स या कुछ पंक्तियों को बदल रहे हैं? यह निर्धारित करना चाहिए कि इसके लिए एक अधिसूचना तंत्र खेलने में वीसीएस कितना प्रभावी होगा।

उम्मीद है कि इससे मदद मिलती है।

+2

लिंक पुराना है। मुझे लगता है कि यह http://git-scm.com/book/en/v2/Git-Tools-Submodules अब होना चाहिए। –

+0

किया गया। टिप्पणी के लिए धन्यवाद। –

+0

मैं तर्क दूंगा कि बड़े डेटासेट को बनाए रखना, विशेष रूप से यदि वे नहीं बदलते हैं, तो गिट में अधिक मात्रा में है। गिट के बाहर डेटासेट को रखना, और स्रोत से डेटा कॉपी या wget करने के लिए एक साधारण स्क्रिप्ट का उपयोग करना इष्टतम होगा। – cpbills

9

यह लग रहा है सही अवसर की तरह git-annex कोशिश करने के लिए:

Git-चयक, Git के साथ प्रबंध फ़ाइलों की अनुमति देता है Git में फ़ाइल की सामग्री की जाँच के बिना। हालांकि यह विरोधाभासी प्रतीत हो सकता है, यह उपयोगी है जब गिट से बड़ी फ़ाइलों से निपटने के लिए वर्तमान में आसानी से संभाल सकता है, चाहे स्मृति में सीमाओं, चेकसमिंग समय या डिस्क स्थान की वजह से हो।

+0

+1 ने टिप के लिए – sehe

+1

Thx से पहले नहीं देखा है। बहुत सारी निर्भरताएं हैं, इसलिए मैं इसे काम पर उपयोग नहीं कर पाऊंगा, जहां हर नई वस्तु पेपरवर्क की एक शानदार मात्रा है, लेकिन निश्चित रूप से अन्य चीजों के लिए इसे आजमाने की कोशिश कर रहा हूं। –

1

Git BUP बड़ी फ़ाइलों को तेजी से बैक अप लेने के साथ अच्छा काम करने का दावा करता है।

मुझे लगता है कि बीयूपी करने के लिए एक अलग भंडार मानता है यह काम है ताकि आप वैसे भी सबमिड्यूल का उपयोग कर समाप्त कर सकें। हालांकि, अगर आप अच्छी बैंडविड्थ कमी चाहते हैं तो यह बात

1

वैकल्पिक रूप से, डेटा एक पी 2 पी सेवा द्वारा सिंक किए गए एक अनचाहे (गिट द्वारा) फ़ोल्डर में रह सकता है। हम इस समाधान का उपयोग जीबी के कई दसियों के डेटासेट के लिए करते हैं और यह काफी अच्छी तरह से काम करता है।

  • डेटासेट सीधे सहकर्मियों के बीच साझा किया जाता है।
  • पी 2 पी सॉफ्टवेयर पुराने संस्करणों के आधार पर रखा और बहाल किया जा सकता है।
  • डेटासेट स्वचालित रूप से परिवर्तनों के मामले में अद्यतित हो जाएगा।

syncthing वह सॉफ़्टवेयर है जिसका हम उपयोग करते हैं।

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