5 Punkte von GN⁺ 2025-03-13 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Flat Files sind in der Datenanalyse ein sehr verbreitetes Format
  • Dieser vollständige Leitfaden erklärt, was Flat Files sind, welche Arten es gibt, welche man wählen sollte, ihre Use Cases, Formatmerkmale sowie Vergleiche mit Nicht-Flat-File-Datenbanken und relationalen DBMS

Schwer eindeutig zu definieren

  • Flat Files werden vor allem verwendet, wenn Daten aus Datenbanken extrahiert und weiterverarbeitet werden
  • Sie liegen oft als einfache Textdateien wie CSV vor, bei denen jede Zeile einen Datensatz darstellt und die Felder durch Kommas getrennt sind
  • Die Definition von "Flat File" ist jedoch nicht eindeutig, es gibt aber folgende gemeinsame Merkmale:
    • Nur Text: Es werden nur Text und Zahlen gespeichert, keine Binärdaten (Blob)
    • Tabellarisches Format: Eine Tabelle pro Datei, Datensätze zeilenbasiert aufgebaut
    • Portabel: Ohne spezielle Software leicht auszugeben, zu bearbeiten und zu verarbeiten
    • Unstrukturiert: In der Regel keine Hierarchie oder Beziehungen zwischen Datensätzen
    • Keine Komprimierung: Standardmäßig keine intelligente Komprimierung (allerdings erlauben DuckDB, Spark usw. ZIP-Dateien)
    • Kein Index: Kein eingebauter Index zum Auffinden bestimmter Datensätze
    • Keine Beschreibung: Normalerweise keine Metadaten oder Schema-Informationen
  • JSON und YAML fallen aus dieser Definition heraus, weil sie Hierarchien und Schemas enthalten können
  • Auch die Tatsache, dass sie in sehr unterschiedlichen Use Cases eingesetzt werden können, hilft nicht wirklich weiter
    • CSV: Format für Datenspeicherung und Datenaustausch
    • JSON: Für groß angelegten Datenaustausch, Konfigurationsmanagement und API-Rückgabeformat
    • YAML: Für Konfigurationsmanagement und Pipeline-Definitionsdateien

Arten von Flat Files

  • Je nachdem, wie Daten organisiert und gespeichert werden, gibt es verschiedene Typen
  • Aufbau von Feldern und Datensätzen
    • Unstrukturierte Flat Files: Einzelne Tabellenstruktur wie bei CSV
    • Strukturierte Flat Files: JSON, YAML, XML usw. mit hierarchischer Struktur
  • Typ des Feldtrennzeichens
    • Eine Zeile stellt einen Datensatz dar, Felder werden durch Trennzeichen getrennt
    • Verwendet werden Komma(,), Tab(\t) und Pipe(|)
  • Feste Breite vs. variable Breite
    • Formate mit fester Breite haben Felder mit konstanter Länge → schnellere Verarbeitung
    • Formate mit variabler Breite bieten mehr Flexibilität bei der Verarbeitung
  • Datentrennzeichen
    • CSV kann Tabs und Zeilenumbrüche speichern (mit Escaping)
    • TSV kann keine Tabs und Zeilenumbrüche enthalten
  • Lesbarkeit für Menschen
    • Flat Files sind oft menschenlesbar
    • Auf manchen Plattformen werden auch Excel-Dateien als Flat Files eingestuft
  • Ob Metadaten enthalten sind
    • Dateien wie CSV enthalten keine Metadaten
    • JSON kann eigene Metadaten und Schemas enthalten

Use Cases für Flat Files

  • Speicherung und Austausch
    • Datenaustausch: CSV und JSON sind nützlich für den Austausch von Daten zwischen unterschiedlichen Plattformen
    • Datenintegration in ETL: Flat Files werden in ETL häufig als Quell- und Zieldaten verwendet
    • Archivierung und Backups: Flat Files sind textbasiert und daher für die Langzeitaufbewahrung vorteilhaft
  • Nutzung als Utility-Format
    • Konfigurationsmanagement: YAML, JSON, INI usw. werden für Umgebungsvariablen, Datenbankverbindungen usw. verwendet
    • Definition von Datenpipelines: JSON, YAML usw. werden zur Beschreibung von Pipeline-Strukturen verwendet
    • Metadaten für Datensätze: JSON kann Transformationen und Validierungsregeln für CSV definieren

Beispiele für Flat Files

CSV (Comma-Separated Values)

  • Dateiendung: .csv
  • Trennzeichen: Komma ,
  • Struktur: flach (Flat)
  • Leicht menschenlesbar
  • Beispiel:
    name, country, age  
    Alice, USA, 22  
    Bob, Canada, 34  
    Charlie, UK, 28  
    
  • Wann wählen?:
    • Geeignet für strukturierte Daten im Tabellenformat
    • Nützlich für den Export aus BI-Systemen sowie Excel/Google Sheets
  • Wann vermeiden?:
    • Ungeeignet, wenn komplexe hierarchische Strukturen benötigt werden
    • Kann Probleme verursachen, wenn Daten selbst Kommas enthalten

TSV (Tab-Separated Values)

  • Dateiendung: .tsv
  • Trennzeichen: Tab \t
  • Struktur: flach (Flat)
  • Leicht menschenlesbar
  • Beispiel:
    name	country	age  
    Alice	USA	22  
    Bob	Canada	34  
    Charlie	UK	28  
    
  • Wann wählen?:
    • Nützlich, wenn Daten mit eingebetteten Kommas verarbeitet werden müssen
    • Lässt sich mit Unix-CLI-Tools leicht verarbeiten
  • Wann vermeiden?:
    • Problematisch, wenn Daten Tabs enthalten

JSON (JavaScript Object Notation)

  • Dateiendung: .json
  • Struktur: hierarchisch
  • Leicht menschenlesbar
  • Beispiel:
    [  
      {"name": "Alice", "country": "USA", "age": 22},  
      {"name": "Bob", "country": "Canada", "age": 34},  
      {"name": "Charlie", "country": "UK", "age": 28}  
    ]  
    
  • Wann wählen?:
    • Geeignet, wenn hierarchische Datenstrukturen benötigt werden
  • Wann vermeiden?:
    • Ungeeignet, wenn Verarbeitungsgeschwindigkeit Priorität hat

YAML (YAML Ain’t Markup Language)

  • Dateiendung: .yaml
  • Struktur: hierarchisch
  • Leicht menschenlesbar
  • Beispiel:
    name: Alice  
    country: USA  
    age: 22  
    
  • Wann wählen?:
    • Geeignet, wenn gut lesbare Konfigurationsdateien benötigt werden
  • Wann vermeiden?:
    • Ungeeignet für die Speicherung großer Datenmengen

ENV-Dateien

  • Dateiendung: .env
  • Struktur: flach (Flat)
  • Leicht menschenlesbar
  • Beispiel:
    APP_NAME=MyApp  
    ENVIRONMENT=production  
    
  • Wann wählen?:
    • Geeignet, wenn Konfigurationsdateien für Deployment und lokale Umgebungen benötigt werden
  • Wann vermeiden?:
    • Ungeeignet zum Speichern komplexer Datenstrukturen

Vergleich: Flat File vs. Non-Flat File vs. DBMS

Flat Files werden oft mit relationalen Datenbanken (RDBMS) verglichen, außerdem gibt es Zwischenformate wie Avro, Parquet und ORC. Im Folgenden ein Vergleich der wichtigsten Formateigenschaften:

  • Art der Datensatzstruktur

    • CSV: Zeilenbasierte Speicherung
    • JSON: Speicherung auf Basis von Schlüssel-Wert-Paaren
    • Parquet: Spaltenbasierte Speicherung
    • Relationale DBMS: Zeilenbasierte Speicherung
  • Menschenlesbares Format?

    • CSV und JSON: Textbasiert → leicht lesbar
    • Parquet und DBMS: Binärbasiert → schwer lesbar
  • Portabilität

    • CSV, JSON, Parquet: Hohe Kompatibilität zwischen Plattformen
    • DBMS: Nur mit spezifischer Software nutzbar
  • Unterstützung für Hierarchien

    • CSV: Keine Hierarchie
    • JSON: Unterstützt Hierarchien
    • Parquet: Unterstützt verschachtelte Strukturen
    • DBMS: Unterstützt mehrere Tabellen und relationale Strukturen
  • Skalierbarkeit

    • CSV, JSON: Geringe Skalierbarkeit
    • Parquet, DBMS: Hohe Skalierbarkeit
  • Index-Unterstützung

    • CSV, JSON: Kein Index
    • Parquet: Schnelle Suche über Datei-, Row-Group- und Spalten-Metadaten möglich
    • DBMS: Unterstützt Indizes
  • Schema-Unterstützung

    • CSV: Kein Schema
    • JSON: Kann ein Schema enthalten
    • Parquet, DBMS: Erzwingen ein Schema
  • Parquet verwendet keine B-Tree- oder Hash-Indizes. Stattdessen verbessert es die Datensuche über Metadaten auf Datei-, Zeilengruppen- und Spaltenebene

Das richtige Flat-File-Format wählen

  • CSV, TSV → für einfachen Datenaustausch und einfache Datenspeicherung, etwa zum Archivieren oder zum Verschieben zwischen Plattformen
  • JSON → wenn ein selbstbeschreibendes Dateiformat mit hierarchischer Struktur benötigt wird
  • YAML → geeignet für Konfigurationen und Pipeline-Einstellungen
  • Parquet → in Betracht ziehen, wenn kleine Dateigrößen, schnelle Abfragen und Unterstützung komplexer Datentypen benötigt werden

Noch keine Kommentare.

Noch keine Kommentare.