Untersuchen des Dateispeichers

Abgeschlossen

Daten in Dateien speichern zu können ist ein Kernelement eines jeden Computersystems. Dateien können in lokalen Dateisystemen auf der Festplatte Ihres Personalcomputers und auf Wechselmedien wie USB-Laufwerken gespeichert werden. Bei den meisten Organisationen werden wichtige Datendateien jedoch zentral in freigegebenen Dateispeichersystemen gespeichert. Dieser zentrale Speicherort wird zunehmend in der Cloud gehostet, was einen kosteneffizienten, sicheren und zuverlässigen Speicher für große Datenmengen ermöglicht.

Das spezifische Dateiformat, das zum Speichern von Daten verwendet wird, hängt von einer Reihe von Faktoren ab, unter anderem:

  • Vom Typ der gespeicherten Daten (strukturiert, teilweise strukturiert oder unstrukturiert)
  • Von den Anwendungen und Diensten, die die Daten lesen, schreiben und verarbeiten müssen
  • Von der möglichen Lesbarkeit der Datendateien für Menschen oder von der Optimierung für effiziente Speicherung und Verarbeitung

Im Folgenden werden einige gängige Dateiformate erläutert.

Textdateien mit Trennzeichen

Daten werden häufig im Nur-Text-Format mit bestimmten Feldtrennzeichen und Zeilenabschlusszeichen gespeichert. Das gängigste Format für durch Trennzeichen getrennte Daten sind durch Kommas getrennte Werte (CSV), bei denen Felder durch Kommas getrennt und Zeilen durch einen Wagenrücklauf/eine neue Zeile beendet werden. Optional kann die erste Zeile die Feldnamen enthalten. Andere gängige Formate sind durch Tabstopps getrennte Werte (TSV) und durch Leerzeichen getrennte Daten (in denen Tabstopps oder Leerzeichen zum Trennen von Feldern verwendet werden) sowie Daten mit fester Breite, bei denen jedem Feld eine feste Anzahl von Zeichen zugeordnet wird. Ein Text mit Trennzeichen ist eine gute Wahl für strukturierte Daten, auf die von vielen Anwendungen und Diensten in einem für Menschen lesbaren Format zugegriffen werden muss.

Das folgende Beispiel zeigt Kundendaten im durch Kommas getrennten Format:

FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com

JavaScript Object Notation (JSON)

JSON ist ein allgegenwärtiges Format, in dem ein hierarchisches Dokumentschema verwendet wird, um Datenentitäten (Objekte) mit mehreren Attributen zu definieren. Jedes Attribut kann ein Objekt oder eine Sammlung von Objekten sein, wodurch JSON zu einem flexiblen Format wird, das sowohl für strukturierte als auch für teilweise strukturierte Daten geeignet ist.

Das folgende Beispiel zeigt ein JSON-Dokument mit einer Sammlung von Kunden. Jeder Kunde verfügt über drei Attribute: firstName, lastName und contact. Das Attribut contact enthält eine Sammlung von Objekten, die einer oder mehreren Kontaktmethoden (E-Mail oder Telefon) entsprechen. Beachten Sie, dass Objekte in geschweifte Klammern ({..}) und Sammlungen in eckige Klammern ([..]) eingeschlossen sind. Attribute werden durch Name : Wert-Paare dargestellt und durch Kommas (,) getrennt.

{
  "customers":
  [
    {
      "firstName": "Joe",
      "lastName": "Jones",
      "contact":
      [
        {
          "type": "home",
          "number": "555 123-1234"
        },
        {
          "type": "email",
          "address": "joe@litware.com"
        }
      ]
    },
    {
      "firstName": "Samir",
      "lastName": "Nadoy",
      "contact":
      [
        {
          "type": "email",
          "address": "samir@northwind.com"
        }
      ]
    }
  ]
}

Extensible Markup Language (XML)

XML ist ein für Menschen lesbares Datenformat, das in den 1990er- und 2000er-Jahren beliebt war. Es wurde größtenteils durch das weniger ausführliche JSON-Format ersetzt, doch es gibt noch Systeme, die XML zur Darstellung von Daten verwenden. XML verwendet Tags in spitzen Klammern (<../>) zum Definieren von Elementen und Attributen, wie in diesem Beispiel zu sehen ist:

<Customers>
  <Customer name="Joe" lastName="Jones">
    <ContactDetails>
      <Contact type="home" number="555 123-1234"/>
      <Contact type="email" address="joe@litware.com"/>
    </ContactDetails>
  </Customer>
  <Customer name="Samir" lastName="Nadoy">
    <ContactDetails>
      <Contact type="email" address="samir@northwind.com"/>
    </ContactDetails>
  </Customer>
</Customers>

Binary Large Object (BLOB)

Letztendlich werden alle Dateien als Binärdaten gespeichert (1en und 0en), doch in den oben beschriebenen für Menschen lesbaren Formaten werden die Bytes der Binärdaten druckbaren Zeichen zugeordnet, in der Regel durch ein Zeichencodierungsschema wie ASCII oder Unicode. Einige Dateiformate, insbesondere für unstrukturierte Daten, speichern die Daten jedoch als unformatierte Binärdaten, die von Anwendungen interpretiert und gerendert werden müssen. Zu den gängigen als Binärdaten gespeicherten Datentypen gehören Bilder, Video, Audio und anwendungsspezifische Dokumente.

Bei der Arbeit mit solchen Daten bezeichnen Datenexpert*innen die Datendateien oft als BLOBs (Binary Large Objects).

Optimierte Dateiformate

Obwohl für Menschen lesbare Formate für strukturierte und teilweise strukturierte Daten nützlich sein können, sind sie in der Regel nicht für Speicherung oder Verarbeitung optimiert. Im Laufe der Zeit wurden einige spezialisierte Dateiformate entwickelt, die Komprimierung, Indizierung und effiziente Speicherung und Verarbeitung ermöglichen.

Zu den gängigen optimierten Dateiformaten zählen Avro, ORC und Parquet:

  • Avro ist ein zeilenbasiertes Format. Es wurde von Apache entwickelt. Jeder Datensatz enthält einen Header, der die Struktur der Daten im Datensatz beschreibt. Dieser Header wird als JSON-Dokument gespeichert. Die Daten selbst werden als binäre Informationen gespeichert. Eine Anwendung verwendet die Informationen im Header, um die Binärdaten zu analysieren und die darin enthaltenen Felder zu extrahieren. Das Avro-Format eignet sich gut zum Komprimieren von Daten und Minimieren der Anforderungen an Speicher und Netzwerkbandbreite.

  • Beim ORC-Format (Optimized Row Columnar) sind die Daten in Spalten und nicht in Zeilen organisiert. Es wurde von HortonWorks entwickelt, um Lese- und Schreibvorgänge in Apache Hive zu optimieren. Hive ist ein Data Warehouse-System, das schnelle Datenzusammenfassung und Abfragen großer Datasets unterstützt. Eine ORC-Datei enthält Stripes (Bereichsstreifen) der Daten. Jeder Stripe enthält die Daten für eine oder mehrere Spalten. Ein Stripe enthält einen Index für die Zeilen im Stripe, die Daten für jede Zeile und eine Fußzeile, die statistische Informationen (count, sum, max, min usw.) für jede Spalte enthält.

  • Parquet ist ein weiteres spaltenorientiertes Datenformat. Es wurde von Cloudera und X erstellt. Eine Parquet-Datei enthält Gruppen von Zeilen. Die Daten für die einzelnen Spalten werden gemeinsam in derselben Zeilengruppe gespeichert. Jede Zeilengruppe enthält einen oder mehrere Datenblöcke. Eine Parquet-Datei enthält Metadaten zu den Zeilen in den einzelnen Blöcken. Eine Anwendung kann diese Metadaten nutzen, um schnell den richtigen Block für eine bestimmte Zeilengruppe zu finden und die Daten in den angegebenen Spalten für diese Zeilen abzurufen. Parquet wurde speziell für eine effiziente Speicherung und Verarbeitung von Datentypen konzipiert. Das Format unterstützt sehr effiziente Komprimierungs- und Codierungsschemas.