Definition „YAML Ain't Markup Language“

Was ist YAML?

| Autor / Redakteur: LineFeed / Stephan Augsten

Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind.
Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind. (© yaml.org)

Markup Languages wie YAML oder HTML geben Daten eine Struktur. YAML dient aber wie JSON vor allem der Datenspeicherung in menschenlesbarer Form. Von XML unterscheidet sich YAML durch den leichtgewichtigen Ansatz ohne SGML-Kompatibilität.

Ursprünglich stand YAML für „Yet Another Markup Language“, bereits seit 2002 verbirgt sich dahinter allerdings das rekursive Akronym „YAML Ain't Markup Language“. Somit definiert sich YAML als eine Auszeichnungssprache, die keine ist, was letztlich auf die Zielsetzung hinweist.

YAML will ein Format für die Serialisierung von Daten zur Verfügung stellen. Der aus dem Druckwesen stammende Begriff „Markup“ impliziert ein Format für eine sichtbare Textauszeichnung, wie es beispielsweise HTML bietet. Auch bei anderen Vertretern der Gattung überlappen sich beide Anwendungsgebiete.

Es existieren durchaus Lösungen, die gezielt beide Bereiche abdecken. So kann beispielsweise XML prinzipiell sowohl HTML als auch YAML ersetzen. Das Hauptargument für YAML ist die Schlankheit der Lösung, die auch Beschränkungen aufhebt, die sich bei XML aus dem breitgefächerten Anwendungsspektrum respektive dem Ziel ergeben, die Kompatibilität zu SGML zu erhalten. Der Hauptkonkurrent von YAML ist allerdings nicht XML sondern JSON.

YAML oder JSON?

Die „JavaScript Object Notation“, kurz JSON, ist ein Format für die Serialisierung von Daten, das aus dem Umfeld von Web-Applikationen stammt. Beide Formate bieten daher sehr ähnliche Funktionalitäten. YAML ist seit der Version 1.2 ein Superset von JSON, kann also das andere Format in allen Applikationen direkt ersetzen.

Der Hauptunterschied liegt in der Zielsetzung. Während mittels YAML formatierte Daten nicht nur für Maschinen, sondern auch für Menschen möglichst gut lesbar sein sollen, legt JSON den größten Wert auf die Einfachheit der Anwendung.

Wie funktioniert YAML?

YAML wandelt Daten aus einer programminternen Form so um, dass sie sich als Textdatei abspeichern lassen. Damit das auch für komplexe Datentypen wie zwei- oder mehrdimensionale Arrays möglich ist, werden die Elemente nacheinander ausgegeben, daher der Name Serialisierung.

Dabei macht YAML die hierarchische Struktur wie die Programmiersprache Python durch Einrückung mit Leerzeichen sichtbar, verwendet aber auch eckige und geschweifte Klammern. YAML erlaubt dabei keine Tabulatoren, weil deren Interpretation nicht eindeutig ist und von verschiedenen Programmen unterschiedlich gehandhabt wird.

Welchem Zweck dient YAML?

Die Serialisierung von Daten lässt sich einerseits nutzen, um einen Programmzustand über mehrere Programmläufe zu erhalten. In dieser Weise wird YAML häufig für die Speicherung der Laufzeitkonfiguration in Konfigurationsdateien verwendet. Die zweite Hauptanwendung ist die Übertragung von Daten zwischen Computersystemen, die über ein Netzwerk miteinander verbunden sind.

Welche Daten kann YAML verarbeiten?

Nativ unterstützt YAML einen Satz von Datentypen, den auch die Programmiersprache Perl verwendet, als da wären:

  • Skalare: Zahlen, Zeichenketten
  • Listen: eindimensionale Arrays, wobei mehrdimensionale möglich sind, da Listenelemente ebenfalls Listen sein können
  • assoziative Arrays: auch Hashtabellen oder Dictionaries genannt

Damit lassen sich bereits alle Grunddatentypen abbilden, die in den verschiedenen Programmiersprachen zu finden sind. Zusätzlich unterstützt YAML noch benutzerdefinierte Datentypen.

Mehrere Datensätze gemeinsam übertragen

Mit einer Syntax, die der bei E-Mail gebräuchlichen MIME-Spezifikation (RFC 2045) entlehnt ist, ermöglicht YAML, mehrere Datensätze zusammenzufassen. Das ist weniger für die Speicherung in einer Datei gedacht, obwohl es auch dabei nützlich sein kann, sondern mehr für die Übertragung als Datenstrom im Netz.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Programmieren mit Notepad++

Erweiterbarer Texteditor unter Windows

Programmieren mit Notepad++

Das Notepad++ ist ein mächtiger Texteditor. Dabei bietet das Tool Syntax Highlighting und weitere Entwickler-Funktionen und lässt sich als Open-Source-Software um zusätzliche Sprachen und Plugins bis hin zur vollständigen IDE erweitern. lesen

Was ist Ansible?

Definition „Ansible“

Was ist Ansible?

Ansible ist ein Open-Source-Tool, mit dem sich die Konfiguration und Administration von Systemen automatisieren lässt. Das reicht von simplen bis hin zu hoch komplexen Tasks. Das Werkzeug beherrscht Modularisierung und erfordert minimale Systemvoraussetzungen lesen

Ansible, AWX und Ansible Tower im Überblick

DevOps-Enabler Ansible, Teil 1

Ansible, AWX und Ansible Tower im Überblick

Mit Blick auf die Veröffentlichung von Ansible 2.5 und Ansible Tower 3.2.2 bringt Dev-Insider ein Rundum-Spezial im Kontext von Puppet, Chef und Salt. Dieser Teil klärt, was der Open-Source-Star besser macht als die etablierte Konkurrenz, worin sich Ansible, Ansible Tower und AWX unterscheiden und wer die Player hinter Ansible sind. lesen

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation, Teil 4

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation erlaubt es, Infrastruktur nach dem „Infrastructure as Code“-Prinzip per JSON- oder YAML-Vorlagen zu definieren. Mit dem Tool CloudFormer lassen sich bereits vorhandene Ressourcen zwecks einfacherer Reproduzierung sogar in CloudFormation-Vorlagen konvertieren. lesen

Was ist SaltStack?

Definition „Salt“

Was ist SaltStack?

Das DevOps-Toolset SaltStack oder kurz Salt dient der automatisierten Steuerung und Überwachung die Infrastruktur. Die Orchestrierung von Cloud-Ressourcen, Containern und virtuellen Servern ist dabei ebenso möglich wie manuelle Remote-Ausführung und Konfigurationsmanagement. lesen

Build-Projekt mit AWS CodeBuild umsetzen

Amazon Web Services für Entwickler, Teil 5

Build-Projekt mit AWS CodeBuild umsetzen

Mit CodeBuild steht ein voll verwalteter Build-Service in der Cloud zur Verfügung, ähnlich dem Open Build Service von SUSE, aber vollständig integriert mit AWS. Damit können Entwickler ihren auf CodeCommit gehosteten Quellcode kompilieren, Komponententests ausführen und Artefakte erzeugen, die sich dann mit AWS CodeDeploy bereitstellen lassen. lesen

Hybrid Clouds mit Docker Swarm und Ansible

Container auf Windows- und Linux-Servern

Hybrid Clouds mit Docker Swarm und Ansible

Linux- und Windows-Server werden in immer mehr Netzwerken parallel eingesetzt. Administratoren und Entwickler benötigen daher Werkzeuge, um Container über beide Betriebssysteme hinweg effektiv einsetzen zu können. lesen

Was ist JSON?

Definition „JavaScript Object Notation“

Was ist JSON?

JSON bietet einen einfachen Standard für die strukturierte Kodierung von Daten in Form von menschenlesbarem Text. Dies bietet Vorteile bei einer automatisierten Weiterverarbeitung, macht sie aber auch einer manuellen Inspektion und Überarbeitung besser zugänglich. lesen

App-Bereitstellung und -Überwachung in der Cloud

Azure DevOps Projects

App-Bereitstellung und -Überwachung in der Cloud

Microsoft bietet mit dem neuen Azure-Dienst „Azure DevOps Projects“ die Möglichkeit, Anwendungen in Microsoft Azure sehr schnell bereitzustellen. Auch Continuous Integration und Continuous Delivery können mithilfe der DevOps-Pipeline realisiert werden. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45018835 / Definitionen)