Подходят ли файлы HDF5 для контроля версий git?

13

Я не знаком с форматом файлов, используемым в HDF5, но мне интересно, подходят ли файлы HDF5 для контроля версий с помощью git (или, например, Mercurial или Subversion)? Я предполагаю, что я имею в виду: подходят ли файлы HDF5 для линейного сравнения или git должен будет рассматривать HDF5 как один большой двоичный файл и хранить полную копию для каждой ревизии?

Томас Арилдсен
источник
1
HDF5 предназначен для двоичных данных. Они не совсем подходят для различий линий. При этом, если все, что вы пишете в них, это строки ASCII, вам, скорее всего, это сойдет с рук. Какова твоя цель?
Билл Барт
Мне просто интересно, подойдут ли они для контроля версий. Это становится неудобным, если отслеживание ревизий должно сохранять полную новую копию всего набора данных каждый раз, когда в него вносятся относительно небольшие изменения.
Томас Арильдсен
1
Какие данные вы планируете добавить в свои файлы HDF5? Файлы HDF5 обычно используются для больших двоичных входов и выходов из кодов моделирования. Первые часто меняются не часто, и неясно, что последние относятся к контролю версий. Какова твоя цель?
Билл Барт
Я думаю о таких ситуациях, как отбрасывание записей данных из вашего набора данных из-за контроля качества или добавление дополнительных данных в наборы уже существующих данных.
Томас Арильдсен
2
HDF5, вероятно, не будет отличаться, но вы должны спросить себя, что для вас важнее: размер вашего репо или функции, которые дает вам HDF5. Возможно, лучшим вопросом будет «Каков наилучший способ хранения необработанных данных, обеспечивающий историю версий и функции провенанса?»
Билл Барт,

Ответы:

9

Вы получите гораздо лучший ответ, если предоставите еще несколько технических деталей о том, какие данные вы пытаетесь поставить под контроль версий, как вы хотите хранить разные версии данных, какие компоненты могут измениться. и какие компоненты не, и действительно ли у вас будет древовидная история (ветви, слияния).

Файлы HDF5 не подходят для контроля версий на основе diff в git.

git использует внутреннюю базу данных на основе хеша, поэтому можно хранить хеш вашего файла данных HDF5 без фактического сохранения самого файла. Три проекта, git-fat , git-annex и git-media , значительно упрощают этот процесс для вас. Я бы предложил использовать этот подход, если у вас есть большие, полностью независимые порции данных, которые вы хотели бы явно версии.

Если вы сможете разделить хранилище данных на энергонезависимые и нестабильные регионы, это значительно повысит эффективность вашего взаимодействия с базой данных контроля версий. Вы также можете рассмотреть возможность явного использования базы данных для ваших данных, если вам не нужны предложения git по функциям DVCS.

Арон Ахмадия
источник
Кроме того, можно управлять базами данных контроля версий, если это именно то, что вы хотите сделать, путем управления схемой версией, выгрузки базы данных в текстовый файл и управления версией результата (например, с помощью git). См. Stackoverflow.com/questions/846659/… для получения подробной информации.
Джефф Оксберри
есть также git-приложение
Memming
3

Я предполагаю, что я имею в виду: подходят ли файлы HDF5 для линейного сравнения, или git должен будет рассматривать HDF5 как один большой двоичный файл и хранить полную копию для каждой ревизии?

Буквальный ответ на этот вопрос заключается в том, что git не будет эффективно обрабатывать файлы HDF5.

Для получения более полезных ответов о контроле версий для проектов, имеющих некоторые двоичные файлы, см. Этот вопрос stackoverflow: /programming/540535/managing-large-binary-files-with-git

k20
источник
3

Как говорили другие, было бы легче сделать полезные предложения, если бы вы описали свою общую цель, а не точную техническую точку. Вот еще одно предложение, которое может помочь вам, в зависимости от вашей цели.

Проект ActivePapers ( http://www.activepapers.org/ ) предоставляет систему управления кодом и данными поверх HDF5. ActivePaper - это файл HDF5, который содержит наборы данных И код, который на них работает, с метаданными, отслеживающими, какой фрагмент кода вычислен, какой набор данных и с какими входными данными. В сочетании с контролем версий исходного кода и / или контролем версий всего файла HDF5 (с использованием инструментов, таких как git-annex, упомянутых в другом ответе), ActivePapers можно использовать для вычислений версий, а не для отдельных файлов или наборов данных.

Отказ от ответственности: я автор ActivePapers.

khinsen
источник
1
В настоящее время я не работаю над конкретной проблемой, но я представлял себе набор данных, в который вы, возможно, время от времени добавляете новые данные. При каждом добавлении вам, возможно, придется хранить полную копию всего набора данных, который может быть очень большим, хотя в принципе необходимо будет только хранить «diff», содержащий добавленные данные.
Томас Арилдсен
1
Я не знаю ни одного инструмента для выполнения операций в стиле сравнения / слияния над двоичными данными, HDF5 или другим способом. Одна интригующая идея сделать это с ActivePapers состоит в том, чтобы применить изменение, включив в файл «сценарий исправления» вместе с исходными данными. Затем вы можете проследить эволюцию данных в виде последовательности примененных исправлений. Одним из преимуществ инфраструктуры ActivePapers является то, что вы можете делать исправления в отдельном файле, ссылаясь на оригинал. Это означает, что вы можете публиковать данные и публиковать изменения (для своих и чужих данных) позже, как отдельную работу.
Хинсен