Hallo zusammen,
ich hätte mal eine grundsätzliche Frage, die mich schon seit langem verfolgt... und zwar, wie ich einen möglichst vernünftigen Datenzugriff bekomme. Dabei ist mir klar, dass es keine Schwarz/Weiss-Aussagen geben kann, da die optimale Lösung vom Anwendungsfall abhängt. Aber mir fehlt schlichtweg die Erfahrung, das beurteilen zu können.
Angenommen, eine Anwendung nutzt eine (MySQL-)Datenbank via Hibernate, die Kundenadressen enthält. Gehen wir einfach mal von 1000 Datensätzen aus, die in einer grafischen Oberfläche (RCP-Anwendung) bearbeitet werden können sollen.
Macht es Sinn, die 1000 Datensätze einmal aus der Datenbank auszulesen, im Speicher zu behalten oder damit zu arbeiten? Sprich in einer Liste von Adress-Objekten im Model?
Oder würde eine getList()-Methode besser direkt auf die Datenbank zugreifen?
In dem Zusammenhang: Was bietet sich eher an? Die Daten per SQL zu filtern oder erst nachdem alle geladen wurden?
Und wie läuft das beim Anlegen/Bearbeiten/Löschen sinnvollerweise ab? Wenn alle Datensätze geladen sind, diese verwerfen, die Änderungen an der DB durchführen und alle neu laden? Oder versuchen, die gecachten Daten und die Datenbank parallel zu bearbeiten (kann Inkonsistenzen hervorrufen) - oder alle Änderungen "live" an der Datenbank durchzuführen?
Wie gesagt, mir ist klar dass es nicht _die_ perfekte Lösung gibt, aber wie lautet da Eure Erfahrung, könnt Ihr mir da Tips geben? Betrachtet werden sollte natürlich die Performance, die Aufwändigkeit des Implementierens und die Praxistauglichkeit. Alles halt in einem möglichst sinnvollen Verhältnis. Z.B. in der Art: "Das Laden der Daten geht so schnell, dass ein Caching gar kein Sinn ergeben würde". Oder: "bei wenigen Datensätzen bringt Caching nichts, bei mehreren 10.000 schon".
Vielleicht habt Ihr auch einen dazu passenden Link? Ich habe leider nichts vernünftiges dazu finden können...
ich hätte mal eine grundsätzliche Frage, die mich schon seit langem verfolgt... und zwar, wie ich einen möglichst vernünftigen Datenzugriff bekomme. Dabei ist mir klar, dass es keine Schwarz/Weiss-Aussagen geben kann, da die optimale Lösung vom Anwendungsfall abhängt. Aber mir fehlt schlichtweg die Erfahrung, das beurteilen zu können.
Angenommen, eine Anwendung nutzt eine (MySQL-)Datenbank via Hibernate, die Kundenadressen enthält. Gehen wir einfach mal von 1000 Datensätzen aus, die in einer grafischen Oberfläche (RCP-Anwendung) bearbeitet werden können sollen.
Macht es Sinn, die 1000 Datensätze einmal aus der Datenbank auszulesen, im Speicher zu behalten oder damit zu arbeiten? Sprich in einer Liste von Adress-Objekten im Model?
Oder würde eine getList()-Methode besser direkt auf die Datenbank zugreifen?
In dem Zusammenhang: Was bietet sich eher an? Die Daten per SQL zu filtern oder erst nachdem alle geladen wurden?
Und wie läuft das beim Anlegen/Bearbeiten/Löschen sinnvollerweise ab? Wenn alle Datensätze geladen sind, diese verwerfen, die Änderungen an der DB durchführen und alle neu laden? Oder versuchen, die gecachten Daten und die Datenbank parallel zu bearbeiten (kann Inkonsistenzen hervorrufen) - oder alle Änderungen "live" an der Datenbank durchzuführen?
Wie gesagt, mir ist klar dass es nicht _die_ perfekte Lösung gibt, aber wie lautet da Eure Erfahrung, könnt Ihr mir da Tips geben? Betrachtet werden sollte natürlich die Performance, die Aufwändigkeit des Implementierens und die Praxistauglichkeit. Alles halt in einem möglichst sinnvollen Verhältnis. Z.B. in der Art: "Das Laden der Daten geht so schnell, dass ein Caching gar kein Sinn ergeben würde". Oder: "bei wenigen Datensätzen bringt Caching nichts, bei mehreren 10.000 schon".
Vielleicht habt Ihr auch einen dazu passenden Link? Ich habe leider nichts vernünftiges dazu finden können...