Định dạng dữ liệu phân cấp. Những lợi thế so với các định dạng thay thế là gì?


28

Những lợi ích chính từ việc lưu trữ dữ liệu trong HDF là gì? Và các nhiệm vụ khoa học dữ liệu chính trong đó HDF thực sự phù hợp và hữu ích là gì?

Câu trả lời:


25

Có lẽ một cách tốt để diễn giải câu hỏi là, những lợi thế so với các định dạng thay thế là gì?

Các lựa chọn thay thế chính là, tôi nghĩ: cơ sở dữ liệu, tệp văn bản hoặc định dạng nhị phân / đóng gói khác.

Các tùy chọn cơ sở dữ liệu cần xem xét có thể là một cửa hàng cột hoặc NoQuery hoặc cho các bộ dữ liệu nhỏ độc lập SQLite. Ưu điểm chính của cơ sở dữ liệu là khả năng làm việc với dữ liệu lớn hơn nhiều so với bộ nhớ, có quyền truy cập ngẫu nhiên hoặc được lập chỉ mục và nhanh chóng thêm / nối / sửa đổi dữ liệu. Ưu điểm chính * dis * là nó chậm hơn nhiều so với HDF, đối với các vấn đề trong đó toàn bộ dữ liệu cần phải được đọc và xử lý. Một nhược điểm khác là, ngoại trừ các cơ sở dữ liệu kiểu nhúng như SQLite, cơ sở dữ liệu là một hệ thống (yêu cầu quản trị, thiết lập, bảo trì, v.v.) chứ không phải là một kho lưu trữ dữ liệu độc lập đơn giản.

Các tùy chọn định dạng tệp văn bản là XML / JSON / CSV. Chúng là đa nền tảng / ngôn ngữ / bộ công cụ và là một định dạng lưu trữ tốt do khả năng tự mô tả (hoặc rõ ràng :). Nếu không nén, chúng rất lớn (10 x 100 lần HDF), nhưng nếu được nén, chúng có thể khá hiệu quả về không gian (XML được nén tương đương với HDF). Nhược điểm chính ở đây là tốc độ một lần nữa: phân tích văn bản nhiều, chậm hơn nhiều so với HDF.

Các định dạng nhị phân khác (tệp npy / npz, tệp blz blaze, bộ đệm giao thức, Avro, ...) có các thuộc tính rất giống với HDF, ngoại trừ chúng ít được hỗ trợ rộng rãi (có thể chỉ giới hạn ở một nền tảng: numpy) và có thể có những hạn chế cụ thể khác. Họ thường không cung cấp một lợi thế hấp dẫn.

HDF là một bổ sung tốt cho cơ sở dữ liệu, có thể có ý nghĩa khi chạy một truy vấn để tạo ra một bộ dữ liệu có kích thước bộ nhớ và sau đó lưu nó vào HDF nếu cùng một dữ liệu sẽ được sử dụng nhiều lần. Nếu bạn có một tập dữ liệu đã được sửa và thường được xử lý toàn bộ, lưu trữ nó dưới dạng tập hợp các tệp HDF có kích thước phù hợp là một lựa chọn không tồi. Nếu bạn có một bộ dữ liệu được cập nhật thường xuyên, việc sắp xếp một số trong số đó dưới dạng tệp HDF định kỳ vẫn có thể hữu ích.

Tóm lại, HDF là một định dạng tốt cho dữ liệu thường được đọc (hoặc viết) nói chung; đó là định dạng trao đổi lingua franca hoặc phổ biến / ưa thích cho nhiều ứng dụng do hỗ trợ và khả năng tương thích rộng rãi, là định dạng lưu trữ và rất nhanh.

PS Để cung cấp cho bối cảnh thực tế này, kinh nghiệm gần đây nhất của tôi khi so sánh HDF với các lựa chọn thay thế, một bộ dữ liệu nhỏ (ít hơn nhiều so với bộ nhớ) đã mất 2 giây để đọc dưới dạng HDF (và hầu hết trong số này có lẽ là chi phí từ Pandas); ~ 1 phút để đọc từ JSON; và 1 giờ để ghi vào cơ sở dữ liệu. Chắc chắn cơ sở dữ liệu ghi có thể được tăng tốc, nhưng tốt hơn là bạn nên có một DBA tốt! Đây là cách nó hoạt động ra khỏi hộp.


Chúng tôi có thể nói rằng HDF một định dạng lưu trữ cột không? Tôi không thành thạo quá nhiều trong số này, nhưng các mẫu HDF tôi đã làm việc dường như trình bày các tính năng bên ngoài của tổng hợp dữ liệu dựa trên cột.
Félix Gagnon-Grenier

Cả cơ sở dữ liệu và HDF đều cung cấp "khả năng làm việc với dữ liệu lớn hơn bộ nhớ", vì vậy tôi không nghĩ chính xác khi nói rằng đây là một lợi thế của cơ sở dữ liệu so với HDF vì (cái mà họ gọi là 'một phần i / o' là một tính năng cốt lõi davis.lbl.gov/Manuals/HDF5-1.8.7/UG/12_Dataspaces.html
David LeBauer

11

Một lợi ích là hỗ trợ rộng rãi - C, Java, Perl, Python và R đều có các ràng buộc HDF5.

Một lợi ích khác là tốc độ. Tôi chưa bao giờ thấy nó được điểm chuẩn, nhưng HDF được cho là nhanh hơn cơ sở dữ liệu SQL.

Tôi hiểu rằng nó rất tốt khi được sử dụng với cả bộ dữ liệu khoa học lớn và dữ liệu chuỗi thời gian - giám sát mạng, theo dõi sử dụng, v.v.

Tôi không tin rằng có giới hạn kích thước cho các tệp HDF (mặc dù giới hạn hệ điều hành vẫn sẽ được áp dụng.


5
Từ kinh nghiệm cá nhân tôi muốn thêm rằng tài liệu / nhãn tích hợp là rất lớn. Bây giờ tất cả các bộ dữ liệu của tôi có thể được lưu trữ với các bản ghi rõ ràng về nơi chúng đến, tần suất lấy mẫu, sự bất thường, v.v.
gallamine

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.