Ich bin mit dem in HDF5 verwendeten Dateiformat nicht vertraut, frage mich jedoch, ob HDF5-Dateien für die Versionskontrolle mit Git (oder zum Beispiel Mercurial oder Subversion) geeignet sind. Ich denke, was ich meine ist: Sind HDF5-Dateien für zeilenbasiertes Vergleichen geeignet oder muss git eine HDF5 als eine große Binärdatei behandeln und für jede Revision eine vollständige Kopie speichern?
data-management
data-storage
Thomas Arildsen
quelle
quelle
Antworten:
Sie erhalten eine viel bessere Antwort, wenn Sie ein paar weitere technische Details dazu angeben, welche Art von Daten Sie der Versionskontrolle unterwerfen möchten, wie Sie verschiedene Versionen der Daten speichern möchten und welche Komponenten sich wahrscheinlich ändern werden und welche Komponenten dies nicht sind und ob Sie wirklich einen baumartigen Verlauf haben werden (Verzweigungen, Zusammenführungen).
HDF5-Dateien eignen sich nicht für die diff-basierte Versionskontrolle unter git.
git verwendet eine Hash-basierte Datenbank, sodass es möglich ist, den Hash Ihrer HDF5-Datendatei zu speichern, ohne die Datei selbst zu speichern. Drei Projekte, Git-Fat , Git-Annex und Git-Media , vereinfachen diesen Prozess für Sie erheblich. Ich würde vorschlagen, diesen Ansatz zu verwenden, wenn Sie über große, vollständig unabhängige Datenblöcke verfügen, die Sie explizit versionieren möchten.
Wenn Sie Ihren Datenspeicher in nichtflüchtige und flüchtige Bereiche unterteilen können, wird die Effizienz Ihrer Interaktion mit der Versionskontrolldatenbank erheblich verbessert. Möglicherweise möchten Sie auch explizit eine Datenbank für Ihre Daten verwenden, wenn Sie die DVCS-Funktionen von git nicht benötigen.
quelle
Die wörtliche Antwort auf diese Frage ist, dass Git HDF5-Dateien nicht effizient behandelt.
Weitere nützliche Antworten zur Versionskontrolle für Projekte mit Binärdateien finden Sie in der folgenden Frage zum Stackoverflow: /programming/540535/managing-large-binary-files-with-git
quelle
Wie andere sagten, wäre es einfacher, nützliche Vorschläge zu machen, wenn Sie Ihr Gesamtziel beschreiben würden, anstatt einen präzisen technischen Punkt. Hier ist noch ein Vorschlag, der Ihnen helfen könnte, je nachdem, was Ihr Ziel ist.
Das ActivePapers-Projekt ( http://www.activepapers.org/ ) bietet zusätzlich zu HDF5 ein Code- und Datenverwaltungssystem. Ein ActivePaper ist eine HDF5-Datei, die Datensätze UND den Code enthält, der auf diesen arbeitet, wobei Metadaten protokollieren, welcher Code welchen Datensatz berechnet hat und welche Eingabedaten verwendet wurden. In Kombination mit der Versionskontrolle für den Quellcode und / oder der Versionskontrolle für die gesamte HDF5-Datei (mithilfe von Tools wie git-annex, wie in einer anderen Antwort erwähnt) können ActivePaper-Dateien für die Versionierung von Berechnungen anstelle von isolierten Dateien oder Datensätzen verwendet werden.
Haftungsausschluss: Ich bin der Autor von ActivePapers.
quelle