क्या HDF5 फाइलें गिट रिविजन कंट्रोल के लिए उपयुक्त हैं?


13

मैं HDF5 में उपयोग किए जाने वाले फ़ाइल प्रारूप से परिचित नहीं हूं, लेकिन मैं सोच रहा हूं कि क्या HDF5 फाइलें गिट कंट्रोल (या मर्क्यूरियल या तोड़फोड़) के साथ संशोधन नियंत्रण के लिए उपयुक्त हैं? मुझे लगता है कि मेरा क्या मतलब है: क्या एचडीएफ 5 फाइलें लाइन-आधारित डिफाइनिंग के लिए उपयुक्त हैं या एक एचडीएफ 5 को एक बड़े बाइनरी के रूप में व्यवहार करना होगा और प्रत्येक संशोधन के लिए एक पूरी कॉपी स्टोर करनी होगी?


1
HDF5 बाइनरी डेटा के लिए डिज़ाइन किया गया है। वे वास्तव में लाइन के लिए उपयुक्त नहीं हैं। यह कहा जा रहा है, यदि आप उन्हें लिखते हैं तो ASCII स्ट्रिंग्स है, आप शायद इसके साथ दूर हो जाएंगे। आपका उद्देश्य क्या है?
बिल बर्थ

मैं सोच रहा था कि क्या वे संशोधन नियंत्रण के लिए उपयुक्त होंगे। यह असुविधाजनक हो जाता है यदि संशोधन ट्रैकिंग को हर बार एक अपेक्षाकृत छोटे परिवर्तन के लिए किए गए पूरे डेटा सेट की एक पूरी नई प्रतिलिपि को संग्रहीत करना पड़ता है।
थॉमस एरिल्डसेन

1
अपनी HDF5 फ़ाइलों में डालने पर आप किस प्रकार के डेटा की योजना बना रहे थे? एचडीएफ 5 फाइलें आमतौर पर सिमुलेशन कोड से बड़े बाइनरी इनपुट और आउटपुट के लिए उपयोग की जाती हैं। पूर्व अक्सर बार-बार नहीं बदलता है, और यह स्पष्ट नहीं है कि बाद वाले संशोधन नियंत्रण में हैं। आपका लक्ष्य क्या है?
बिल बर्थ

मैं उन स्थितियों के बारे में सोच रहा हूं जैसे कि गुणवत्ता नियंत्रण के कारण आपके डेटा सेट से डेटा प्रविष्टियों को छोड़ना या पहले से मौजूद डेटा के सेट में अतिरिक्त डेटा जोड़ना।
थॉमस एरिल्डसेन

2
एचडीएफ 5 शायद अच्छी तरह से अलग नहीं होगा, लेकिन आपको अपने आप से पूछना होगा जो आपके लिए अधिक महत्वपूर्ण है: आपके रेपो का आकार, या एचडीएफ 5 आपको देता है। शायद एक बेहतर सवाल यह होगा कि "कच्चे डेटा को संग्रहीत करने का सबसे अच्छा तरीका क्या है जो संस्करण इतिहास और सिद्धता प्रदान करता है?"
बिल बर्थ

जवाबों:


9

यदि आप संस्करण नियंत्रण के तहत किस प्रकार का डेटा डालने का प्रयास कर रहे हैं, आप विभिन्न प्रकार के डेटा को कैसे संग्रहीत करना चाहते हैं, किन घटकों को बदलने की संभावना है और क्या घटक नहीं हैं, और क्या आप वास्तव में वृक्ष की तरह इतिहास (शाखाएं, विलय) करने जा रहे हैं।

एचडीएफ 5 फाइलें गिट के तहत अंतर-आधारित संस्करण नियंत्रण के लिए उपयुक्त नहीं हैं।

git हुड के तहत एक हैश-आधारित डेटाबेस का उपयोग करता है, इसलिए वास्तव में फ़ाइल को स्टोर किए बिना आपके HDF5 डेटा फ़ाइल के हैश को स्टोर करना संभव है। तीन प्रोजेक्ट, गिट-फैट , गिट-एनेक्स और गिट-मीडिया , आपके लिए इस प्रक्रिया को बहुत सरल करते हैं। मैं आपको इस दृष्टिकोण का उपयोग करने का सुझाव दूंगा यदि आपके पास डेटा के बड़े, पूरी तरह से स्वतंत्र विखंडन हैं जो आप स्पष्ट रूप से संस्करण के लिए करना चाहते हैं।

यदि आप अपने डेटा भंडारण को गैर-वाष्पशील और अस्थिर क्षेत्रों में अलग कर सकते हैं, तो यह संस्करण नियंत्रण डेटाबेस के साथ आपकी बातचीत की दक्षता में बहुत सुधार करेगा। आप अपने डेटा के लिए एक डेटाबेस का उपयोग करके स्पष्ट रूप से विचार करना चाह सकते हैं यदि आपको डीवीसीएस की सुविधा नहीं है।


संस्करण नियंत्रण डेटाबेस के लिए भी संभव है, अगर यही आप करना चाहते हैं, तो संस्करण को स्कीमा को नियंत्रित करके, डेटाबेस को पाठ फ़ाइल में डंप करना, और परिणाम को नियंत्रित करने वाले संस्करण (जैसे, गिट का उपयोग करके)। देखें stackoverflow.com/questions/846659/... जानकारी के लिए।
ज्योफ ऑक्सबेरी

वहाँ भी git-
annex

3

मुझे लगता है कि मेरा क्या मतलब है: क्या एचडीएफ 5 फाइलें लाइन-आधारित डिफाइनिंग के लिए उपयुक्त हैं या एक एचडीएफ 5 को एक बड़े बाइनरी के रूप में व्यवहार करना होगा और प्रत्येक संशोधन के लिए एक पूरी कॉपी स्टोर करनी होगी?

इस प्रश्न का शाब्दिक उत्तर यह है कि git HDF5 फ़ाइलों को कुशलतापूर्वक व्यवहार नहीं करेगा।

कुछ बाइनरी फ़ाइलों वाले प्रोजेक्ट नियंत्रण के बारे में अधिक उपयोगी उत्तरों के लिए, इस स्टैकओवरफ़्लो प्रश्न को देखें: /programming/540535/managing-large-binary-files-with-git


3

जैसा कि अन्य लोगों ने कहा, यदि आप एक सटीक तकनीकी बिंदु के बजाय अपने समग्र लक्ष्य का वर्णन करते हैं, तो उपयोगी सुझाव देना आसान होगा। यहां एक और सुझाव दिया गया है जो आपके लक्ष्य के आधार पर आपकी मदद कर सकता है।

ActivePaper प्रोजेक्ट ( http://www.activepapers.org/ ) HDF5 के शीर्ष पर एक कोड और डेटा प्रबंधन प्रणाली प्रदान करता है। एक ActivePaper एक HDF5 फ़ाइल है जिसमें डेटासेट और कोड है जो उन पर काम करता है, मेटाडेटा के साथ किस कोड के किस ट्रैक की गणना किस डेटासेट और किस इनपुट डेटा का उपयोग करती है। संपूर्ण HDF5 फ़ाइल पर स्रोत कोड और / या संस्करण नियंत्रण के साथ संस्करण नियंत्रण के संयोजन में (एक अन्य उत्तर में उल्लेखित गिट-एनेक्स जैसे उपकरणों का उपयोग करके), ActivePaper को अलग-अलग फ़ाइलों या डेटासेट के बजाय संस्करण गणना के लिए उपयोग किया जा सकता है।

डिस्क्लेमर: मैं एक्टिवपेपर्स का लेखक हूं।


1
मैं वर्तमान में एक विशिष्ट समस्या पर काम नहीं कर रहा हूं, लेकिन मैं कुछ डेटा सेट की कल्पना कर रहा था जो आप समय-समय पर नए डेटा जोड़ रहे होंगे। प्रत्येक जोड़ के साथ आपको पूरे डेटा सेट की एक पूरी प्रति संग्रहीत करनी पड़ सकती है, जो बहुत बड़ी हो सकती है, जबकि सिद्धांत रूप में, केवल जोड़े गए डेटा वाले "अंतर" को संग्रहीत करना आवश्यक होगा।
थॉमस अरिल्डसन 12

1
मुझे द्विआधारी डेटा, एचडीएफ 5 या अन्यथा पर शैली संचालन को अलग / मर्ज करने के लिए किसी भी उपकरण के बारे में पता नहीं है। ActivePapers के साथ ऐसा करने के लिए एक पेचीदा विचार मूल डेटा के साथ फाइल में "पैच स्क्रिप्ट" को शामिल करके परिवर्तन को लागू करना है। आप तब लागू पैच के अनुक्रम के रूप में डेटा के विकास का पालन कर सकते हैं। ActivePaper फ्रेमवर्क का एक फायदा यह है कि आप पैच को एक अलग फाइल में कर सकते हैं, जो मूल संदर्भ में है। इसका मतलब है कि आप डेटा प्रकाशित कर सकते हैं, और बाद में एक अलग काम के रूप में (अपने खुद के और किसी और के डेटा में) संशोधन प्रकाशित कर सकते हैं।
खिनसेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.