Hi,
ich habe eine Web-Anwendung, in der im Hintergrund eine DB läuft. Um die Performance zu erhöhen wurde ein
Cache, mittels HashMaps, für Java Objekte implementiert.
Die Java-Objekte sind Repräsentanten von Zeilen der Datenbank (bspw. liegen in der Datenbank Kataloge o.ä., die dann durch
jeweils ein Objekt in der "Javawelt" abgebildet werden).
Das Problem ist nun, dass auf den Cache mehrere Threads gleichzeitig zugreifen können (typischen und altbekanntes Cache-Problem)
und somit Inkonsistenzen zwischen DB und Cache entstehen können.
Die Frage ist nun, wie bekomme ich die Java-Seite threadsicher/synchronisiert. Auf der DB-Seite besteht ja (durch ACID) bereits eine
Synchronisation von Transaktionen.
Reicht es aus, einfache mittels "synchronized" die Threads zu synchronisieren? Oder muss noch mehr beachtet werden?
Danke!
ich habe eine Web-Anwendung, in der im Hintergrund eine DB läuft. Um die Performance zu erhöhen wurde ein
Cache, mittels HashMaps, für Java Objekte implementiert.
Die Java-Objekte sind Repräsentanten von Zeilen der Datenbank (bspw. liegen in der Datenbank Kataloge o.ä., die dann durch
jeweils ein Objekt in der "Javawelt" abgebildet werden).
Das Problem ist nun, dass auf den Cache mehrere Threads gleichzeitig zugreifen können (typischen und altbekanntes Cache-Problem)
und somit Inkonsistenzen zwischen DB und Cache entstehen können.
Die Frage ist nun, wie bekomme ich die Java-Seite threadsicher/synchronisiert. Auf der DB-Seite besteht ja (durch ACID) bereits eine
Synchronisation von Transaktionen.
Reicht es aus, einfache mittels "synchronized" die Threads zu synchronisieren? Oder muss noch mehr beachtet werden?
Danke!