Чи підходять файли HDF5 для контролю версії git?


13

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


1
HDF5 призначений для двійкових даних. Вони насправді не підходять для різниць ліній. Якщо говорити, якщо все, що ви їм пишете, це рядки ASCII, ви, мабуть, з цим в основному підете. Яке ваше призначення?
Білл Барт

Мені було просто цікаво, чи вони будуть придатні для контролю ревізії. Це стає незручним, якщо відстеження версій має зберігати цілу нову копію всього набору даних кожного разу, коли до нього було внесено відносно невеликі зміни.
Thomas Arildsen

1
Які типи даних планували вставляти у свої файли HDF5? Файли HDF5 зазвичай використовуються для великих бінарних входів і виходів з імітаційних кодів. Перші часто не змінюються часто, і не ясно, що останні належать до контролю ревізії. Яка ваша мета?
Білл Барт

Я думаю про такі ситуації, як скасування записів даних із набору даних через контроль якості або додавання додаткових даних до наборів уже наявних даних.
Thomas Arildsen

2
HDF5, ймовірно, не відрізнятиметься, але ви повинні запитати себе, що для вас важливіше: розмір вашої репо-репортажу чи функції, які надає вам HDF5. Можливо, кращим питанням було б "Який найкращий спосіб зберігати необроблені дані, що надають історію версій та можливості походження?"
Білл Барт

Відповіді:


9

Ви отримаєте набагато кращу відповідь, якщо надасте ще кілька технічних подробиць про те, які дані ви намагаєтеся поставити під контроль версій, як потрібно зберігати різні версії даних, які компоненти, можливо, зміняться а які компоненти - ні, і чи справді ви будете мати подібну до дерева історію (гілки, злиття).

Файли HDF5 не підходять для управління різними версіями під git.

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

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


Можливо також базування даних про управління версіями, якщо це саме ви хочете зробити, керуючи версією схеми, скидаючи базу даних у текстовий файл та версією, що контролює результат (наприклад, за допомогою git). Докладні відомості див. У розділі stackoverflow.com/questions/846659/… .
Джефф Оксберрі

також є git-
annex

3

Я думаю, що я маю на увазі: чи файли HDF5 підходять для лінійного диффайнгу, або Git доведеться трактувати HDF5 як один великий бінарний файл і зберігати всю копію для кожної редакції?

Буквальна відповідь на це питання полягає в тому, що git не буде ефективно лікувати файли 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", що містить додані дані.
Томас Арільдсен

1
Мені не відомий жоден інструмент для виконання операцій стилю diff / merge на бінарних даних, HDF5 чи іншим способом. Одна з інтригуючих ідей зробити це за допомогою ActivePapers - застосувати зміни, включивши у файл "сценарій виправлення" разом із вихідними даними. Потім ви можете прослідкувати еволюцію даних як послідовність застосованих виправлень. Однією з переваг рамки ActivePapers є те, що ви можете робити виправлення в окремому файлі, посилаючись на оригінал. Це означає, що ви можете публікувати дані та публікувати модифікації (до своїх та чужих даних) пізніше, як окрема робота.
хінсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.