Einige Dinge zum Schneiden von über 9000 W Daten

CSDN Topic Challenge Phase 2
Teilnehmendes Thema: Big Data Technology Sharing

Bildbeschreibung hier einfügen

1. Warum möchten Sie das tun?

Basierend auf dem vorherigen System des Unternehmens wurde das Drei-Parteien-Bestell- und Mitgliedschaftssystem verwendet. Nachdem das technische Personal des Unternehmens es ergänzt hatte, wollten sie mehr Operationen für Mitglieder durchführen und beschlossen, das Mitgliedschaftssystem durch ein selbst entwickeltes System zu ersetzen. Daher müssen Sie mitgliedsbezogene Daten in die Datenbank Ihres Unternehmens migrieren.

Im Folgenden wird „Dreiparteiensystem“ verwendet, um sich auf die Software und Systeme der drei Parteien zu beziehen.

Meine Verantwortung ist sehr einfach, nämlich die Daten im Zusammenhang mit dem Mitgliedschaftsmodul im dreigliedrigen System in unsere Datenbank zu migrieren, ohne die Geschäftslogik einzubeziehen.

2. Umwelt

Datenbank des Dreiparteiensystems: pgsql;
unser Datenbanksystem: mongo;
unsere Skriptumgebung: node+Angular

3. Ideen

Aufgrund der großen Datenmenge sollte kein Drittsystem für die Datenmigration angehalten werden, d.h. bei der Datenmigration kann es zu neuen Informationen kommen und da das Drittsystem viele weitere Systemänderungen mit sich bringt besteht weiterhin die Möglichkeit des Cutovers.

Daher sind zwei Migrationsmethoden erforderlich:

  • Migrationsmethode 1: Erstmigration. Diese Migrationslösung wird hauptsächlich für die erste Datenmigration verwendet, und die Datenmenge wird relativ groß sein;
  • Migration bedeutet zweierlei: kontinuierliche Migration. Nach der Migration auf Basis des Periodenbeginns wird die Datenmigration vom Vortag auf die Gegenwart (innerhalb eines bestimmten Zeitraums) regelmäßig jeden Tag durchgeführt;

Aufgrund der großen Datenmenge und der vielen beteiligten pgsql-Tabellen wird die Datenmigration nach funktionalen Modulen durchgeführt, wie z.

Da es in pgsql einen Auto-Increment-Primärschlüssel gibt, ist die Migrationsmethode 1 die Hauptmigrationslogik, das Skript löst die Moduldatenmigration aus.

  • Gemäß dem Autoinkrement-Primärschlüssel wird eine Migration des Daten-Paging-Zyklus durchgeführt;
  • Rufen Sie zuerst die ausgelagerten pgsql-Daten ab und beurteilen Sie dann, ob sie gleich der Anzahl der ausgelagerten Daten sind. Wenn sie gleich sind, fahren Sie mit dem Durchlaufen der Markierung fort. Wenn sie nicht gleich ist, geben Sie die Markierung "Nicht im Zyklus" zurück.
  • Konvertieren Sie pgsql-Daten in das von Mongo benötigte Datenformat;
  • Mongo-Daten stapelweise über bulkWrite schreiben;
  • Zyklus geht weiter;

Migrationsmethode 2, kontinuierliche Migration, die Hauptmigrationslogik ist, dass das Skript die Moduldatenmigration auslöst

  • Entsprechend der Zeit wird eine Migration des Daten-Paging-Zyklus durchgeführt;
  • Rufen Sie zuerst die ausgelagerten pgsql-Daten ab und beurteilen Sie dann, ob sie gleich der Anzahl der ausgelagerten Daten sind. Wenn sie gleich sind, fahren Sie mit dem Durchlaufen der Markierung fort. Wenn sie nicht gleich ist, geben Sie die Markierung "Nicht im Zyklus" zurück.
  • Konvertieren Sie pgsql-Daten in das von Mongo benötigte Datenformat;
  • Mongo-Daten vergleichen, um zu bestimmen, ob sie hinzugefügt oder geändert werden sollen;
  • Schreiben/Ändern von Mongo-Daten in Stapeln durch BulkWrite;
  • Zyklus geht weiter;

4. Vorbereitungen

Da es sich um ein Dreiparteienprojekt handelt und die andere Partei kein Datenbankdokument hat, schauen wir uns Schritt für Schritt an, welche Vorbereitungen ich getroffen habe!

  • Kommunizieren Sie mit den drei Parteien und besorgen Sie sich zunächst die relevanten Datenbankdokumente der relevanten Module;
  • Verstehen Sie die in der Fremddatenbank gespeicherten Daten und vergleichen Sie sie mit Ihrem eigenen System gemäß dem Visualisierungstool (PC), um zu sehen, ob es fehlende Datenbankdokumente gibt, die nicht empfangen wurden;
  • Die für die interne Kommunikation und Migration der Konsensdatenbank erforderlichen Datenbankfelder von Drittanbietern und die entsprechenden Datenbankfelder unseres Unternehmens und aufgezeichnet;
  • Überprüfen Sie die Daten der Dreiparteien-Datenbank und machen Sie Aufzeichnungen, wie z nicht unterschätzen, mehrfach hintergangen), spezielles Feldformat zB: Handynummer, Personalausweis, Geburtstag, etc. Gleichzeitig ist es besonders wichtig, die auffälligen Daten zu zählen und die entsprechenden Daten zu exportieren Backup entsprechend der Bedeutung der Anomalie;
  • Koordinieren Sie den Produktmanager unseres Unternehmens und das Systempersonal von Drittanbietern, um anormale Informationen zu beantworten und aufzuzeichnen, die besonders wichtig sind und in späteren Kämpfen verwendet werden können;
  • Bitte beziehen Sie sich auf die folgenden spezifischen Gründe für die Bestimmung der Datenbank, die jedem Modul entspricht, und der Umstellungssequenz jedes Moduls;
  • Kodierung gemäß der Planungslogik beginnen Ja, die Zeit für die Kodierung ist nicht lang;
  • Führen Sie nach Abschluss des Migrationscodes eine Datentestmigration durch und überprüfen Sie die Daten.

Wenn die oben genannten Arbeiten durchgeführt werden, gibt es ein sehr wichtiges Problem, das heißt, sie müssen aufgezeichnet, schriftlich festgehalten und zeitnah mit den relevanten internen Mitgliedern geteilt werden.
Denn wir müssen mental vorbereitet sein, ein dreigliedriges System ohne Datenbankdokumente, es muss eine gewisse Verwirrung in den Daten geben, wenn es nicht gut erfasst wird, wird es viele Probleme nach der Migration geben. Haben Sie keine unrealistischen Fantasien, „Wie kann ein so ausgereiftes System Datenverwirrung haben?“
Als Programmierer habe ich einmal ein Gesetz mit dem Team geteilt, „Murphys Gesetz“, die schlimmen Dinge, an die Sie denken können, es wird kommen , früher oder später. Was ich dem Team damals erklärte, war, dass es möglicherweise Codefehler gibt, die Sie sich vorstellen können.Wenn Sie sie nicht beheben, werden einige Benutzer diesen Fehler früher oder später auslösen. Das hat sich natürlich auch in den darauffolgenden Tagen in unserem Team unzählige Male bestätigt.

5. Verifizieren

Nach Abschluss der Datenmigration muss die Datenüberprüfung erfolgen. Da das Datenvolumen des beteiligten Drei-Parteien-Systems fast 9000 W beträgt, ist eine Datenüberprüfung dringend erforderlich. Daher entwerfen wir ein Datenvalidierungsschema für zwei Systeme.
Die wichtigsten Verifizierungsdaten sind wie folgt:

  • Ob die Anzahl der Datenelemente gleich ist, wie z. B.: die Anzahl der Mitglieder, die Anzahl der WeChat-Follower, die Anzahl der gebundenen Mitglieder und Fans

  • Nehmen Sie zufällig den pgsql-Datenwert der Datenbank des Drittanbieters und vergleichen Sie ihn mit den entsprechenden Daten in der Mongo-Datenbank unseres Unternehmens und prüfen Sie, ob er korrekt ist.

  • Überprüfen Sie, ob die Summe der Felder korrekt ist, wie z. B. die Summe der Mitgliedspunkte und die Gesamtzahl der Mitgliedskarten;

6. Fragen

Basierend auf dieser Datenmigration bin ich auf einige Fallstricke getreten und habe viel Erfahrung gelernt. Ich hoffe, die folgende Erfahrung kann Freunden helfen, die sich darauf vorbereiten, Daten zu kürzen.

  • Der Primärschlüssel der Drittanbieterdatenbank ist ein automatisch inkrementierender Primärschlüssel, aber nicht alle Feldänderungen lösen das last_update_time-Feld einiger Datenbanken aus.

Lösung: Paging-Abfragemigration durch automatisches Inkrementieren des Primärschlüssels


  • Es gibt eine Master-Slave-Bibliothek in der Dreiparteien-Datenbank, und die von der Slave-Bibliothek festgelegte Verbindungszeit beträgt 30 s. Nach einer großen Anzahl von Seiten wird die Abfragegeschwindigkeit langsamer, was zu einer Zeitüberschreitung der Verbindungsdatenbank führt

Lösung: Hauptbibliothek einbinden, auf die Bedienung achten, nur abfragen, nicht modifizieren


  • Einige Tabellen in der Datenbank von Drittanbietern haben keine Indizes, sind jedoch nicht für Ansichten geeignet, da die Datenmenge zu groß ist und Ansichten Ressourcen verschwenden

Lösung: Verwenden Sie die Auto-Increment-Primärschlüssel-Paginierungsabfrage, und erhalten Sie den maximalen Primärschlüssel für jede Paginierung, und fragen Sie die Teilmengendaten nach diesem Primärschlüssel ab


  • Wenn die aggregierte Aggregatoperation von Mongoose abgefragt wird, überschreitet der Arbeitsspeicher 32 MB, wodurch die Abfrage fehlschlägt

Lösung: Aggregation kooperiert mit allowDiskUse: true operation um Daten in temporäre Dateien zu schreiben


  • Eine große Datenmenge mit abnormalen Daten, einschließlich, aber nicht beschränkt auf: nicht standardmäßiger Wert, Datenbindungsfehler, zu viele Operationen, die eine bestimmte Person kennt (eine bestimmte Operation bewirkt, dass der Wert von der normalen Spezifikation abweicht, und das ist er nicht kommentiert);

Lösung: Erfassen und exportieren Sie relevante Daten rechtzeitig, koordinieren Sie das zuständige Personal, um Datenbeurteilungen vorzunehmen (beibehalten/verwerfen), Datenbereinigung


  • In der Datenbank des Dreiparteiensystems befinden sich Testdaten in der formalen Umgebung, und die Testdaten werden nicht durch den formalen Prozess generiert, und es gibt Fehler auf kognitiver Ebene im Systembetrieb, z. B. sind die angesammelten Mitgliedschaftspunkte negativ. der Aufladebetrag der Mitgliedskarte negativ ist usw. …

Lösung: 1. Erfassen und exportieren Sie die relevanten Daten, notieren Sie sich das Problem. 2. Kontaktieren Sie das zuständige Personal, ob die Daten gelöscht werden sollen, und kommunizieren Sie mit der vorherigen Partei über die Nivellierungserfahrung, ob Sie diese Art von Daten behalten möchten die andere Partei


  • Es gibt dieselben Felder in den Tabellen der Dreiparteien-Datenbank, aber die Bedeutungen sind unterschiedlich. Hier drückt ein bestimmtes Feld in vielen Tabellen dieselbe Bedeutung aus, aber plötzlich stellt es in einer anderen Tabelle eine andere Bedeutung dar. Es hängt damit zusammen, dass Das Dreiparteiensystem selbst hat kein Datenbankbeschreibungsdokument, was dazu führt, dass die Feldbeschriftungen der Dokumente, die zu Beginn des Zeitraums angegeben wurden, gleich sind, was zu einem Datenkonflikt bei der Überprüfung der Daten in der Drittdatenbank führt

Lösung: Senden Sie Ihre eigene Abfrageanweisung an die Gruppe und fragen Sie die Drittentwickler, ob es ein Problem mit der Abfrageanweisung gibt.


  • Dieselbe IP fordert häufig eine große Anzahl von Datenbanken von Drittanbietern an, was dazu führt, dass die Datenbank die IP als böswilligen Angriff missversteht

Lösung: Erhöhen Sie beim Auslösen des Schleifenmechanismus die Verzögerungseinstellung, z. B. um 200 Millisekunden zu verzögern, um die nächste Schleife auszulösen

7. Vorsichtsmaßnahmen

Erstens: Im neuen System ist die eindeutige Identifizierung der Daten im redundanten Dreiersystem bequem für die spätere Datenabfrage. Um in der späteren Wartungsphase dieser Operation viel Ärger zu machen, denken manche Leute immer, dass ihre Daten durch die Migration von Daten beschädigt werden.Zu diesem Zeitpunkt ist es sehr bequem, die Unterschiede zwischen dem alten und dem neuen System abzufragen.

Zweitens: Einige Felder mit besonderer Bedeutung müssen sorgfältig geprüft werden, bevor eine Auswahl getroffen wird. Einige der Mitglieder sind beispielsweise mit der Unternehmens-WeChat-ID verknüpft, können aber im neuen System nicht verwendet werden und behalten sie nach einem Spiel immer noch. Da es sich um eine eindeutige Kennung für andere Systeme handelt, darf es nirgendwo verwendet werden.

Drittens: Notieren Sie anormale Daten, eine anormale Problembeschreibung, Menge, ursprünglichen Dateninhalt und Lösung. Bewahren Sie es gut auf.Diese Aufzeichnung hat mich in den sechs Monaten nach der Datenmigration viele Male gerettet. Eine der denkwürdigsten Zeiten ist, dass der Buchhalter eine Statistik über das Guthaben der Mitgliedskarte erstellte und feststellte, dass es mehrere tausend Dollar mehr gab.Nach einer schrittweisen Untersuchung stellte sich heraus, dass das Geld nach der Migration extra war, und dieses Geld zufällig die Testdaten, die damals im Dreiparteiensystem vorhanden waren.Es gibt zwei Testmitgliedskartendaten, und der Betrag ist negativ.

Viertens: Führen Sie nach der Migration der Daten gute Datenstatistiken durch, jede Tabelle, wie viele Originaldaten, wie viele migriert wurden und wie viele insgesamt. Wird für nachfolgende Überprüfungsberichte verwendet.

8. Zusammenfassung

Tatsächlich stellte die gesamte Codeentwicklungszeit für diese Datenmigration etwa 30 % der Gesamtzeit dar. Der Hauptanteil der Zeit bestand darin, die Datenbankdaten von Drittanbietern zu überprüfen und Lösungen für den Umgang mit diesen schmutzigen Daten zu finden.
Weil wir ein sehr ernstes Hindernis haben und die Entwickler des Drittsystems nicht sicher sind, wie viele Gruben es in der Datenbank gibt, also können wir sie nur einzeln betreten.
Daher werde ich in der Phase der Überprüfung der Daten von drei Parteien oft wütend und brauche etwas mehr Zeit, um meine aufgewühlte Stimmung zu beruhigen!
Die Datenmenge ist zu groß und es sind viele Tabellen beteiligt. Daher ist es sehr wichtig, einen umfassenden Migrationsplan zu formulieren. Migrieren Sie zuerst jedes Modul und zeichnen Sie jedes Modul einzeln nach der Ausführung eines Moduls auf, damit der Gesamtbetrieb funktioniert handlicher sein, um nicht alles zu verlieren.

Die Datenmenge ist zu groß und stellt viel Business dar. Daher sind ein perfekter Plan, klare Zeitknoten und eine kontinuierliche Synchronisation der Fortschritte die Eckpfeiler, damit das Team voller Zuversicht ist.

Nachricht

Mutige Annahmen, sorgfältige Überprüfung

Acho que você gosta

Origin blog.csdn.net/Long861774/article/details/127088674
Recomendado
Clasificación