Các tệp HDF5 có phù hợp với kiểm soát sửa đổi git không?


12

Tôi không quen với định dạng tệp được sử dụng trong HDF5, nhưng tôi tự hỏi liệu các tệp HDF5 có phù hợp để kiểm soát sửa đổi với git (hoặc ví dụ Mercurial hoặc Subversion) không? Tôi đoán điều tôi muốn nói là: các tệp HDF5 phù hợp với sự khác biệt dựa trên dòng hay git sẽ phải coi HDF5 là một nhị phân lớn và lưu trữ toàn bộ bản sao cho mỗi lần sửa đổi?


1
HDF5 được thiết kế cho dữ liệu nhị phân. Chúng không thực sự thích hợp cho dòng khác nhau. Điều đó đang được nói, nếu tất cả những gì bạn viết cho họ là các chuỗi ASCII, có lẽ bạn sẽ thoát khỏi nó. Mục đích của bạn là gì?
Bill Barth

Tôi chỉ tự hỏi liệu chúng có phù hợp để kiểm soát sửa đổi không. Sẽ bất tiện nếu theo dõi sửa đổi phải lưu trữ toàn bộ bản sao mới của toàn bộ dữ liệu mỗi khi có một thay đổi tương đối nhỏ đối với nó.
Thomas Arildsen

1
Những loại dữ liệu nào bạn đã dự định đưa vào các tệp HDF5 của mình? Các tệp HDF5 thường được sử dụng cho đầu vào nhị phân lớn và đầu ra từ mã mô phỏng. Cái trước thường không thay đổi thường xuyên, và không rõ cái sau thuộc về kiểm soát sửa đổi. Mục tiêu của bạn là gì?
Bill Barth

Tôi đang suy nghĩ về các tình huống như loại bỏ các mục nhập dữ liệu khỏi bộ dữ liệu của bạn do kiểm soát chất lượng hoặc thêm dữ liệu bổ sung vào các bộ dữ liệu hiện có.
Thomas Arildsen

2
HDF5 có thể sẽ không khác biệt lắm, nhưng bạn phải tự hỏi điều gì quan trọng hơn với bạn: kích thước của repo của bạn hoặc các tính năng mà HDF5 cung cấp cho bạn. Có lẽ một câu hỏi tốt hơn sẽ là "Cách tốt nhất để lưu trữ dữ liệu thô cung cấp lịch sử phiên bản và các tính năng xuất xứ là gì?"
Bill Barth

Câu trả lời:


9

Bạn sẽ nhận được câu trả lời tốt hơn nhiều nếu bạn cung cấp thêm một vài chi tiết kỹ thuật về loại dữ liệu bạn đang cố gắng đặt dưới sự kiểm soát phiên bản, cách bạn muốn lưu trữ các phiên bản dữ liệu khác nhau, thành phần nào có thể thay đổi và những thành phần nào không, và liệu bạn có thực sự có lịch sử giống như cây (các nhánh, hợp nhất) hay không.

Các tệp HDF5 không phù hợp để kiểm soát phiên bản dựa trên diff theo git.

git sử dụng cơ sở dữ liệu dựa trên hàm băm dưới mui xe, vì vậy có thể lưu trữ hàm băm của tệp dữ liệu HDF5 của bạn mà không thực sự lưu trữ tệp. Ba dự án, git-fat , git-annexgit-media , đơn giản hóa rất nhiều quá trình này cho bạn. Tôi sẽ đề nghị sử dụng phương pháp này nếu bạn có khối dữ liệu lớn, hoàn toàn độc lập mà bạn muốn phiên bản rõ ràng.

Nếu bạn có thể tách lưu trữ dữ liệu của mình thành các vùng không biến động và dễ bay hơi, điều này sẽ cải thiện đáng kể hiệu quả tương tác của bạn với cơ sở dữ liệu kiểm soát phiên bản. Bạn cũng có thể muốn xem xét rõ ràng bằng cách sử dụng cơ sở dữ liệu cho dữ liệu của mình nếu bạn không cần các tính năng DVCS mà git cung cấp.


Bạn cũng có thể kiểm soát phiên bản cơ sở dữ liệu, nếu đó là những gì bạn muốn làm, bằng phiên bản kiểm soát lược đồ, đưa cơ sở dữ liệu vào tệp văn bản và phiên bản kiểm soát kết quả (ví dụ: sử dụng git). Xem stackoverflow.com/questions/846659/ cấp để biết chi tiết.
Geoff Oxberry

cũng có git-annex
Memming 29/12/13

3

Tôi đoán điều tôi muốn nói là: các tệp HDF5 phù hợp với sự khác biệt dựa trên dòng hay git sẽ phải coi HDF5 là một nhị phân lớn và lưu trữ toàn bộ bản sao cho mỗi lần sửa đổi?

Câu trả lời chính xác cho câu hỏi này là git sẽ không xử lý các tệp HDF5 một cách hiệu quả.

Để biết thêm câu trả lời hữu ích về kiểm soát phiên bản cho các dự án có một số tệp nhị phân, hãy xem câu hỏi stackoverflow này: /programming/540535/managing-large-binary-files-with-git


3

Như những người khác đã nói, sẽ dễ dàng hơn để đưa ra các đề xuất hữu ích nếu bạn mô tả mục tiêu tổng thể của mình thay vì một điểm kỹ thuật chính xác. Đây là một gợi ý nữa có thể giúp bạn, tùy thuộc vào mục tiêu của bạn là gì.

Dự án ActivePapers ( http://www.activeersky.org/ ) cung cấp một hệ thống quản lý dữ liệu và mã trên đầu trang của HDF5. ActivePaper là một tệp HDF5 chứa các bộ dữ liệu VÀ mã hoạt động trên chúng, với siêu dữ liệu theo dõi đoạn mã nào được tính toán tập dữ liệu nào và sử dụng dữ liệu đầu vào nào. Kết hợp với kiểm soát phiên bản trên mã nguồn và / hoặc kiểm soát phiên bản trên toàn bộ tệp HDF5 (sử dụng các công cụ như git-annex, được đề cập trong một câu trả lời khác), ActivePapers có thể được sử dụng để tính toán phiên bản thay vì các tệp hoặc bộ dữ liệu bị cô lập.

Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của ActivePapers.


1
Tôi hiện không làm việc về một vấn đề cụ thể, nhưng tôi đã tưởng tượng một số tập dữ liệu mà thỉnh thoảng bạn có thể thêm dữ liệu mới. Với mỗi lần bổ sung, bạn có thể phải lưu trữ toàn bộ bản sao của toàn bộ tập dữ liệu, có thể rất lớn, trong khi về nguyên tắc, chỉ cần lưu trữ "khác biệt" chứa dữ liệu đã thêm.
Thomas Arildsen

1
Tôi không biết về bất kỳ công cụ nào để thực hiện các thao tác kiểu diff / merge trên dữ liệu nhị phân, HDF5 hay nói cách khác. Một ý tưởng hấp dẫn để thực hiện điều này với ActivePapers là áp dụng thay đổi bằng cách đưa "tập lệnh vá lỗi" vào tệp cùng với dữ liệu gốc. Sau đó, bạn có thể theo dõi sự phát triển của dữ liệu dưới dạng một chuỗi các bản vá được áp dụng. Một lợi thế của khung ActivePapers là bạn có thể thực hiện các bản vá trong một tệp riêng biệt tham chiếu bản gốc. Điều đó có nghĩa là bạn có thể xuất bản dữ liệu và xuất bản các sửa đổi (thành dữ liệu của riêng bạn và của người khác) sau đó, dưới dạng một tác phẩm riêng biệt.
khinsen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.