laufen da mehrere solche Prozesse gleichzeitig?
Jein, es wird nen Messagebus geben, der Aufgaben an Daemons verteilt. Wenn 5 Importe gleichzeitig angestoßen werden, laufen die 5 Imports gleichzeitig (je nachdem viele Worker gestartet sind). Ich denke mal das es maximal 3-4 Importaufträge sein werden.
über was für Datenmengen reden wir?
30-60k pro Lieferung. Insgesamt werde ich wohl vermutlich von einem Volumen über 50 Mio Datensätze ausgehen müssen, aber eher weniger.
warum 'lohnt' sich Zwischentabelle nicht?
Weil ich die Daten bereits in einer Tabelle (Ram) vorliegen habe und der Prozess ein Hintergrundprozess ist. Da kann auch der Hintergrundprozess etwas dauern. Und ein normaler MultiRow Insert mit 30-60k dauert nur einige Sekunden. Ich sehe also aktuell keinen Grund, was für einen Vorteil mir das verschaffen soll. Die Logik zum verarbeiten bleibt ja die gleiche.
Insert mit mehreren Values: Du meinst sicherlich ein Multi-row - Insert, oder? Aber ist denn vorher bekannt, ob alle Rows neu sind?
Korrekt MultiRow Insert war gemeint. Nein, daher dachte ich ja an einen Before-Trigger der dann entscheidet ob Insert oder Update (siehe Ursprungspost). Aber eine Funktion aufzurufen ala merge_db würde auch gehen. Dachte nur das ein Multirow Insert einfacher für den SQL Parser ist, als viele Einzelstatments. Außerdem hatte sich das in der Vergangenheit diese MultiRow Insert (Merhere Millionen Rows pro Insert in wenigen Minuten) sehr bewährt.
Parse error im Satz "Bei der Lösung merge_db ist es überhaupt machbar abhängig von einem Datum das Update zu machen."
Bei der Lösung "merge_db" -> Ist es überhaupt möglich hier ein Datum zu beachtet, das dafür sorgt das nur neuere Datensätze als Update zugelassen werden. Würde ich die Where-Bedingung blind erweiterung um die Datumsprüfung, würde ich nen Endless Loop bauen, weil weder das Update noch das Insert greifen würden. Einzige Möglichkeit ist ein extra Select und das würde 3 Aktionen bei einem Insert bedeuten.
Als Backgroundinfo:
Verschiedene Systeme liefern Daten an. Über einen Schlüssel können Daten geändert oder beim ersten mal angelegt werden. Allerdings dürfen die Daten nur mit neueren Daten überschrieben werden. Sprich jde Zeile hat ein Erstelldatum.
Gegenfrage: hast Du es mal probiert?
Ja und keine Störung fest gestellt. Allerdings ist das schwer praxisnah zu testet und kann mir nicht sicher sein, dass er intern vielleicht doch gewartet. Daher die Frage. Mann muss das Rad ja nicht neu erfinden, dafür ist das Forum hoffentlich da
