HDF5 dosyaları git revizyon kontrolü için uygun mu?


13

HDF5'te kullanılan dosya biçimine aşina değilim, ancak HDF5 dosyalarının git (veya örneğin Mercurial veya Subversion) ile revizyon kontrolü için uygun olup olmadığını merak ediyorum? Ne demek istediğimi tahmin ediyorum: HDF5 dosyaları satır tabanlı diff'ing için uygun veya git bir HDF5 büyük bir ikili olarak tedavi etmek ve her revizyon için bir kopyasını saklamak zorunda kalacak?


1
HDF5, ikili veriler için tasarlanmıştır. Hat farkı için gerçekten uygun değiller. Bununla birlikte, onlara yazdığınız tek şey ASCII dizeleri ise, muhtemelen ondan kaçacaksınız. Amacın ne?
Bill Barth

Sadece revizyon kontrolü için uygun olup olmadıklarını merak ediyordum. Revizyon izlemede, her görece küçük bir değişiklik yapıldığında veri kümesinin tamamının yeni bir kopyasını saklaması zorlaşır.
Thomas Arildsen

1
HDF5 dosyalarınıza ne tür veriler eklemeyi planlıyordunuz? HDF5 dosyaları genellikle büyük ikili girişler ve simülasyon kodlarından çıkışlar için kullanılır. Birincisi sık sık değişmez ve ikincisinin revizyon kontrolüne ait olduğu açık değildir. Amacın nedir?
Bill Barth

Kalite kontrolü nedeniyle veri kümelerinizden veri girişlerini atma veya mevcut veri kümelerine ek veri ekleme gibi durumları düşünüyorum.
Thomas Arildsen

2
HDF5 muhtemelen iyi fark etmeyecektir, ancak kendinize hangisinin sizin için daha önemli olduğunu sormanız gerekir: repounuzun boyutu veya HDF5'in size sunduğu özellikler. Belki de daha iyi bir soru "Sürüm geçmişi ve kaynak özellikleri sağlayan ham verileri depolamanın en iyi yolu nedir?"
Bill Barth

Yanıtlar:


9

Sürüm kontrolü altına ne tür veriler koymaya çalıştığınız, verilerin farklı sürümlerini nasıl depolamak istediğiniz, hangi bileşenlerin değişme olasılığı hakkında birkaç teknik ayrıntı sağlarsanız çok daha iyi bir yanıt alırsınız. ve hangi bileşenlerin bulunmadığını ve gerçekten ağaç benzeri bir geçmişe sahip olup olamayacağınızı (dallar, birleşmeler).

HDF5 dosyaları git altındaki fark tabanlı sürüm kontrolü için uygun değildir.

git başlık altında karma tabanlı bir veritabanı kullanır, bu nedenle HDF5 veri dosyanızın karma değerini dosyanın kendisini depolamaksızın saklamak mümkündür. Üç proje, git-fat , git-ekx ve git-media , bu süreci sizin için büyük ölçüde basitleştirir. Açıkça versiyonlamak istediğiniz büyük, tamamen bağımsız veri yığınlarına sahipseniz bu yaklaşımı kullanmanızı öneririm.

Veri depolama alanınızı kalıcı ve geçici bölgelere ayırabiliyorsanız, bu durum sürüm kontrol veritabanı ile etkileşimin verimliliğini büyük ölçüde artıracaktır. Git tekliflerinin DVCS özelliklerine ihtiyacınız yoksa, verileriniz için açıkça bir veritabanı kullanmayı da düşünebilirsiniz.


Yapmak istediğiniz şey buysa, sürüm kontrol veritabanlarını şemayı kontrol ederek, veritabanını bir metin dosyasına dökerek ve sonucu kontrol eden bir sürümle (örneğin, git kullanarak) sürümlerini oluşturmak da mümkündür. Ayrıntılar için stackoverflow.com/questions/846659/… adresine bakın.
Geoff Oxberry

ayrıca git-annex
Aralık'ta Memming

3

Ne demek istediğimi tahmin ediyorum: HDF5 dosyaları satır tabanlı diff'ing için uygun veya git bir HDF5 büyük bir ikili olarak tedavi etmek ve her revizyon için bir kopyasını saklamak zorunda kalacak?

Bu sorunun gerçek cevabı, git'in HDF5 dosyalarını etkili bir şekilde işlemeyecek olmasıdır.

Bazı ikili dosyaları olan projeler için sürüm denetimi hakkında daha yararlı yanıtlar için şu yığın akışı sorusuna bakın: /programming/540535/managing-large-binary-files-with-git


3

Diğerlerinin söylediği gibi, kesin bir teknik noktadan ziyade genel hedefinizi açıklarsanız yararlı önerilerde bulunmak daha kolay olacaktır. Hedefinizin ne olduğuna bağlı olarak size yardımcı olabilecek bir öneri daha.

ActivePapers projesi ( http://www.activepapers.org/ ) HDF5'in üzerine bir kod ve veri yönetim sistemi sağlar. ActivePaper, veri kümelerini VE üzerinde çalışan kodu içeren bir HDF5 dosyasıdır, meta veriler hangi kod parçasının hangi veri parçasını hesapladığını ve hangi veri kümesini kullandığını izler. ActiveFapers, kaynak koddaki sürüm kontrolü ve / veya tüm HDF5 dosyasındaki sürüm kontrolü (başka bir yanıtta bahsedilen git-ekx gibi araçları kullanarak) ile birlikte, yalıtılmış dosyalar veya veri kümeleri yerine hesaplamaları sürümlemek için ActivePapers kullanılabilir.

Feragatname: ActivePapers'ın yazarıyım.


1
Şu anda belirli bir sorun üzerinde çalışmıyorum, ancak zaman zaman yeni veri ekleyebileceğinizi düşündüğüm bazı veri kümeleri hayal ediyordum. Her eklemede, çok büyük olabilecek tüm veri kümesinin bir kopyasını saklamanız gerekebilir, ancak prensip olarak, yalnızca eklenen verileri içeren bir "fark" saklamanız gerekir.
Thomas Arildsen

1
Ben ikili veri, HDF5 veya başka bir fark / birleştirme stili işlemleri yapmak için herhangi bir araç farkında değilim. ActivePapers ile bunu yapmak ilginç bir fikir, orijinal verilerle birlikte dosyaya bir "yama komut dosyası" ekleyerek değişikliği uygulamaktır. Daha sonra, uygulanan yamaların bir sırası olarak verilerin evrimini takip edebilirsiniz. ActivePapers çerçevesinin bir avantajı, yamaları orijinaline referans olarak ayrı bir dosyada yapabilmenizdir. Bu, ayrı bir çalışma olarak verileri yayınlayabileceğiniz ve daha sonra (kendiniz ve başka birinin verileri üzerinde) değişiklikler yayınlayabileceğiniz anlamına gelir.
khinsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.