Hierarchiczny format danych. Jakie są zalety w porównaniu do alternatywnych formatów?

28

Jakie są główne korzyści z przechowywania danych w HDF? A jakie są główne zadania związane z nauką danych, w których HDF jest naprawdę odpowiedni i przydatny?

IharS
źródło

Odpowiedzi:

25

Być może dobrym sposobem na sparafrazowanie pytania jest, jakie są zalety w porównaniu do alternatywnych formatów?

Myślę, że głównymi alternatywami są baza danych, pliki tekstowe lub inny format spakowany / binarny.

Opcje bazy danych do rozważenia to prawdopodobnie magazyn kolumnowy lub NoSQL, lub małe samodzielne zestawy danych SQLite. Główną zaletą bazy danych jest możliwość pracy z danymi znacznie większymi niż pamięć, dostęp losowy lub indeksowany oraz szybkie dodawanie / dołączanie / modyfikowanie danych. Główną zaletą * dis * jest to, że jest on znacznie wolniejszy niż HDF, w przypadku problemów, w których cały zestaw danych musi zostać wczytany i przetworzony. Kolejną wadą jest to, że z wyjątkiem baz danych w stylu osadzonym, takich jak SQLite, baza danych jest systemem (wymagającym podziwu, konfiguracji, konserwacji itp.), A nie prostym, niezależnym magazynem danych.

Opcje formatu pliku tekstowego to XML / JSON / CSV. Są one wieloplatformowe / język / zestaw narzędzi i są dobrym formatem archiwalnym ze względu na możliwość opisywania się (lub oczywiste :). Jeśli nieskompresowane, są ogromne (10x-100x HDF), ale jeśli są skompresowane, mogą być dość wydajne pod względem przestrzeni (skompresowany XML jest mniej więcej taki sam jak HDF). Główną wadą jest tutaj szybkość: parsowanie tekstu jest znacznie, dużo wolniejsze niż HDF.

Inne formaty binarne (pliki numy npy / npz, pliki blz blaze, bufory protokołów, Avro, ...) mają bardzo podobne właściwości do HDF, z tym że są mniej obsługiwane (mogą być ograniczone tylko do jednej platformy: numpy) i mogą mają określone inne ograniczenia. Zazwyczaj nie oferują one istotnych korzyści.

HDF stanowi dobre uzupełnienie baz danych, może być sensowne uruchomienie zapytania w celu utworzenia zbioru danych o wielkości mniej więcej pamięci, a następnie buforowanie go w HDF, jeśli te same dane zostaną użyte więcej niż jeden raz. Jeśli masz zestaw danych, który jest stały i zwykle przetwarzany jako całość, przechowywanie go jako zbioru plików HDF o odpowiednim rozmiarze nie jest złą opcją. Jeśli masz często aktualizowany zestaw danych, okresowe umieszczanie niektórych z nich jako plików HDF może być nadal pomocne.

Podsumowując, HDF jest dobrym formatem dla danych, które są odczytywane (lub zapisywane) zazwyczaj jako całość; jest to lingua franca lub wspólny / preferowany format wymiany dla wielu aplikacji ze względu na szerokie wsparcie i kompatybilność, przyzwoity jako format archiwalny i bardzo szybki.

PS Aby nadać temu praktyczny kontekst, moje ostatnie doświadczenie w porównywaniu HDF z alternatywami, pewien mały (znacznie mniejszy niż pamięć) zestaw danych potrzebował 2 sekund na odczytanie jako HDF (a większość z nich to prawdopodobnie narzut z Pandas); ~ 1 minuta do odczytania z JSON; i 1 godzina na zapis do bazy danych. Na pewno można przyspieszyć zapis w bazie danych, ale lepiej mieć dobry DBA! Tak to działa po wyjęciu z pudełka.

Alex I.
źródło
Czy możemy powiedzieć, że HDF to kolumnowy format pamięci? Nie jestem zbyt biegły w żadnym z nich, ale próbki HDF, z którymi pracowałem, wydają się prezentować zewnętrzne cechy agregacji danych na podstawie kolumn.
Félix Gagnon-Grenier
Zarówno bazy danych, jak i HDF zapewniają „zdolność do pracy z danymi znacznie większymi niż pamięć”, więc nie sądzę, aby słuszne było stwierdzenie, że jest to przewaga baz danych nad HDF, ponieważ (to, co nazywają „częściowym we / wy” to podstawowa funkcja davis.lbl.gov/Manuals/HDF5-1.8.7/UG/12_Dataspaces.html
David LeBauer
11

Jedną z korzyści jest szerokie wsparcie - C, Java, Perl, Python i R mają wszystkie powiązania HDF5.

Kolejną zaletą jest szybkość. Nigdy nie widziałem go w testach porównawczych, ale HDF ma być szybszy niż bazy danych SQL.

Rozumiem, że jest bardzo dobry, gdy jest używany zarówno z dużymi zestawami danych naukowych, jak i szeregami czasowymi - monitorowanie sieci, śledzenie użycia itp.

Nie wierzę, że istnieje ograniczenie rozmiaru plików HDF (chociaż nadal obowiązywałyby ograniczenia systemu operacyjnego).

Steve Kallestad
źródło
5
Z własnego doświadczenia dodam, że wbudowana dokumentacja / etykieta jest ogromna. Teraz wszystkie moje zbiory danych mogą być przechowywane z wyraźnym zapisem, skąd pochodzą, częstotliwości próbkowania, anomalii itp.
Gallamine