1 VIEWS

ETL-Tools bei Daten(bank)migrationen – Genauso gut wie Eigenentwicklungen?

31.08.2020

1969 machte Neil Armstrong einen kleinen Schritt für einen Menschen, aber einen großen Sprung für die Menschheit. Unglaublich, dass der Apollo Guidance Computer über das hundert-tausend fache langsamer war, als ein iPhone1.

Innerhalb weniger Jahrzehnte haben sich Computer also enorm weiterentwickelt. Und auch heute noch hält diese Entwicklung an. Daher wundert es mich nicht, dass z.B. alte Systeme irgendwann von neuen Systemen abgelöst werden sollen. Doch so eine Ablöse im Geschäftsumfeld sorgt auch dafür, dass z.B. die Daten aus den Datenbanken in das neue System migriert werden müssen. Doch um die Migration nicht händisch durchführen zu müssen braucht man eine Migrationssoftware. Diese kann entweder selbst entwickelt sein oder man verwendet ein ETL-Tool dafür. Bei einer Eigenentwicklung ist man sehr flexibel und kann (fast) alles damit machen. Aber ist das bei einem ETL-Tool auch so?

Um das herauszufinden, habe ich in meiner Bachelorarbeit eine Eigenentwicklung und ein ETL-Tool verglichen. Ich meine, natürlich ist eine Eigenentwicklung die den ETL-Prozess umsetzt auch irgendwie ein ETL-Tool. Aber für hier ist ein ETL-Tool einfach eine Anwendung, bei der man mit grafischer Oberfläche sich seine Migration einfach zusammen klicken kann.

Nachdem ihr nun wisst, was ich mich mit Eigenentwicklung und ETL-Tool meine möchte ich euch noch kurz meine Thesisziele vorstellen:
Ein Ziel der Thesis war, dass ich Anforderungen an eine Datenmigrationen herausfinde. Dazu habe ich Experten befragt und aus deren Antworten acht Anforderungen identifiziert. Allerdings werde ich die Anforderungen in diesem Beitrag auslassen und den Fokus aus das zweite Ziel setzen.
Als zweites Ziel war dann schließlich der besagte Vergleich angesagt. Dazu hab ich ein Migrationsszenario entworfen und das dann auch umgesetzt. Also umgesetzt mit einer Eigenentwicklung und auch mit einem ETL-Tool. Als ETL-Tool habe ich KNIME Analytics Platform (https://www.knime.com/knime-analytics-platform) verwendet.

Vergleich von Eigenentwicklung zu ETL-Produkt

Für den Vergleich wurden verschiedene Faktoren untersucht. Auf diese Faktoren wurde insbesondere bei den Umsetzungen geachtet. Leider konnte nur KNIME benutzt werden, sodass die Ergebnisse stark davon abhängen.
Folgende Aspekte habe ich untersucht:

  • Umsetzungsaufwand
  • Einarbeitungsaufwand
  • Wiederverwendbarkeit
  • Versionierung und paralleles Arbeiten
  • Log-Möglichkeiten
  • Validierungsmöglichkeiten
  • Parallelisierungsmöglichkeiten

Aus diesem Vergleich möchte ich euch kurz die Ergebnisse vorstellen:
Beim Umsetzungsaufwand liegt das ETL-Tool vorne. Die Dauer liegt einfach deutlich unter der Eigenentwicklung. Ich habe ungefähr ein Drittel der Zeit benötigt beim implementieren der KNIME Umsetzung. Selbst wenn diese Zeitersparnis im Unternehmen geringer ausfallen sollte als bei mir, so ist trotzdem eine Ersparnis zu erwarten.

Der Einarbeitungsaufwand ist bei ETL-Tools nicht so hoch wie bei einer Eigenentwicklung. Allerdings müssen wir hier noch zusätzlich unterscheiden zwischen dem Lernen von Softwareentwicklung bzw. Programmieren und einarbeiten in den Quellcode bzw. Workflow:

  1. Softwareentwicklung oder Programmieren lernen dauert definitiv länger, als ein ETL-Tool kennenzulernen.
  2. So ein ETL-Tool wie KNIME hat eine grafische Oberfläche, wo der Workflow visuell dargestellt wird. Unser Gehirn arbeitet 90% visuell und kann Text 60.000 mal schlechter verarbeiten als Grafiken2. Die Einarbeitung in den Quelltext ist also ein deutlicher größerer Aufwand, als den Workflow im ETL-Tool anzuschauen. Im Bild unten ist ein Beispielworkflow von KNIME zu sehen.
Beispielworkflow in KNIME
Schaubild 2: Beispielworkflow in KNIME

Bei KNIME gibt es Nodes. Nodes implementieren einen kleinen Teil und können vom Nutzer einfach per „Drag&Drop“ dem Workflow hinzugefügt werden. Dieses „Drag&Drop“ verfahren erleichtert die Nutzbarkeit für Entwickler. Außerdem sind diese Nodes atomar und implementieren einen wirklich kleinen Teil. Dadurch können diese immer und immer wieder verwendet werden. Auch, oder gerade, in anderen Kontexten. Durch diese atomare Implementierung und der guten Nutzbarkeit ist die Wiederverwendbarkeit bei ETL-Tools besser.

Versionsverwaltungssoftware kommt aus der Softwareentwicklung. Daher ist es selbst erklärend, dass sich diese für die Eigenentwicklung eignen. Sowohl Versionierung und paralleles Arbeiten ist damit also kein Problem. Doch bei ETL-Tools sieht das anders aus. Zumindest das Versionieren geht – solange nur einer seine Dateien versioniert. Paralleles Arbeiten durch Versionsverwaltungssoftware ist mit ETL-Tools nicht praktikabel. Je nach Speicherung des Workflows kann das Zusammenführen von Änderungen fast unmöglich sein. Aber bei KNIME gibt es eine Teilen-Funktion. Bei dieser können Workflows mit anderen geteilt werden. Also statt, dass alle an einem Workflow arbeiten, arbeitet einer jeweils an einem und teilt diesen in KNIME direkt.

Bei Eigenentwicklungen kann Logging beliebig granular eingerichtet werden. Hier bestehen also nahezu unbegrenzte Log-Möglichkeiten. Bei ETL-Produkten ist man auf deren Logging angewiesen. Das kann gut sein oder auch nicht. Bei KNIME bspw. wird von jedem Node geloggt. Aber es kann es vorkommen, dass bei zu vielen Log-Einträgen die alten überschrieben werden. Dieser mögliche Verlust und auch, dass die Qualität des Loggings stark vom ETL-Tool abhängig ist, sind die Log-Möglichkeiten bei Eigenentwicklungen als deutlich besser zu bewerten.

Die Validierungen sind wichtige Schritte bei Datenmigrationen. Eigenentwicklungen bieten hier auch den Vorteil, dass eigentlich an jeder Stelle validiert werden kann. Zudem kann man sich aussuchen, was und wie validiert wird. ETL-Tools bieten auch einen gewissen Rahmen zum Validieren. Bei KNIME kann man die Daten bspw. in Flowvariablen umwandeln und dann Werte vergleichen o.ä. Allerdings ist man bei den Vergleichsmöglichkeiten von Werten wieder stark abhängig vom ETL-Tool.

Als letzten Faktor wurden die Parallelisierungsmöglichkeiten begutachtet. Parallelisierung ist auf jeden Fall sinnvoll, vor allem, wenn viele Datensätze migriert werden müssen. Eine Eigenentwicklung kann dabei auf verschiedenen Arten umgesetzt werden: Multithreading, verteilte Software, etc. Das erfordert allerdings oft einen Zusatzaufwand, da auf viele Aspekte geachtet werden muss. Außerdem muss im Vorfeld besser oder anders geplant werden. Ein ETL-Tool kann Multithreading bereits eingebaut haben. Bei KNIME bspw. werden die Nodes soweit wie möglich parallel ausgeführt. Da eine Eigenentwicklung mehr Möglichkeiten hat und ein ETL-Tool Parallelisierung oft schon implementiert hat, gibt es in diesem Punkt ein Unentschieden.

Fazit

Die Frage danach, ob ETL-Tools genauso gut sind wie Eigenentwicklung sind möchte hier dann noch beantworten. Es gibt viele Punkte die auf jeden Fall für eine Eigenentwicklung sprechen. Gerade die Flexibilität ist ein wichtiger Punkt. Manche ETL-Tools bieten schlichtweg nicht alle Möglichkeiten oder implementieren diese ausreichend tiefgehend. Trotzdem haben ETL-Tools Vorüge, die nicht von der Hand zu weisen sind. Bspw. der Umsetzungsaufwand oder der Einarbeitungsaufwand. Und vielleicht findet sich ja ein ETL-Tool das für das Projekt ausreichende Flexibilität und Möglichkeiten bietet. Deshalb sollten verschiedene ETL-Tools in jedem Fall in Projekten ausprobiert werden. Danach kann jeder für sich entscheiden, ob ETL-Tools genauso gut sind. Ich finde sie eignen sich genauso gut. Wäre es nicht so, dann würde vermutlich ja auch der Markt für ETL-Tools fehlen.

 


1 https://www.realclearscience.com/articles/2019/07/02/your_mobile_phone_vs_apollo_11s_guidance_computer_111026.html, Graham Kendall, Your Mobile Phone vs. Apollo 11’s Guidance Computer, 2019

2 http://www.t-sciences.com/news/humans-process-visual-data-better, Harris Eisenberg, Humans Process Visual Data Better, 2014

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.