Auswertung HDF5: Welche Einschränkungen / Funktionen bietet HDF5 für die Datenmodellierung zur Verfügung stellen?

StackOverflow https://stackoverflow.com/questions/547195

Frage

Wir sind Technologien bei der Bewertung, dass wir Daten verwenden werden, zu speichern, die wir bei der Analyse von C / C ++ Code zu sammeln. Im Fall von C ++, kann die Datenmenge relativ groß sein, ~ 20 MB pro TU.

Nach dem Lesen der folgenden SO Antwort es hat mich der Meinung, dass HDF5 könnte verwenden eine geeignete Technologie für uns sein. Ich frage mich, ob die Leute hier könnten mir ein paar ersten Fragen helfen zu beantworten, die ich habe:

  1. Performance. Die allgemeine Verwendung für die Daten werden einmal schreiben und „mehrere“ Zeiten, ähnlich wie die Lebensdauer einer ‚.o‘ Datei erzeugt von einem Compiler lesen. Wie funktioniert HDF5 vergleichen gegen so etwas wie eine SQLite-DB? Ist das überhaupt ein vernünftiger Vergleich zu machen?

  2. Im Laufe der Zeit werden wir auf die Informationen hinzufügen, die wir speichern, sondern wollen eine völlig neue Reihe von „Lesern“ nicht unbedingt neu zu verteilen, ein neues Format zu unterstützen. in die Bedienungsanleitung nach dem Lesen Ich verstehe, dass HDF5 in XML oder ein DB ähnlich ist, dass Informationen mit einem Tag / Spalte und so ein Werkzeug, eine ältere Struktur lesen gebaut zugeordnet sind, wird einfach ignoriert die Felder, die es nicht geht? Ist mein Verständnis auf das richtig?

  3. Ein erheblicher Teil der Informationen, die wir ein Baum Art von Struktur schreiben möchten, werden sein: scope Hierarchie, Typhierarchie usw. Im Idealfall würden wir Bereiche modellieren Eltern haben, Kinder usw. Ist es möglich, haben ein HDF5 Objekt „Punkt“ zu einem anderen? Wenn nicht, ist es eine Standard-Technik, um dieses Problem mit HDF5 zu lösen? Oder, wie es in einem DB erforderlich ist, haben wir einen eindeutigen Schlüssel benötigen, das wäre „link“ ein Objekt zum anderes mit geeigneten Lookups, wenn für die Daten gesucht?

Vielen Dank!

War es hilfreich?

Lösung

  

Wie HDF5 vergleichen gegen so etwas wie eine SQLite-DB?   Ist das überhaupt ein vernünftiger Vergleich zu machen?

Eine Art ähnlich, aber nicht wirklich. Sie sind beide strukturierte Dateien. SQLite verfügt über Funktionen, Datenbankabfragen mit SQL zu unterstützen. HDF5 verfügt über Funktionen große wissenschaftliche Datensätze zu unterstützen.

Sie sind beide bedeuten hohe Leistung zu sein.

  

Im Laufe der Zeit werden wir auf die Informationen hinzufügen, die wir speichern, aber nicht unbedingt wollen eine völlig neue Reihe von „Leser“ neu zu verteilen, ein neues Format zu unterstützen.

Wenn Sie Daten in strukturierter Form zu speichern, werden die Datentypen dieser Strukturen auch in der HDF5-Datei gespeichert. Ich bin ein bisschen rostig, wie das funktioniert (zB wenn es angeborene Abwärtskompatibilität enthält), aber ich weiß, dass, wenn Sie entwerfen Sie Ihre „Leser“ richtig sollte es in der Lage sein, Arten zu behandeln, die in der Zukunft geändert werden.

  

Ist es möglich, ein HDF5 Objekt „Punkt“ zu einem anderen haben?

Auf jeden Fall! Sie wollen Attribute. Jedes Objekt hat einen oder mehrere Strings den Weg beschreiben, das Objekt zu erreichen. HDF5 Gruppen Ordner / Verzeichnisse analog sind, mit der Ausnahme, dass Ordner / Verzeichnisse sind hierarchisch = ein einzigartiger Weg jeder Lage des einen beschreibt (in Dateisystemen w / o harte Links zumindest), während die Gruppen einen gerichteten Graphen bilden, die Zyklen umfassen kann. Ich bin nicht sicher, ob Sie einen „Zeiger“ auf ein Objekt direkt als Attribut speichern können, aber Sie können einen absoluten / relativen Pfad als String-Attribut immer speichern. (Oder irgendwo anders als Zeichenfolge;. Sie könnte Lookup-Tabellen in Hülle und Fülle haben, wenn man wollte)

Andere Tipps

Wir produzieren HDF5 Daten auf mein Projekt, aber ich nicht mit ihm direkt in der Regel beschäftigen. Ich kann an den ersten beiden Fragen einen Stich nehmen:

  1. Wir verwenden eine einmal beschreibbare, scheint oft Modell und das Format lesen, diese gut zu handhaben. Ich weiß, ein Projekt, das sowohl zu einer Oracle Datenbank und HDF5 schreiben verwendet. Schließlich nahmen sie die Oracle-Ausgabe seit Performance gelitten und niemand wurde mit. Offensichtlich ist SQLite nicht Oracle, aber das HDF5 Format war besser geeignet für die Aufgabe. Auf der Grundlage dieses einen Datenpunkt, besser kann ein RDBMS für mehrere Einfügungen und Aktualisierungen abgestimmt.

  2. Die Leser unserer Kunden sind robust verwenden, wenn wir neue Datentypen hinzufügen. Einige der Änderungen sind zu erwarten, aber wir müssen nicht darum kümmern, was zu brechen, wenn mehr Datenfelder hinzufügen. Unsere DBA schrieb vor kurzem ein Python-Programm HDF5 Daten und füllen Sie KMZ-Dateien für die Visualisierung in Google Earth zu lesen. Da es sich um ein Projekt war er Python lernen verwendet, würde ich sagen, dass es nicht schwer ist, die Leser zu bauen.

Auf der dritten Frage, ich werde Bogen auf Jason S Vorgesetzter Wissen .

Ich würde sagen, HDF5 eine völlig vernünftige Wahl ist, besonders wenn man in sie bereits interessiert sind oder planen, etwas für die wissenschaftliche Gemeinschaft zu erzeugen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top