Wie komme ich einfach an Testdaten, die der DSGVO (Datenschutz-Grundverordnung) gerecht werden. Es gibt einige kommerzielle Hersteller, aber der Aufwand für das Setup und die Lizenzkosten können erheblich sein. Es wird in der Regel bei der Anforderung zwischen zwei Methoden unterschieden:

  1. Generierung von synthetischen Testdaten (speziell für jeden Testfall)
  2. Verfremdung der PROD-Daten im vollen Umfang

Die Generierung von synthetischen Testdaten kann sehr aufwendig sein, speziell wenn die Generierung über mehrere Systeme erfolgen muss.

Die Verfremdung von PROD-Daten kann auch sehr aufwendig werden, da es sich eventuell um große Datenmengen handelt. Bei verteilten Systemen muss die Verfremdung auf alle Systeme angewendet werden.

Es gibt sehr viele Open-Source Möglichkeiten um das Thema kostengünstig und performant abzuarbeiten. Auf den ersten Blick ist die performanteste Möglichkeit die Bearbeitung der Daten in der Datenbank z.B. bei Oracle durch PL/SQL, bei Postgresql durch PL/pgSQL.

Jedoch gibt es in den meisten Unternehmen einen Zoo an Datenquellen, Multi-Vendor-Datenbanklandschaften, XML Dateien, JSON Dateien, Text Dateien…

In den letzten Tagen habe ich mich mit Python zum Generieren von Daten beschäftigt.

Ich muss sagen es ist schon wirklich easy mit Python, es gibt viele Open-Source Projekte und Module, die einen das Leben erleichtern. Für meinen Test habe ich Visual Studio Code mit der Copilot Extension verwendet.

In wenigen Stunden konnte ich 10.000.000 Datensätze mit Fake Personen-Daten erstellen.

Die Skripte zur Erstellung findet ihr in Github (MarkusTischler/testdaten).

Eine Version, welche die Daten in einer Oracle Datenbank speichert (Hier wäre natürlich der SQL*Loder mit Direct Path die schneller Variante)

Eine Version, welche die Daten in einer PostgreSQL Datenbank speichert.

Für die Erzeugung der Fake-Daten wurde Faker verwendet (Welcome to Faker’s documentation! — Faker 37.1.0 documentation)

Die Faker Daten wurden in einem Pandas (pandas - Python Data Analysis Library) Dataframe gespeichert, damit können super Daten manipuliert werden, über Pandas wurden die Daten direkt in die Datenbank geschrieben.

Warum habe ich Pandas genutzt?

Ganz einfach, in ein Pandas Dataframe kann ich beliebige Daten laden und manipulieren!

Es ist im Vergleich zu Datenbank-Transaktionen sehr schnell!

Benötigt jedoch sehr viel Platz im RAM 15GB CSV belegen 60GB RAM.

Mit Python gibt es unbegrenzte Möglichkeiten ob nun Funktionen komplett nach Anforderung entwickelt werden müssen oder fertige Module wie Faker oder Microsoft Persidio zum Einsatz kommen.

Du kannst Python lokal auf dem Laptop ausführen, oder auf dem Datenbankserver für guten Datendurchsatz oder in der Cloud z.B. mit Databricks mit höchster Skalierung.

VS Code mit Copilot Extension: