Reproduzierbares Praxislabor
Realistische Graph-Testdaten ohne personenbezogene Daten
Kann ein synthetischer Graph realistische Kardinalitäten und Randfälle reproduzieren, ohne reale personenbezogene Daten zu kopieren?
Voraussetzungen
Verwenden Sie Python 3 lokal. Das erlaubte Schema enthält Firmen-ID, Produkt-ID, Kategorie und Lieferbeziehung. Namen, E-Mail-Adressen, Telefonnummern und Freitext sind verboten.
Definieren Sie Verteilungen unabhängig von Produktionszeilen: fünf Firmen, acht Produkte, mindestens ein Produkt ohne Lieferant und ein Lieferant mit mehreren Produkten.
Versuchsaufbau und minimale Daten
Der Generator erhält einen festen Seed. Ausgabe wird nach stabiler ID sortiert und als UTF-8-CSV geschrieben. Werkzeugversion, Seed und Generatorhash stehen im Manifest.
Ein Datenschutzreview bestätigt nur die Abwesenheit verbotener Felder. Aus echten Daten abgeleitete seltene Kombinationen können verräterisch sein und werden hier nicht verwendet.
Befehl oder Abfrage
import random
rng=random.Random(20260918)
firms=[f'F{i:02d}' for i in range(1,6)]
products=[f'P{i:02d}' for i in range(1,9)]
edges=[(p,rng.choice(firms)) for p in products[:-1]]
for p,f in sorted(edges): print(f'{p},{f}')
# python3 generator.py > edges-a.csv
# python3 generator.py > edges-b.csv
# cmp -s edges-a.csv edges-b.csv; echo $?Nur in der beschriebenen isolierten Laborumgebung ausführen. Versionen und Exitcodes gehören zum Protokoll.
Erwartetes Ergebnis
Mit Seed `20260918` entstehen bei zwei Läufen byte-identische Dateien; `cmp` endet mit Exitcode 0. Beide enthalten sieben Lieferkanten, während `P08` ohne Lieferant bleibt.
Das Manifest nennt Seed, Python-Version, Generatorhash, sieben Kanten und die Ausnahme `P08`. So ist die Wiederholung ohne produktive Zeile möglich.
Negativtest
Starten Sie mit Seed `20260919`. Mindestens eine Lieferkante muss abweichen und `cmp` endet mit Exitcode 1. Ein anderer Seed erhält einen anderen Snapshot-Namen.
Fügen Sie testweise eine Spalte `email` zum Schema hinzu. Der Schema-Gate-Test muss den Export vor dem Schreiben ablehnen, auch wenn Werte erfunden aussehen.
Rollback und Aufräumen
Löschen Sie erzeugte CSV-Dateien und Python-Cache. Generator und Manifest bleiben versioniert, damit derselbe Stand erneut erzeugt werden kann.
Hat ein Test versehentlich echte Quelldaten gelesen, stoppen Sie den Lauf, sichern Sie keine Ausgabe und melden Sie den Vorfall nach dem Datenschutzprozess.
Einordnung
Ein Seed schafft Reproduzierbarkeit, aber keine Realitätsnähe. Struktur, Verteilungen, Grenzfälle und PII-Ausschluss bleiben getrennte Prüfpunkte.
Quellen zu diesem Beitrag
Die Primärquellen für „Realistische Graph-Testdaten ohne personenbezogene Daten“ wurden am 18.09.2026 geprüft. Versions- und Statusangaben sind vor einem produktiven Einsatz erneut zu kontrollieren.
- NIST Privacy Framework
Primärrahmen für Datenschutzrisiken. - Python random
Primärdokumentation zur deterministischen Initialisierung. - ICO anonymisation guidance
Behördliche Orientierung zu Re-Identifikationsrisiken.