PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Reg.-Nr. Transaktionsunterstützung für einen Spring-Batch-Job auf Job-Ebene

Ich bin mir nicht sicher, ob es überhaupt eine Lösung mit automatischer Abwicklung von verketteten/mehrstufigen Transaktionen gibt, die zuverlässig funktioniert (oder nicht viele Ressourcen auf Datenbankseite benötigt)

Nun, Sie könnten beide Schritte zu einem kombinieren:

  • aus erster Tabelle A lesen
  • Prozessor verwenden, um Tabelle A zu aktualisieren
  • Prozessor verwenden, um aus Tabelle B zu lesen
  • Writer verwenden, um Tabelle B zu aktualisieren

Die Leistung wird stark darunter leiden, da der Lesevorgang für Tabelle B ein einzelner Lesevorgang im Vergleich zum Cursor für Tabelle A ist

Ich würde mit einer kompensierenden Strategie wie dieser gehen

  • Verwendete (optionale) Tabellen sind temporäre Tabellen und nicht die echten "Produktions"-Tabellen, was es einfacher macht, mit dem Kompensieren zu arbeiten, indem die Datenspeicher von der Produktion entkoppelt werden
  • ein fehlgeschlagener Schritt 1 löst einen weiteren Schritt aus oder ein anderer Job/Skript
  • dieser Schritt/Job/dieses Skript löscht nach Bedarf (Zeilen oder komplette Tabelle)