Lazy-Loading

Anfang  Zurück  Vor

Letzte Änderung 19.08.2013

 

Bei sehr großen Datenbeständen besteht die Gefahr, dass selbst bei gefilterten Datenbankabfragen das Abfrageergebnis zu groß sein kann und damit zu viele Daten an den Client übertragen werden, wodurch es im schlimmsten Fall auf dem Client zu einem Speicherüberlauf kommen kann.

 

Mit Lazy-Loading werden immer nur so viele Datensätze geladen wie die Ziel-Komponente auf der Oberfläche anzeigen kann. Die restlichen Daten werden erst bei Bedarf on-Demand nachgeladen. Die Vorteile bei dieser Methode sind:

bestmögliche Performance, da immer nur sehr wenige Daten übertragen werden

Speicherüberlauf ist ausgeschlossen

 

 

 

Lazy-Loading intern

 

Das Nachladen der Daten wird immer von der GUI-Komponente gesteuert, die Lazy Loading verwendet. Dabei werden 2 verschiedene Varianten unterstützt:

Scrollbar - Die Daten werden durch das Bewegen einer Scrollbar Datensatz für Datensatz nachgeladen.

Paging mit XdevDBPageNavigationBar - Die Daten werden Seitenweise nachgeladen (Paging).

 

 

 

Lazy-Loading intern

 

In XDEV 5 wird Lazy-Loading mit Hilfe des Scrollable Resultset Pattern realisiert. Dabei handelt es sich um eine Funktion, die von den meisten Datenbanken, bzw. deren JDBC-Treibern standardmäßig unterstützt wird. Bei der Nutzung des Scrollable Resultset wird das Abfrageergebnis von der Datenbank intern zwischengespeichert. Über die API lässt sich dann die Cursor-Position setzen und die Anzahl der Zeilen übergeben, die nachgeladen werden sollen.

 

Wie viele Datensätze sofort an den Client gesendet werden, hängt davon ab, wie viel Platz die für die Datenausgabe verwendete GUI-Komponente bietet, z.B. eine XdevTable mit 50 Zeilen. Das Nachladen der restlichen Daten wird standardmäßig durch die Abwärtsbewegung einer Scrollbar gesteurt. Dabei lässt sich bei langsamer Bewegung Datensatz für Datensatz nachladen. Bei größeren Bewegungen werden entsprechend mehr Datensätze auf einmal nachgeladen. Die Daten, die beim Scrollen aus dem Sichtfeld der GUI-Komponenten verschwinden, werden automatisch aus dem Hauptspeicher gelöscht, um einen Speicherüberlauf auszuschließen.

 

Während des gesamten Scrollvorgangs bleibt die jeweilige Datenbank-Connection geöffnet, sodass ein schnelles Nachladen der angeforderten Datensätze gewährleistet ist. Ändern sich in dieser Zeit Daten in der Datenbank, wird das Scrollable Resultset nur dann automatisch aktualisiert, wenn der verwendete JDBC-Treiber dies unterstützt (Dynamic Scrollable Resultset). Sobald die Connection geschlossen wird, verwirft die Datenbank das Scrollable Resultset.

 

 

 

GUI-Komponenten mit Lazy-Loading

 

XdevTable

XdevFormular

XdevVirtualFormular