Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ss2020:29:index

29. Datenformate: beständig und plattformunabhängig

Themen
Kriterien für Datenformate in der Wissenschaft
Beispiele plattform- und sprachunabhängiger Formate
Zum Umgang mit Daten und Metadaten
Bedeutung im Gesamtkontext einer Auswertungssoftware
Folien
PDF
Glossar
PDF
Video
MP4


Webcast

Hinweis: Der Webcast wurde mit Tiny Webcasts for Lecture(r)s erstellt.

Zentrale Aspekte

  • Formate betreffen nicht nur Roh- und verarbeitete Daten,
    sondern auch Metadaten, Dokumentation, Abbildungen.
  • Datenformate sollten über Jahrzehnte lesbar,
    plattformunabhängig, quelloffen und dokumentiert sein.
  • Daten über Jahrzehnte lesbar zu archivieren,
    ist nicht nur eine Frage der Formate, sondern auch der Organisation.
  • Rohdaten sollten immer (im Originalforma) archiviert
    und vor (ungewollter) Veränderung geschützt werden.
  • Das konkrete Datenformat oder die Art der Datenlagerung
    ist für ein System zur Datenverarbeitung irrelevant.

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.

  • Warum ist das Thema „Datenformate“ für Wissenschaftler relevant, auch wenn sie nicht selbst aktiv Auswertungssoftware programmieren?
  • Warum sind Textformate in vielen Fällen Binärformaten vorzuziehen?
  • Wie lässt sich relativ einfach und elegant überprüfen, ob sich ein Datensatz (bzw. eine beliebige Datei) verändert hat? Warum ist das im Kontext der Datenarchivierung von großer Bedeutung?
  • Welche Arten von Daten können im Gesamtkontext wissenschaftlicher Datenverarbeitung anfallen, die man langfristig archivieren wollen würde?
  • Welche Bedeutung haben Datenformate im Gesamtkontext eines Systems zur Datenverarbeitung und -Analyse?
  • Wie können Sie den Zugriff auf Datensätze vereinheitlichen und gleichzeitig unabhängig vom konkreten Ablageort gestalten?
  • Welche Anwendung des Single-Responsibility- und des Open-Closed-Prinzips bei der Entwicklung von Datenformaten, die gleichzeitig numerische und Metadaten enthalten, können Sie sich vorstellen?

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Viele Autoren, die sich mit Datenformaten beschäftigen, liefern ein Plädoyer für die Nutzung von reinem Text für die Datenablage und Kommunikation. Vgl. dazu Kapitel 3 in [Hunt, 1999Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston], Kapitel 8 in [Kernighan, 1999Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston] und Kapitel 5 in [Raymond, 2004Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston]. Letzterer liefert darüber hinaus viele sehr gute (und praxisrelevante) Hinweise zur Erstellung eigener textbasierter Formate und diskutiert diverse bekannte Textformate wie DSV/CSV, XML, Windows-INI-Dateien etc.

Die von vielen modernen Programmiersprachen und Anwendungen verwendete Variante, Gleitkommazahlen darzustellen, entspricht der Norm IEEE 754 (ANSI/IEEE Std. 754-1985). Jede Zahl wird durch 64 Bit (8 Byte) repräsentiert, was auch als „doppelte Genauigkeit“ bezeichnet wird. Ein paar Details zur doppelten Genauigkeit und zur Norm IEEE 754 finden sich in der (deutschsprachigen) Wikipedia. Weitere Details und Beispiele, die die generelle Art der Codierung von Gleitkommazahlen beschreiben, finden sich im Buch Numerical Computing with MATLAB von Cleve Moler, dem Gründer von MathWorks (der Firma hinter Matlab). Die entsprechenden Passagen finden sich im ersten Kapitel des Buches.

Eine sehr kurze Einführung in HDF5 aus der Sicht der Experimentalphysik einerseits und Python andererseits liefert Kapitel 9 in [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol]. Spezifisch für HDF5 und seine Verwendung in einem Python-Kontext ist [Collette, 2014Collette, Andrew (2014): Python and HDF5, O'Reilly, Sebastopol].

Eine prägnante Darstellung der Aspekte, die man beim Umgang mit Daten in den Naturwissenschaften beachten sollte, egal ob in der Biologie und Bioinformatik oder ob in der Teilchen- oder Astrophysik, liefert [Hart, 2016Hart, Edmund M.; Barmby, Pauline; LeBauer, David; Michonneau, François; Mount, Sarah; Mulrooney, Patrick; Poisot, Timothée; Woo, Kara H.; Zimmerman, Naupaka B.; Hollister, Jeffrey W. (2016): Ten simple rules for digital data storage, PLoS Computational Biology 12:e1005097].

Für die Bedeutung im Gesamtkontext einer Auswertungssoftware und insbesondere für Details zum Dependency-Inversion-Prinzip und der „sauberen Architektur“ vgl. [Martin, 2018Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston].

  • Collette, Andrew (2014): Python and HDF5, O'Reilly, Sebastopol
  • Hart, Edmund M.; Barmby, Pauline; LeBauer, David; Michonneau, François; Mount, Sarah; Mulrooney, Patrick; Poisot, Timothée; Woo, Kara H.; Zimmerman, Naupaka B.; Hollister, Jeffrey W. (2016): Ten simple rules for digital data storage, PLoS Computational Biology 12:e1005097
  • Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston
  • Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston
  • Martin, Robert C. (2018): Clean Architecture. A Craftman's Guide to Software Structure and Design, Prentice Hall, Boston
  • Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston
  • Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol

Umgang mit Forschungsdaten

Die Allianz der deutschen Wissenschaftsorganisationen hat am 24. Juni 2010 Grundsätze zum Umgang mit Forschungsdaten verabschiedet. Darüber hinaus gibt es von der Deutschen Forschungsgemeinschaft (DFG) Leitlinien zum Umgang mit Forschungsdaten.

de/lehre/programmierkonzepte/ss2020/29/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1