HDF5 파일은 git 개정 제어에 적합합니까?


13

HDF5에 사용 된 파일 형식에 익숙하지 않지만 HDF5 파일이 git (또는 Mercurial 또는 Subversion)의 개정 제어에 적합한 지 궁금합니다. 내가 의미하는 바는 HDF5 파일이 라인 기반 디핑에 적합한 지 또는 git이 HDF5를 하나의 큰 바이너리로 취급하고 각 개정에 대한 전체 사본을 저장해야 하는가?


1
HDF5는 이진 데이터 용으로 설계되었습니다. 라인 디핑에는 실제로 적합하지 않습니다. 말하자면, 당신이 그들에게 쓰는 모든 것이 ASCII 문자열이라면, 아마도 대부분 그것을 벗어날 것입니다. 당신의 목적은 무엇입니까?
Bill Barth

개정 관리에 적합한 지 궁금합니다. 개정 추적에서 비교적 작은 변경이 이루어질 때마다 전체 데이터 세트의 전체 새 사본을 저장해야하는 경우 불편합니다.
Thomas Arildsen

1
HDF5 파일에 어떤 종류의 데이터를 계획 했습니까? HDF5 파일은 일반적으로 시뮬레이션 코드의 큰 이진 입력 및 출력에 사용됩니다. 전자는 종종 자주 변경되지 않으며 후자는 개정 관리에 속하는지 확실하지 않습니다. 당신의 목표는 무엇입니까?
Bill Barth

품질 관리로 인해 데이터 세트에서 데이터 항목을 삭제하거나 기존 데이터 세트에 추가 데이터를 추가하는 등의 상황에 대해 생각하고 있습니다.
Thomas Arildsen

2
HDF5는 잘 모를 것 같지는 않지만 레포의 크기 또는 HDF5가 제공하는 기능 중 더 중요한 것이 무엇인지 스스로에게 물어봐야합니다. 아마도 더 나은 질문은 "버전 기록 및 출처 기능을 제공하는 원시 데이터를 저장하는 가장 좋은 방법은 무엇입니까?"입니다.
Bill Barth

답변:


9

어떤 버전의 데이터를 버전 제어하에 두려고하는지, 다른 버전의 데이터를 저장하려는 방법, 구성 요소가 변경 될 가능성에 대한 기술적 인 세부 정보를 제공하면 훨씬 더 나은 답변을 얻을 수 있습니다. 그리고 어떤 구성 요소가 아닌지, 그리고 정말로 나무와 같은 역사 (분기, 병합)를 가질 지 여부.

HDF5 파일은 git에서 diff 기반 버전 제어에 적합하지 않습니다.

git은 후드에서 해시 기반 데이터베이스를 사용하므로 실제로 파일 자체를 저장하지 않고 HDF5 데이터 파일의 해시를 저장할 수 있습니다. git-fat , git-annexgit-media의 세 프로젝트 가이 프로세스를 크게 단순화합니다. 명시 적으로 버전을 지정하려는 완전히 독립적 인 큰 데이터 덩어리가있는 경우이 방법을 사용하는 것이 좋습니다.

데이터 스토리지를 비 휘발성 및 휘발성 영역으로 분리 할 수 ​​있으면 버전 제어 데이터베이스와의 상호 작용 효율성이 크게 향상됩니다. git offers DVCS 기능이 필요하지 않은 경우 데이터베이스를 명시 적으로 사용하는 것이 좋습니다.


스키마를 제어하는 ​​버전, 데이터베이스를 텍스트 파일로 덤프 및 결과를 제어하는 ​​버전 (예 : git 사용)을 통해 원하는대로 버전 제어 데이터베이스를 버전화할 수도 있습니다. 자세한 내용은 stackoverflow.com/questions/846659/… 를 참조하십시오.
Geoff Oxberry

git-annex도 있습니다
Memming

3

내가 의미하는 바는 HDF5 파일이 라인 기반 디핑에 적합한 지 또는 git이 HDF5를 하나의 큰 바이너리로 취급하고 각 개정에 대한 전체 사본을 저장해야 하는가?

이 질문에 대한 문자 적 ​​대답은 git이 HDF5 파일을 효율적으로 처리하지 못한다는 것입니다.

이진 파일이있는 프로젝트의 버전 관리에 대한 유용한 답변은 다음 stackoverflow 질문을 참조하십시오. /programming/540535/managing-large-binary-files-with-git


3

다른 사람들이 말했듯이 정확한 기술적 요점이 아니라 전반적인 목표를 설명하면 유용한 제안을하는 것이 더 쉬울 것입니다. 목표가 무엇인지에 따라 도움이 될만한 제안이 하나 더 있습니다.

ActivePapers 프로젝트 ( http://www.activepapers.org/ )는 HDF5 위에 코드 및 데이터 관리 시스템을 제공합니다. ActivePaper는 데이터 세트와 데이터를 처리하는 코드를 포함하는 HDF5 파일이며 메타 데이터는 어떤 코드가 어떤 데이터 세트를 계산하고 어떤 입력 데이터를 사용하는지 추적합니다. ActivePapers는 소스 코드에 대한 버전 제어 및 / 또는 전체 HDF5 파일에 대한 버전 제어 (다른 응답에서 언급 한 git-annex와 같은 도구 사용)와 함께 분리 된 파일이나 데이터 세트가 아닌 버전 계산에 사용될 수 있습니다.

면책 조항 : 저는 ActivePapers의 저자입니다.


1
현재 특정 문제에 대해 작업하고 있지 않지만 때때로 새로운 데이터를 추가 할 수있는 일부 데이터 세트를 상상하고있었습니다. 추가 할 때마다 전체 데이터 세트의 전체 사본을 저장해야 할 수도 있는데, 이는 매우 클 수도 있지만 원칙적으로 추가 된 데이터를 포함하는 "diff"만 저장하면됩니다.
Thomas Arildsen

1
이진 데이터, HDF5 또는 기타에서 diff / merge 스타일 작업을 수행하는 도구를 알지 못합니다. ActivePapers로이를 수행하는 흥미로운 아이디어 중 하나는 파일에 "패치 스크립트"를 원본 데이터와 함께 포함시켜 변경 사항을 적용하는 것입니다. 그런 다음 일련의 적용된 패치로 데이터의 진화를 따를 수 있습니다. ActivePapers 프레임 워크의 한 가지 장점은 원본을 참조하는 별도의 파일에서 패치를 수행 할 수 있다는 것입니다. 즉, 나중에 별도의 작업으로 데이터를 게시하고 자신과 다른 사람의 데이터에 수정 사항을 게시 할 수 있습니다.
khinsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.