Ocena HDF5: jakie ograniczenia / funkcje zapewnia HDF5 dla danych modelowania?

Zajmujemy się oceną technologii, których będziemy używać do przechowywania danych, które zbieramy podczas analizy kodu C/C++. W przypadku C++ ilość danych może być stosunkowo duża, ~20MB na TU.

Po przeczytaniu następującej odpowiedzi więc uznałem, że HDF5 może być odpowiednią technologią do użycia. Zastanawiałem się, czy ludzie tutaj mogliby mi pomóc odpowiedzieć na kilka początkowych pytań, które mam:

  1. Wydajność. Ogólne zastosowanie dla dane będą zapisywane raz i odczytywane "kilka" razy, podobnie jak czas życia a '.o ' plik wygenerowany przez kompilator. Jak HDF5 porównuje się z używaniem czegoś takiego jak SQLite DB? Czy to w ogóle rozsądne porównanie?

  2. Z czasem dodamy do przechowywanych informacji, ale niekoniecznie będziemy chcieli ponownie rozpowszechniać zupełnie nowy zestaw "czytników", aby wspierać nowy format. Po przeczytaniu user guide rozumiem, że HDF5 jest podobny do XML lub DB, w ta informacja jest powiązana ze znacznikiem / kolumną, a więc narzędzie zbudowane do odczytu starszej struktury po prostu zignoruje pola, których nie dotyczy? Czy moje zrozumienie tego jest poprawne?

  3. Znaczącym fragmentem informacji, które chcemy spisać, będzie struktura typu drzewa: hierarchia zakresu, hierarchia typów itp. Najlepiej modelowalibyśmy lunety jako posiadające rodziców, dzieci itp. Czy można mieć jeden obiekt HDF5 "punkt" do drugiego? Jeśli nie, to czy istnieje standardowa technika rozwiązania tego problemu przy użyciu HDF5? Lub, jak jest to wymagane w DB, czy potrzebujemy unikalnego klucza, który "połączy" jeden obiekt do drugiego z odpowiednimi wyszukaniami podczas wyszukiwania danych?

Wielkie dzięki!

Author: Community, 2009-02-13

2 answers

Jak HDF5 porównuje się z używaniem czegoś takiego jak SQLite DB? Czy to w ogóle rozsądne porównanie?

Coś podobnego, ale nie do końca. Oba są uporządkowanymi plikami. SQLite posiada funkcje do obsługi zapytań do bazy danych za pomocą SQL. HDF5 posiada funkcje obsługujące duże zbiory danych naukowych.

Oba mają być wysokiej wydajności.

Z czasem dodamy do przechowywanych informacji, ale niekoniecznie będziemy chcieli ponownie rozpowszechniaj zupełnie nowy zestaw "czytników", aby obsługiwać nowy format.

Jeśli przechowujesz dane w ustrukturyzowanej formie, typy danych tych struktur są również przechowywane w pliku HDF5. Jestem trochę zardzewiały, jak to działa (np. jeśli zawiera wrodzoną kompatybilność wsteczną), ale wiem, że jeśli zaprojektujesz swój" Czytnik " poprawnie, powinien być w stanie obsłużyć typy, które zostaną zmienione w przyszłości.

Czy jest możliwe, aby jeden obiekt HDF5 "punktował" do drugiego?

Absolutnie! Będziesz chciał użyć atrybutów . Każdy obiekt ma jeden lub więcej łańcuchów opisujących ścieżkę do osiągnięcia tego obiektu. Grupy HDF5 są analogiczne do folderów/katalogów, z tym wyjątkiem, że foldery/katalogi są hierarchiczne = unikalna ścieżka opisuje lokalizację każdego z nich (przynajmniej w systemach plików bez twardych linków), podczas gdy grupy tworzą ukierunkowany wykres, który może zawierać cykle. Nie jestem pewien, czy można zapisać "wskaźnik" do obiektu bezpośrednio jako atrybut, ale zawsze możesz zapisać ścieżkę bezwzględną / względną jako atrybut Łańcuchowy. (lub gdziekolwiek indziej jako ciąg znaków; możesz mieć tabele wyszukiwania, jeśli chcesz.)
 22
Author: Jason S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-13 19:07:35

Produkujemy dane HDF5 o moim projekcie, ale zwykle nie zajmuję się tym bezpośrednio. Mogę zadawać pierwsze dwa pytania:

  1. Używamy modelu zapisu raz, odczytu wiele razy i format zdaje się to dobrze obsługiwać. Znam projekt, który kiedyś zapisywał zarówno do bazy danych Oracle , jak i HDF5. Ostatecznie usunęli dane wyjściowe Oracle, ponieważ wydajność spadła i nikt z nich nie korzystał. Oczywiście SQLite nie jest Oracle, ale format HDF5 lepiej nadawał się do zadanie. W oparciu o ten jeden punkt danych, RDBMS może być lepiej dostrojony do wielu wstawek i aktualizacji.

  2. Czytniki, z których korzystają nasi klienci, są niezawodne, gdy dodajemy nowe typy danych. Niektóre zmiany są przewidywane, ale nie musimy się martwić o złamanie rzeczy podczas dodawania większej liczby pól danych. Nasz DBA napisał niedawno Pythonowy program do odczytu danych HDF5 i wypełniania plików KMZ do wizualizacji w Google Earth. Ponieważ był to projekt, w którym uczył się Pythona, powiedziałbym, że nie jest trudno buduj czytniki.

W trzecim pytaniu pokłonię się najwyższej wiedzy Jasona S .

Powiedziałbym, że HDF5 jest całkowicie rozsądnym wyborem, zwłaszcza jeśli jesteś już nim zainteresowany lub planujesz wyprodukować coś dla społeczności naukowej.

 9
Author: Jon Ericson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:00:16