AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Realdaten konsistent verwürfeln?

Ein Thema von stahli · begonnen am 26. Aug 2016 · letzter Beitrag vom 29. Aug 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#1

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 12:33
Du hast doch eine Datenbank, wo die Spalten auch untereinander ordentlich verbunden sind.
Wozu also in den CSV das nochmal versuchen zu verknubbeln?

Importiere die Daten in eine leere/neue Datenbank, verändere dort die Namen und die Abhängigkeiten sollten sich dann alle von Alleine anpassen.
REFERENCES ON UPDATE CASCADE
Und so Dinge, wie "ausversehn" doppelte Namen, welche ausversehn entstehen könnten, sollten sich ebenfalls mit den passenden CHECK-CONSTRAINTS verhindern lassen.

Und dann kann man das gern wieder als CSV exportieren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 13:28
Es geht bei uns auch darum, den regelmäßigen Datenimport neu zu realisieren.
Deshalb ist es nicht ausreichend, die Datenbanken umzustellen.
Wir benötigen auch über einen größeren Zeitraum passende umgestellte Demodaten für den Import-Test.

Aber ich sehe schon, das wird eher ein Sonderfall sein.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 16:13
Ich versuche mal die Aufgabenstellung etwas flacher darzustellen:

Ich bekommt irgendwann mal die Daten für:

Peter Müller, KundenID = 4711, Kontonummer = 4812 bei der Postbank.

Daraus sollen nun Testdaten werden, bei denen nicht mehr nachvollziehbar ist, welcher Person sie ursprünglich zugehörig waren.

Also wird aus o. g. Person nunmehr durch "irgendeinen Zufall" für die Testdaten:

Hansi Meier, KundenID = 1234, Kontonummer = 9876 bei der Targo-Bank.

Bei einer einmaligen Datenlieferung wäre das ok.

Nun kommt aber zu einem späteren Zeitpunkt mal wieder was an Daten für Peter Müller.
Bei den Originaldaten ist eine Zuordnung kein Problem.

Für die Testdaten muss der o. g. "irgendeinen Zufall" aber die Daten wiederum korrekt dem zufällig entstandenen Hansi Meier zugeordnet werden.

Letztlich wird hier also ein "reproduzierbarer Zufall" benötigt. Damit ist es aber letztlich keiner mehr.

Was meiner Meinung nach gehen müsste wäre:

Über die Originaldaten wird pro Satz irgendein Wert (Hash, MD5 ...) ermittelt und gespeichert.

Dieser Wert wird mit der eindeutigen ID der Testdaten verbunden.
  • Zuordnung Original zu Testdaten
  • Hashwert
  • TestdatenID
Nun kann man beim Eintreffen neuer Daten in der Tabelle den Wert des Originals suchen und die zu den Testdaten gehörige TestdatenID finden und damit eine entsprechende Zuordnung machen.

Über diese Tabelle wird aber immer ein Rückschluss von den Testdaten auf die Originaldaten möglich sein, es sei denn:

Den Algorithmus zur Ermmittlung des Hashwertes macht man nicht bekannt.

Aus dem MD5-Wert kann man z. B. nicht zurückschließen, wie der Originalwert war. Bei ihm ist die Eindeutigkeit aber nicht sichergestellt.
Aber: MD5 über Vorname + MD5 über Nachname + MD5 über KundenID sollten sicher reichen.

Eine "Rückwärtssuche" über die TestdatenID in dieser Tabelle und dann diese drei MD5-Werte ermitteln, um ans Original zu kommen, dürfte schon etwas "umfangreicher" werden, da für alle Originaldaten geprüft werden muss, ob sie den entsprechenden Wert ergeben. Ist der Algorithmus nicht bekann, dürfte es sehr schwierig werden.

Wenn sichergestellt ist, dass die Entwickler ... keinen Zugriff auf diese Tabelle bekommen, dürfte ein ausreichend sicherer Schutz der Originaldaten gegeben sein.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 16:32
Die Zusammenfassung ist korrekt aber ich denke eine Lösung ohne Hashwerte an.

aus
Peter Müller, KundenID = 4711, Kontonummer = 4812 bei der Postbank
wird
Hansi Meier, KundenID = 1234, Kontonummer = 9876 bei der Targo-Bank


Ich werde dafür ein Dictionary benutzen.

Beim ersten mal wird für den ersten Kundendatensatz:
"Kunde: Peter Müller" = "Hansi Meier"
"KundenId: 4711" = "9876"
"Bank: Postbank" = "Targo-Bank"
angelegt.

Die Zielwerte werden pro neuem Eintrag für jedes Feld aus einem zufälligen Record aus dem realen Datenbestand geholt (und auf Wunsch verstümmelt) oder auf Wunsch neu generiert.

Wenn künftig "Kunde: Peter Müller" verwendet wird, wird der immer in "Hansi Meier" übersetzt.
Wenn eine Rechnung an "KundenId: 4711" geht, wird die ID in 9876 geändert.

Dazu muss das Tool sozusagen global für alle csv erfahren, welche Zuordnungen die einzelnen Felder tatsächlich haben und wie diese anzupassen sind.


Vielleicht muss ich noch etwas präzisieren: Ich möchte einen Stapel von z.B. 100*6 csv-Dateien auf einen Rutsch verändern, so dass 600 neue csv-Dateien entstehen, die in sich weiterhin konsistent sind aber möglichst wenig Rückschlüsse auf die Originaldateien zulassen.
Es geht also nicht um einen Import in das Hauptprojekt sondern um eine Anonymisierung vorliegender externer Importdaten zu Testzwecken.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 16:46
Also ich versuchs nochmal:

Du möchtest reproduzierbar aus den Daten A die Daten B bekommen.

Dies soll für Dich nachvollziehbar sein.
Anhand der "Übersetzung" von A nach B ist auch der umgekehrte Weg (theoretisch) möglich.

Die Nutzer der Testdaten haben jedoch keinen Zugriff darauf und können daher keine Rückschlüsse ziehen.

Wenn dies für Dich ausreichend "sicher" ist, so scheint für mich der von Dir gewählte Weg ausreichend.

Über Nachschlagtabellen kann für jedes A jederzeit nachgesehen werden, wie das zugehörige B auszusehen hat.

Die Datenmenge sollte für die von Dir anvisierte Vorgehensweise irrelvant sein. Sie funktioniert für 1 bis n Datensätze in einer beliebigen Menge von Dateien.

Geändert von nahpets (29. Aug 2016 um 16:49 Uhr) Grund: Bisserl was ergänzt.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 17:04
Genau so ist es zutreffend.
Rückwandlung von B nach A ist nicht notwendig.

Für mich werde ich ein entsprechendes Tool bauen.

Die Frage ist, ob es generell Nachfrage dafür geben kann, wenn man das etwas allgemeiner hält.
Ggf. könnte man so ein Tool auch auf eine rel. Datenbank anwenden, wobei das dann sicherlich etwas komplexer wird - zumindest wenn mach die Schlüssel und Fremdschlüssel ändern will.

Braucht man keine Schlüsseländerung (was sicherlich meist der Fall ist), wäre dann ein Tool dafür sinnvoll und flexibel genug?
Man könnte natürlich einzelne Tabellen auch als csv exportieren, umwandeln und die neuen csv wieder in eine neue Datenbank importieren.

Also die Frage: Wäre so ein allgemeines, flexibles Tool wohl interessant?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 17:31
Testdaten werden immer und überall gebraucht und ich weiß nicht wieviele Leute ich schon kennengelernt habe, die vor genau Deinem Problem standen:

Wie bekomme ich reproduzierbare Testdaten hin?

Oder zu Deiner Frage konkret:
Zitat von stahli:
Also die Frage: Wäre so ein allgemeines, flexibles Tool wohl interessant?
Meiner Meinung nach eindeutig: Ja

Die Fragen dazu sind nur:
  • Gibt jemand dafür Geld aus?
  • Und wenn ja, wieviel?

Für Deine Aufgabenstellung wäre eigentlich (wenn man's datenbankgestützt sieht), eine dreispaltige Tabelle erforderlich.

Spaltenname|Originalwert|Testwert
Name|Peter Maier|Hansi Müller
KundenID|4711|1234
Bank|Postbank|Targo-Bank

@BUG

Reproduzierbar deshalb, weil stahli immer wieder Datenergänzungen per CSV-Dateien bekommt, die er sowohl den Originaldaten als auch den Testdaten zuordnen muss. Und zwar nicht irgendwie, sondern konsistent.

Es muss also immer aus Peter Meier Hansi Müller werden, es muss immer aus der KundenID 4711 die KundenID 1234 werden.

Und wenn stahli diese Informationen in einer Tabelle ablegt, dann ist die erstmalig per Zufall erstellte Zuordnung anschließend über eben diese Tabelle reproduzierbar.

Und wenn er die Testdaten vollständig löscht und anschließend neu erstellt, dann müssen sie mit den ursprünglichen Testdaten zu 100% übereinstimmen.
Und damit müssen sie reproduzierbar ein.

Oder sollte ich die Aufgabenstellung immer noch nicht verstanden haben?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Realdaten konsistent verwürfeln?

  Alt 29. Aug 2016, 17:12
Du möchtest reproduzierbar aus den Daten A die Daten B bekommen.
Wozu reproduzierbar, er speichert das Ergebnis eh in einer Tabelle.

Blöd wird es mit Daten, die vielleicht allein schon identifizierend sind: IBANs, Telefonnummern, ...
Gerade Telefonnummern will man aber auch nicht unbedingt genieren, da hier die Struktur bei realen (eingegebenen) Daten doch ziemlich variieren kann.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz