2017-07-03 1 views
0

Ich arbeite gerade in einem Startup, das irgendwie ihre Infrastruktur und Datenbank vernachlässigte. Unsere Benutzerdatenbank ist ein Chaos (Thx zu WordPress) und ich arbeite derzeit daran, es zu einem PostgreSQL zu migrieren. Das Problem ist, dass die Daten inkonsistent sind. Zum Beispiel haben manche Benutzer keine Postanschrift, Postanschrift Format ändern sich im Laufe der Zeit, andere haben ihre E-Mail anstelle ihrer Telefonnummer für ihren Benutzernamen ...Wie man eine nicht normalisierte und inkonsistente Benutzerdatenbank korrekt migriert

Wir haben eine Lösung gefunden, zum Beispiel für das Postanschriftformat Wir geokodieren mit Google Maps API. Es ist jedoch klar, dass wir keine konsistente Datenbank mit den aktuellen Daten haben können.

Die Frage ist also: Verwenden wir eine andere Tabelle für die inkonsistenten Benutzer und verschieben sie in die "neue" Tabelle, wenn sie aktualisiert werden ihr Konto nach der ersten Verbindung oder eine einzelne Tabelle für alle Benutzer verwendet und einige Zugeständnisse machen ...

Antwort

2

Es gibt zwei Dinge, die Sie berücksichtigen müssen:

  1. Welche Art von Anwendung (en) -> Software -> Systeme werden Ihre Daten verwendet? Wenn Ihre Anwendung (en) eine Normalisierung Ihrer Daten erfordert (dh Ihre Anwendungen "fordern" strukturierte Daten mit Primär-/Fremdschlüsselbeziehungen), müssen Sie Ihre Daten mithilfe einer relationalen Datenbank darstellen.

  2. Wenn Ihre Daten nicht "so strukturiert" sein müssen, können Sie möglicherweise eine noSQL-Datenbank (wie https://redis.io/) verwenden, die Daten mit Schlüsseln speichert -> Werte (Verknüpfung eines Schlüssels mit einem Dokument/einer Datenstruktur) .

Wenn Sie eine relationale Datenbank oder NoSQL-Datenbank verwenden müssen:

Ich würde Ihre Daten sauber und haben konsistente Kontaktinformationen angegeben.

Ich würde Benutzer ihre Kontaktinformationen aktualisieren (das nächste Mal, wenn sie sich anmelden), und speichern Sie diese "saubere Kontaktdaten in einer anderen Tabelle" mit einem booleschen Feld (die Benutzerkontaktdaten konsistent sein kann wahr/falsch).

Tun Sie nicht "Konzessionen", sonst werden Sie mit inkonsistenten Daten "für immer" enden, und (Geschäftslogik) Hacks in Ihrem Code (was die Leute vergessen werden) - die nie erlauben Sie Ihre Daten aufzuräumen.

Verwandte Themen