Ich schreibe eine Stapelverarbeitung mit Spring Batch. Ich muss ca. 2 000 000 Datensätze von der Datenquelle (Oracle-Datenbank) zum Ziel (Kafka-Broker) verschieben. Ich zögere, welche ItemReader sollte ich für diesen Job wählen:Spring Batch JdbcCursorItemReader oder RepositoryItemReader?
JdbcCursorItemReader: Wenn ich das richtig verstanden, wird es den Cursor öffnen, die durch die ResultSet aller dieser Datensätze iteriert werden, eins nach dem anderen Leistung ist kein Problem; unter der Hauben-Datenbank hält eine Momentaufnahme von Datensätzen, die erfüllen, wobei Klausel zum Zeitpunkt der Abfrageausführung;
RepositoryItemReader: vielleicht weniger performant sein, Partitionierung basierend auf Paging-Mechanismus für jede Seite wird die Abfrage ausgeführt werden, die Möglichkeit, einige Aufzeichnungen ommiting, der Datenbank geschrieben werden kann während von 2 000 000 Datensätze holen, die wouldn ‚t im ersteren Fall geschehen (ist meine Argumentation auch richtig?)
Zusammenfassung: als Folge ich alle diese 2 000 000 Datensätze senden möchten, wie sie in einem zum Zeitpunkt der Ausführung der Abfrage waren partitionierte Art und Weise. Überlege ich dieses Problem? Vielleicht ist das Überspringen neuer Datensätze kein Problem, wenn der Job später aktualisiert wird? Oder ist meine Argumentation bezüglich RepositoryItemReader nicht korrekt?