Data Engineering ist ein softwaretechnischer Ansatz zum Aufbau von Datensystemen, die die Erfassung und Nutzung von Daten ermöglichen. Diese Daten werden typischerweise für anschließende Analysen und Data Science verwendet, was häufig maschinelles Lernen beinhaltet. Die Nutzbarmachung von Daten erfordert erhebliche Rechen-, Speicher- und Datenverarbeitungsressourcen. Dateningenieure entwerfen und warten die Infrastruktur, Pipelines und Werkzeuge, die es Organisationen ermöglichen, Rohdaten in verwertbare Erkenntnisse umzuwandeln.
Das Feld entstand aus der Notwendigkeit, mit massiven Datenmengen, -geschwindigkeiten und -vielfalten umzugehen, die oft als Big Data bezeichnet werden. Es vereint Prinzipien aus Softwaretechnik, Datenbankverwaltung und verteilten Systemen, um zuverlässige, skalierbare und kosteneffiziente Datenplattformen zu schaffen.
Geschichte
Die Wurzeln des Data Engineering reichen bis in die 1970er und 1980er Jahre zurück, mit dem Konzept der Information Engineering Methodology (IEM), die sich auf Datenbankdesign und Software für Datenanalysen konzentrierte. Der Australier Clive Finkelstein, oft als "Vater" der IEM bezeichnet, schrieb zwischen 1976 und 1980 einflussreiche Artikel und verfasste gemeinsam mit James Martin einen Bericht für das Savant Institute. Charles M. Richter half später, die IEM zu überarbeiten und von 1983 bis 1987 das Benutzerdatensoftwareprodukt zu entwerfen.
In den frühen 2000er Jahren wurden Daten und Datentools typischerweise von Informationstechnologie-Teams (IT) verwaltet, mit begrenzter Überschneidung zwischen Geschäftsbereichen. In den frühen 2010er Jahren kam es mit dem Aufstieg des Internets und von Big Data zu einer dramatischen Veränderung. Unternehmen wie Facebook und Airbnb begannen, den Begriff "Dateningenieur" zu verwenden, um eine neue Rolle zu beschreiben, die sich auf Dateninfrastruktur konzentriert. Große Firmen wie Google, Facebook, Amazon, Apple, Microsoft und Netflix entfernten sich von traditionellen ETL- und Speichertechniken und setzten auf Cloud Computing und einen breiteren, integrierteren Ansatz für Daten in der gesamten Organisation.
Kernkomponenten
Rechenleistung
Hochleistungsrechnen ist für die Verarbeitung und Analyse von Daten unerlässlich. Datenflussprogrammierung, bei der Berechnungen als gerichteter Graph von Operationen und Datenflüssen dargestellt werden, ist ein weit verbreiteter Ansatz. Beliebte Implementierungen umfassen Apache Spark und TensorFlow, wobei letzteres speziell für Deep Learning ist. Neuere Systeme wie Differential/Timely Dataflow nutzen inkrementelles Rechnen für eine höhere Effizienz.
Speicherung
Die Wahl der Datenspeicherung hängt davon ab, wie die Daten verwendet werden. Dateningenieure optimieren Speicherung und Verarbeitung, um Kosten durch Komprimierung, Partitionierung und Archivierung zu senken.
- Datenbanken: Für strukturierte Daten, die Online-Transaktionsverarbeitung erfordern, sind relationale Datenbanken mit ACID-Garantien und SQL-Abfragen üblich. NoSQL-Datenbanken gewannen in den 2010er Jahren an Popularität für horizontale Skalierung, opferten dabei jedoch ACID. NewSQL-Datenbanken zielen darauf ab, sowohl horizontale Skalierung als auch ACID-Garantien zu bieten.
- Data Warehouses: Für strukturierte Daten, die Online-Analyseverarbeitung benötigen, unterstützen Data Warehouses groß angelegte Analysen, Mining und KI. Daten fließen oft von Datenbanken in Warehouses und sind über SQL oder Business-Intelligence-Tools zugänglich.
- Data Lakes: Zentrale Repositorys für die Speicherung, Verarbeitung und Sicherung großer Mengen strukturierter, semi-strukturierter und unstrukturierter Daten. Sie können lokal oder cloudbasiert sein.
- Dateien: Weniger strukturierte Daten können als Dateien in Dateisystemen, Blockspeicher oder Objektspeicher gespeichert werden, wobei letzterer Metadaten und Schlüssel wie UUIDs verwendet.
Verwaltung
Workflow-Management-Systeme wie Airflow helfen bei der Spezifikation, Erstellung und Überwachung von Datenaufgaben, die oft als gerichtete azyklische Graphen (DAGs) dargestellt werden.
Lebenszyklus
Geschäftsplanung
Geschäftsziele werden in strategischen, taktischen und operativen Plänen erfasst. Data Engineering unterstützt diese Pläne durch transparente Datensysteme, die Feedback und frühzeitige Korrektur von Fehlkommunikation ermöglichen.
Systemdesign
Das Design von Datensystemen umfasst die Architektur von Datenplattformen und das Design von Datenspeichern unter Berücksichtigung von Skalierbarkeit, Zuverlässigkeit und Kosten.
Datenmodellierung
Die Datenmodellierung erzeugt ein abstraktes Modell, das Daten und Beziehungen beschreibt, und ist für die Strukturierung von Daten für Analyse und Anwendung unerlässlich.
Rollen
Dateningenieur
Ein Dateningenieur ist ein Softwareentwickler, der Big-Data-ETL-Pipelines erstellt, um den Datenfluss durch eine Organisation zu verwalten. Er baut und wartet die Infrastruktur für Datenerfassung, -transformation und -speicherung und ermöglicht es Dateningenieuren und Analysten, Erkenntnisse zu gewinnen. Dateningenieure arbeiten mit Tools wie Apache Spark, TensorFlow und Cloud-Plattformen wie Amazon Web Services, Microsoft Azure und Google Cloud.
Data Engineering ist eng mit maschinellem Lernen und künstlicher Intelligenz verbunden, da es die Datenbasis für das Training und die Bereitstellung von Modellen liefert. Es überschneidet sich auch mit Data Science und Business Intelligence und stellt sicher, dass Daten zugänglich, zuverlässig und sicher sind.
Tools und Technologien
Dateningenieure verwenden eine Vielzahl von Tools für Rechenleistung, Speicherung und Verwaltung. Beliebte Rechen-Frameworks umfassen Apache Spark und TensorFlow. Speicherlösungen reichen von relationalen Datenbanken wie PostgreSQL über NoSQL-Systeme wie MongoDB bis hin zu Cloud-Objektspeichern wie Amazon S3. Workflow-Orchestrierungstools wie Apache Airflow verwalten komplexe Pipelines. Cloud-Anbieter bieten verwaltete Dienste wie AWS Trainium für spezialisierte Rechenleistung sowie Azure und Google Cloud für skalierbare Speicherung und Verarbeitung.
Herausforderungen und Best Practices
Data Engineering steht vor Herausforderungen wie Datenqualität, Skalierbarkeit und Kostenmanagement. Best Practices umfassen die Implementierung robuster Datenvalidierung, die Verwendung inkrementeller Verarbeitung und das Design für Fehlertoleranz. Data Governance und Sicherheit sind entscheidend, insbesondere angesichts zunehmender Datenschutzbestimmungen. Da die Datenmengen weiter wachsen, bleibt Data Engineering ein dynamisches Feld, das sich mit neuen Technologien und Praktiken weiterentwickelt.