No estoy familiarizado con el formato de archivo utilizado en HDF5, pero me pregunto si los archivos HDF5 son adecuados para el control de revisión con git (o, por ejemplo, Mercurial o Subversion). Supongo que lo que quiero decir es: ¿los archivos HDF5 son adecuados para la diferenciación basada en líneas o git tendrá que tratar un HDF5 como un gran binario y almacenar una copia completa para cada revisión?
data-management
data-storage
Thomas Arildsen
fuente
fuente
Respuestas:
Obtendrá una respuesta mucho mejor si proporciona algunos detalles técnicos más sobre qué tipo de datos está tratando de poner bajo control de versión, cómo desea almacenar diferentes versiones de los datos, qué componentes es probable que cambien y qué componentes no son, y si realmente va a tener un historial similar a un árbol (ramas, fusiones).
Los archivos HDF5 no son adecuados para el control de versiones basado en diff bajo git.
git usa una base de datos basada en hash debajo del capó, por lo que es posible almacenar el hash de su archivo de datos HDF5 sin almacenar el archivo en sí. Tres proyectos, git-fat , git-annex y git-media , simplifican enormemente este proceso para usted. Sugeriría usar este enfoque si tiene grandes cantidades de datos completamente independientes que le gustaría versionar explícitamente.
Si puede separar su almacenamiento de datos en regiones no volátiles y volátiles, esto mejorará en gran medida la eficiencia de su interacción con la base de datos de control de versiones. También es posible que desee considerar explícitamente el uso de una base de datos para sus datos si no necesita las funciones de DVCS que ofrece git.
fuente
La respuesta literal a esta pregunta es que git no tratará los archivos HDF5 de manera eficiente.
Para obtener respuestas más útiles sobre el control de versiones para proyectos que tienen algunos archivos binarios, consulte esta pregunta de stackoverflow: /programming/540535/managing-large-binary-files-with-git
fuente
Como dijeron otros, sería más fácil hacer sugerencias útiles si describiera su objetivo general en lugar de un punto técnico preciso. Aquí hay una sugerencia más que podría ayudarlo, dependiendo de cuál sea su objetivo.
El proyecto ActivePapers ( http://www.activepapers.org/ ) proporciona un código y un sistema de gestión de datos además de HDF5. Un ActivePaper es un archivo HDF5 que contiene conjuntos de datos Y el código que funciona en ellos, con metadatos que realizan un seguimiento de qué código calculó qué conjunto de datos y qué datos de entrada utilizaron. En combinación con el control de versiones en el código fuente y / o el control de versiones en todo el archivo HDF5 (usando herramientas como git-annex, mencionado en otra respuesta), ActivePapers puede usarse para versionar cálculos en lugar de archivos o conjuntos de datos aislados.
Descargo de responsabilidad: soy el autor de ActivePapers.
fuente