ไฟล์ HDF5 เหมาะสมสำหรับการควบคุมการแก้ไข git หรือไม่?


13

ฉันไม่คุ้นเคยกับรูปแบบไฟล์ที่ใช้ใน HDF5 แต่ฉันสงสัยว่าไฟล์ HDF5 เหมาะสมสำหรับการควบคุมการแก้ไขด้วย git (หรือตัวอย่างเช่น Mercurial หรือ Subversion) หรือไม่ ฉันเดาว่าฉันหมายถึงอะไร: ไฟล์ HDF5 เหมาะสำหรับการกระจายแบบ line-based หรือคอมไพล์จะต้องรักษา HDF5 เป็นไบนารี่ขนาดใหญ่หนึ่งไฟล์และจัดเก็บสำเนาทั้งหมดสำหรับการแก้ไขแต่ละครั้งหรือไม่


1
HDF5 ออกแบบมาสำหรับข้อมูลไบนารี ไม่เหมาะสำหรับการกระจายบรรทัด ที่ถูกกล่าวว่าถ้าสิ่งที่คุณเขียนถึงพวกเขาเป็นสตริง ASCII คุณอาจจะได้รับไปกับมัน จุดประสงค์ของคุณคืออะไร
Bill Barth

ฉันแค่สงสัยว่าพวกเขาจะเหมาะสำหรับการควบคุมการแก้ไขหรือไม่ มันจะไม่สะดวกถ้าการติดตามการแก้ไขต้องจัดเก็บสำเนาใหม่ทั้งหมดของชุดข้อมูลทั้งหมดในแต่ละครั้งที่มีการเปลี่ยนแปลงเล็กน้อย
Thomas Arildsen

1
คุณวางแผนที่จะใส่ข้อมูลประเภทใดในไฟล์ HDF5 ของคุณ โดยทั่วไปแล้วไฟล์ HDF5 จะใช้สำหรับอินพุตและเอาต์พุตไบนารีขนาดใหญ่จากรหัสการจำลอง อดีตมักจะไม่เปลี่ยนแปลงบ่อยและไม่ชัดเจนว่าหลังอยู่ในการควบคุมการแก้ไข เป้าหมายของคุณคืออะไร
Bill Barth

ฉันกำลังคิดถึงสถานการณ์เช่นการทิ้งรายการข้อมูลจากชุดข้อมูลของคุณเนื่องจากการควบคุมคุณภาพหรือการเพิ่มข้อมูลเพิ่มเติมไปยังชุดข้อมูลที่มีอยู่แล้ว
Thomas Arildsen

2
HDF5 อาจจะไม่แตกต่างกัน แต่คุณต้องถามตัวเองว่าสำคัญกับคุณมากขนาดของ repo หรือฟีเจอร์ที่ HDF5 มอบให้คุณ บางทีคำถามที่ดีกว่าก็คือ "วิธีที่ดีที่สุดในการจัดเก็บข้อมูลดิบที่ให้บริการประวัติรุ่นและคุณสมบัติที่มาคืออะไร"
Bill Barth

คำตอบ:


9

คุณจะได้รับคำตอบที่ดีกว่านี้หากคุณให้รายละเอียดทางเทคนิคเพิ่มเติมเกี่ยวกับชนิดของข้อมูลที่คุณพยายามควบคุมภายใต้รุ่นวิธีที่คุณต้องการจัดเก็บข้อมูลรุ่นต่าง ๆ ส่วนประกอบใดมีแนวโน้มที่จะเปลี่ยนแปลง และส่วนประกอบอะไรบ้างและไม่ว่าคุณจะมีประวัติเหมือนต้นไม้จริง ๆ หรือไม่ (สาขารวมกัน)

ไฟล์ HDF5 ไม่เหมาะสำหรับการควบคุมเวอร์ชันแบบอิงภายใต้ git

git ใช้ฐานข้อมูลแฮชภายใต้ประทุนดังนั้นจึงเป็นไปได้ที่จะจัดเก็บแฮชของไฟล์ข้อมูล HDF5 ของคุณโดยไม่ต้องจัดเก็บไฟล์เอง สามโครงการgit-fat , git-annexและgit-mediaทำให้กระบวนการนี้ง่ายขึ้นมากสำหรับคุณ ฉันขอแนะนำให้ใช้วิธีนี้หากคุณมีชิ้นส่วนข้อมูลขนาดใหญ่ที่เป็นอิสระอย่างสมบูรณ์ซึ่งคุณต้องการเวอร์ชั่นอย่างชัดเจน

หากคุณสามารถแยกการจัดเก็บข้อมูลของคุณออกเป็นภูมิภาคที่ไม่ลบเลือนและระเหยง่ายสิ่งนี้จะปรับปรุงประสิทธิภาพของการโต้ตอบของคุณกับฐานข้อมูลการควบคุมเวอร์ชันอย่างมาก คุณอาจต้องการพิจารณาอย่างชัดเจนโดยใช้ฐานข้อมูลสำหรับข้อมูลของคุณหากคุณไม่ต้องการข้อเสนอคุณสมบัติ DVCS git


นอกจากนี้ยังเป็นไปได้ที่ฐานข้อมูลการควบคุมเวอร์ชันหากเป็นสิ่งที่คุณต้องการทำโดยการควบคุมเวอร์ชันของสคีมาการดัมพ์ฐานข้อมูลไปยังไฟล์ข้อความและเวอร์ชันที่ควบคุมผลลัพธ์ (เช่นการใช้ git) ดูstackoverflow.com/questions/846659/…สำหรับรายละเอียด
Geoff Oxberry

นอกจากนี้ยังมี git-annex
Memming

3

ฉันเดาว่าฉันหมายถึงอะไร: ไฟล์ HDF5 เหมาะสำหรับการกระจายแบบ line-based หรือคอมไพล์จะต้องรักษา HDF5 เป็นไบนารี่ขนาดใหญ่หนึ่งไฟล์และจัดเก็บสำเนาทั้งหมดสำหรับการแก้ไขแต่ละครั้งหรือไม่

คำตอบที่แท้จริงสำหรับคำถามนี้คือคอมไพล์จะไม่รักษาไฟล์ HDF5 อย่างมีประสิทธิภาพ

สำหรับคำตอบที่เป็นประโยชน์เพิ่มเติมเกี่ยวกับการควบคุมเวอร์ชันสำหรับโครงการที่มีไฟล์ไบนารีให้ดูคำถาม stackoverflow นี้: /programming/540535/managing-large-binary-files-with-git


3

ดังที่คนอื่น ๆ กล่าวว่าจะเป็นการง่ายกว่าที่จะให้คำแนะนำที่เป็นประโยชน์หากคุณอธิบายเป้าหมายโดยรวมของคุณมากกว่าจุดทางเทคนิคที่แม่นยำ นี่คือข้อเสนอแนะอีกหนึ่งข้อที่อาจช่วยคุณได้ขึ้นอยู่กับเป้าหมายของคุณ

โครงการ ActivePapers ( http://www.activepapers.org/ ) ให้รหัสและระบบการจัดการข้อมูลด้านบนของ HDF5 ActivePaper เป็นไฟล์ HDF5 ที่มีชุดข้อมูลและรหัสที่ใช้งานได้โดยมีเมตาดาต้าคอยติดตามว่าส่วนใดของรหัสที่คำนวณซึ่งชุดข้อมูลใดและใช้ข้อมูลอินพุตใด เมื่อใช้ร่วมกับการควบคุมเวอร์ชันในซอร์สโค้ดและ / หรือการควบคุมเวอร์ชันในไฟล์ HDF5 ทั้งหมด (โดยใช้เครื่องมือเช่น git-annex ที่กล่าวถึงในคำตอบอื่น) ActivePapers สามารถใช้สำหรับการคำนวณเวอร์ชันแทนไฟล์แยกหรือชุดข้อมูล

คำเตือน: ฉันเป็นผู้เขียนของ ActivePapers


1
ฉันไม่ได้ทำงานกับปัญหาที่เฉพาะเจาะจงในขณะนี้ แต่ฉันกำลังจินตนาการชุดข้อมูลบางอย่างที่คุณอาจเพิ่มข้อมูลใหม่เป็นครั้งคราว ด้วยการเพิ่มแต่ละครั้งคุณอาจต้องเก็บสำเนาทั้งหมดของชุดข้อมูลทั้งหมดซึ่งอาจมีขนาดใหญ่มากในขณะที่โดยหลักการแล้วจำเป็นต้องเก็บ "diff" ที่มีข้อมูลที่เพิ่มเข้ามาเท่านั้น
Thomas Arildsen

1
ฉันไม่ได้ตระหนักถึงเครื่องมือใด ๆ สำหรับการดำเนินการสไตล์ diff / ผสานกับข้อมูลไบนารี HDF5 หรืออย่างอื่น แนวคิดหนึ่งที่น่าสนใจในการทำเช่นนี้กับ ActivePapers คือการใช้การเปลี่ยนแปลงโดยรวม "สคริปต์การแก้ไข" ในไฟล์พร้อมกับข้อมูลต้นฉบับ จากนั้นคุณสามารถติดตามวิวัฒนาการของข้อมูลเป็นลำดับของแพตช์ที่ใช้ ข้อดีอย่างหนึ่งของเฟรมเวิร์ก ActivePapers คือคุณสามารถทำแพตช์ในไฟล์แยกต่างหากโดยอ้างอิงจากต้นฉบับ ซึ่งหมายความว่าคุณสามารถเผยแพร่ข้อมูลและเผยแพร่การแก้ไข (เพื่อข้อมูลของคุณเองและของบุคคลอื่น) ในภายหลังเพื่อทำงานแยกต่างหาก
khinsen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.