3. Mai 2018 von Annegret Junker
Technische Dinge für nichttechnische Leute (Teil 1)
Ich werde oft darum gebeten, Personen, die beispielsweise über keine Informatikkenntnisse verfügen, sehr technisch komplexe Dinge zu erklären. Aufgrund des fehlenden Kenntnisstandes versuchte ich, bestimmte Grundlagen so zu erklären, dass auch diese Personengruppe in der Lage ist, die technischen Prinzipien, Verbindungen und Abhängigkeiten zu erkennen. Im ersten Teil meiner Blog-Serie „Technische Dinge für nichttechnische Leute“ möchte ich euch verschiedene Datenformate näher erklären.
Datenstrukturen - was ist damit gemeint?
Daten werden normalerweise in einer mehr oder weniger strukturierten Weise gespeichert. Durch folgendes Beispiel wird das Ganze sicherlich etwas einfacher zu verstehen sein: Nehmen wir an, ihr möchtet einen Onlineshop für Bekleidung eröffnen. Euer Shop ist so aufgebaut, dass der User in der Lage ist, ein Nutzerprofil anzulegen, wodurch Spezialangebote für gesamte Ausstattungen automatisch erstellt werden können. Konkret heißt das, die Besucher eures Shops können in ihrem Profil beispielsweise ihre Lieblingsfarbe, ihre Lieblingshosen- und Hemdenstile oder auch ihre bevorzugten Schuhe definieren. Strukturiert dargestellt würde ein solches Benutzerprofil wie folgt aussehen:
Diese Struktur benötigt ihr, um die entsprechenden Informationen von einem Dienst zum anderen zu übertragen – etwa von einem Konfigurationsdienst zum Shop oder von einem Backend-Dienst zum Web oder Mobile Client. Vereinfacht könnt ihr euch die oben gezeigte Struktur besser als Excel-Tabelle vorstellen. Diese würde dann folgendermaßen aussehen:
Wie ihr sehen könnt, benötigt ihr immer den Namen eines Items und dessen Wert. Das Ganze wird „Schlüssel Werte Datenbank“ (Key Value Pairs) genannt. Zugegeben, in unserem Beispiel sehen solche Key Value Pairs nicht wirklich effizient aus und sie würden kaum genutzt werden. Habt ihr aber Settings, die sich selten ändern und normalerweise nur an einzelnen Punkten geändert werden, machen Key Value Pairs Sinn.
Allerdings könnt ihr den Inhalt nur korrekt interpretieren, wenn die Einrückungen korrekt sind. Ansonsten würde der User eures Onlineshops vielleicht ein Lederhemd anstatt eines Baumwoll-Shirts bekommen. Dementsprechend ist es sinnvoller, die gesamte Information zu übertragen und sie durch Einrückungen zu strukturieren. Dazu könnt ihr verschiedene Formate nutzen, von denen ich euch nun drei näher vorstellen möchte.
YAML, JASON und XML
Das Format YAML – Kurzform von „YAML Ain’t Markup Language“ – ist eine vereinfachte Auszeichnungssprache (markup language) zur Datenserialisierung. YAML geht davon aus, dass sich jede beliebige Datenstruktur nur mit assoziativen Listen, Listen und Einzelwerten darstellen lässt. Daher ist dieses Konzept wesentlich leichter von Menschen zu lesen und zu schreiben als beispielsweise XML. Zudem wird die Weiterverarbeitung der Daten vereinfacht, da die meisten Sprachen solche Konstrukte bereits integriert haben.
Für die Darstellung von hierarchischen Strukturen verwendet YAML Einrückungen:
Das folgende Format wird JSON – Java Script Object Notation – genannt:
Dieses Format wird bei mobilen und Web-Applikationen zum Datenaustausch zwischen dem Client (zum Beispiel einer App) und der Server-Seite (zum Beispiel einer Cloud) genutzt. JSON ist weit verbreitet und wird speziell für Microservices und REST-Schnittstellen benutzt.
Wie ihr sehen könnt, haben wir auch hier Key Value Pairs, die „irgendwo“ hingehören. Dieses „Hingehören“ wird durch Einrückungen und geschweifte Klammern ausgedrückt.
Das Ende eines Eintrags kann durch ein Komma oder durch eine geschweifte Klammer beschrieben werden. Es besteht die Gefahr, dass inhaltliche Fehler entstehen, auch wenn die Daten syntaktisch korrekt notiert sind. Um sicher zu sein, wo ein Objekt endet, benötigt ihr also einen Key am Anfang sowie am Ende.
Das nächste Format, das ich euch vorstellen möchte, wird XML – Extended Markup Language – genannt:
Zwar ist diese Auszeichnungssprache sehr verlässlich, allerdings besteht dabei ein größerer Speicherbedarf. Zudem habt ihr mit XML eine schlechtere Performance bei der Datenhaltung. Daher sind Schnittstellen, die XML benutzen – etwa SOAP – normalerweise „langsam“ und können nicht so schnell angepasst werden. Allerdings bietet der Einsatz von XML eine leicht durchschaubare Auszeichnungssprache, die von vielen Tools und Standards genutzt werden kann.
Fazit
Wie ihr gesehen habt, gibt es durchaus Unterschiede zwischen den drei genannten Auszeichnungssprachen. YAML ist sehr leicht zu lesen und zu editieren, JSON ist dank der einfachen Schreibweise leicht verständlich und XML punktet vor allem durch seine Vielseitigkeit. Natürlich gibt es zu diesen drei Formaten noch viel mehr zu wissen. Ich hoffe allerdings, dass ich euch mit meinem Beitrag die groben Unterschiede einfach und verständlich näher bringen konnte.
In meinem nächsten Blog-Beitrag werde ich mich übrigens mit Microservices und REST-Schnittstellen befassen. Es bleibt also spannend.
Ihr möchtet mehr zu spannenden Themen rund um Software, Entwicklung oder auch aus Projekten erfahren? Dann werft doch einen Blick in unsere anderen Blog-Beiträge.